Excelで数式が設定されている場合、誰かが間違って数式を消しているかもしれません。
今回は数式が入っていないセルを見つけてくれるVBAのプログラムをご紹介します。
ではいってみましょう。
手順① プログラムを貼り付ける画面を表示
まずはこちらの記事の手順を実行して、プログラムを貼り付ける画面を表示します。

手順② プログラムのコピー
次にこのプログラムをコピーします。
Sub searchBlank()
' 最終行を取得する
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
' 最終列を取得する
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
' 行方向の繰り返し
For i = 1 To lastrow
' 列方向の繰り返し
For j = 1 To lastCol
' 数式が空白の場合
If Cells(i, j).Formula = "" Then
' メッセージを表示
MsgBox Cells(i, j).Address & "の数式が空白です。"
End If
Next
Next
End Sub
解説
‘ 最終行を取得する
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
‘ 最終列を取得する
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
まずはデータが入っているセルの最終行と最終列を取得しています。
Cells(Rows.Count, 1).End(xlUp).Row はExcelシートの一番下の行(Rows.Count = 1,048,576行目)からCtrl + 上キーを押した状態( End(xlUp) )の行番号( .Row )という意味です。
lastCol = Cells(1, Columns.Count).End(xlToLeft).ColumnはExcelシートの一番右の行(Columns.Count = XDF列目)からCtrl + 左キーを押した状態( End(xlToLeft) )の列番号( .Column )という意味です。
‘ 行方向の繰り返し
For i = 1 To lastrow
‘ 列方向の繰り返し
For j = 1 To lastCol
ここに処理を書く
Next
Next
これは行方向に1行から最終行、列方向に1列目から最終列までをループするという意味です。
これは実際の動作を確認しましょう。

i = 1 の時、j = 1 ~ 最終列
i = 2 の時、j = 1 ~ 最終列
という順番で実行されていることがわかります。
これは、次の順番でセルをひとつひとつ調べていくイメージです。

‘ 数式が空白の場合
If Cells(i, j).Formula = “” Then
‘ メッセージを表示
MsgBox Cells(i, j).Address & “の数式が空白です。”
End If
If Cells(i, j).Formula = “” Then ではセルの数式が空白かどうかを判定しています。
セルの値は Cells(i, j).Value で取得できますが、数式の場合は Formula で取得します。
MsgBox Cells(i, j).Address & “の数式が空白です。” では数式が空白のセル位置をメッセージで表示しています。
実行結果
セルG6の数式が空白になっていますので、メッセージでG6の数式が空白ですと知らせてくれます。

おわりに
いかがだったでしょうか。
今回は数式が空白の場所を知らせてくれるプログラムをご紹介しました。
VBAを使用せずに調べるのは少しめんどくさそうでしたので、このプログラムは役に立つかなと思い、ご紹介しました。
今後もこのようなお役に立ちそうなプログラムをご紹介していきますので、よろしくお願いいたします。
コメント