Excelで複数列に数値が入っていたら1、空欄なら0を表示する方法|IF関数・COUNT関数・VBA対応

Visual Basic

Excelで「複数の列のどこかに数値が入力されていたら1、すべて空欄なら0を表示したい」という処理は、集計表や管理シートでよく使われます。特に売上表や入力チェック表では、入力有無を自動判定できると作業効率が大きく向上します。この記事では、Excel関数とVBAの両方を使った方法を、初心者にもわかりやすく解説します。

今回実現したい内容

例えば、以下のような表があるとします。

名前 D列 E列 F列
Aさん 10000 1
Bさん 200000 1
Cさん 200000 15000 1
Dさん 0

条件は以下です。

  • D列・E列・F列のどこかに数値があれば「1」
  • 3列すべて空欄なら「0」
  • 複数列に数値があっても結果は「1」

最も簡単なExcel関数

もっともシンプルなのはCOUNT関数を使う方法です。

=IF(COUNT(D2:F2)>0,1,0)

この式を「計」の列へ入力し、下へコピーします。

COUNT関数は「数値が入力されているセル数」を数えます。

この関数の意味を分解すると

式は以下の流れで判定しています。

部分 意味
COUNT(D2:F2) D~F列の数値セル数を数える
>0 1つでも数値があるか判定
IF(条件,1,0) 条件成立なら1、違えば0

つまり「数値が1個以上あれば1」という意味になります。

空白文字にも対応したい場合

場合によっては、数値だけでなく文字入力も判定対象にしたいケースがあります。

その場合はCOUNTA関数を使います。

=IF(COUNTA(D2:F2)>0,1,0)

COUNTAは「空白以外」を数える関数です。

VBAで処理する方法

VBAで自動化したい場合は、以下のコードでも実現できます。

Sub CheckInput()    Dim lastRow As Long    Dim i As Long    lastRow = Cells(Rows.Count, "C").End(xlUp).Row    For i = 2 To lastRow        If Cells(i, "D").Value <> "" Or _           Cells(i, "E").Value <> "" Or _           Cells(i, "F").Value <> "" Then            Cells(i, "G").Value = 1        Else            Cells(i, "G").Value = 0        End If    Next i    MsgBox "処理が完了しました。"End Sub

VBAコードのポイント

この部分が判定処理です。

If Cells(i, "D").Value <> "" Or _   Cells(i, "E").Value <> "" Or _   Cells(i, "F").Value <> "" Then

Orを使うことで、「どれか1つでも値があるなら」という条件になります。

関数とVBAはどちらがおすすめ?

通常は関数のほうが簡単です。

方法 特徴
関数 簡単・管理しやすい
VBA 大量データや自動処理向き

数十~数百行程度なら関数で十分なケースが多いです。

よくある勘違い

COUNT関数は「数値のみ」をカウントします。

そのため、以下はカウントされません。

  • 空白
  • 文字列
  • スペースのみ

文字入力も含めたい場合はCOUNTAを使う必要があります。

条件付き書式にも応用できる

この判定は条件付き書式にも応用可能です。

例えば、入力済み行を自動で色付けするといった管理表も作成できます。

実務でよくある活用例

この処理はさまざまな業務シートで利用されています。

  • 売上入力チェック
  • 経費精算確認
  • 勤怠入力管理
  • 在庫更新確認
  • アンケート回収状況

特に「入力有無判定」はExcel実務で頻出です。

まとめ

Excelでは、複数列のどこかに数値があれば1、すべて空欄なら0という判定を簡単に実現できます。

もっともシンプルなのは以下の関数です。

=IF(COUNT(D2:F2)>0,1,0)

また、自動化したい場合はVBAでも同様の処理が可能です。用途に応じて、関数とVBAを使い分けると作業効率が大きく向上します。

コメント

タイトルとURLをコピーしました