Excelで「請求書」という文字を含むセルを特定し、同じ行の離れたセルに自動で入力させる方法を紹介します。「見積書」「納品書」などは除外し、「請求書」のみを対象とする方法を関数とVBAを使って解説します。
関数を使った方法(シンプルな設定)
Excelの IF
関数を使えば、「請求書」のみを特定し、別のセルに自動入力することができます。例えば、A列に「請求書」「見積書」「納品書」などが入力されている場合、B列に「請求書」のみを転記するには以下の数式を使います。
=IF(A2="請求書", A2, "")
この数式をB2セルに入力し、下の行までコピーすれば、A列に「請求書」と入力された場合のみ、B列に「請求書」が表示されます。その他の文字(見積書や納品書など)は無視されます。
VBAを使った方法(動的な自動入力)
より高度な処理を行いたい場合、VBAを使って「請求書」だけを指定のセルに自動で入力することも可能です。以下のVBAコードは、A列のデータをチェックし、該当する行のC列に「請求書」を自動入力します。
Sub 請求書自動入力()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Set ws = ActiveSheet
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row ' A列の最終行を取得
For i = 2 To lastRow ' 2行目以降を処理(タイトル行を除く)
If ws.Cells(i, 1).Value = "請求書" Then
ws.Cells(i, 3).Value = "請求書" ' C列に自動入力
Else
ws.Cells(i, 3).ClearContents ' 他の値は削除
End If
Next i
End Sub
VBAを設定する手順
VBAを使用するには、以下の手順を行います。
- Excelを開き、「Alt + F11」を押してVBAエディタを開く
- 「挿入」→「標準モジュール」を選択
- 上記のコードをコピーし、VBAエディタに貼り付ける
- 「F5」を押して実行
このコードを実行すると、A列をチェックし、「請求書」と一致する行のC列に「請求書」が自動で入力されます。
VBAの自動実行(セル変更時に動作)
「請求書」を入力した際に即座にC列に反映させるには、VBAのイベント処理を使います。以下のコードを「Sheet1(または対象のシート)」のVBAエディタに記述してください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
If Not Intersect(Target, Me.Range("A:A")) Is Nothing Then
Application.EnableEvents = False
For Each cell In Target
If cell.Value = "請求書" Then
cell.Offset(0, 2).Value = "請求書" ' 2列右(C列)に入力
Else
cell.Offset(0, 2).ClearContents
End If
Next cell
Application.EnableEvents = True
End If
End Sub
このVBAを設定すると、A列に「請求書」を入力した際、自動的にC列にも「請求書」が入力されます。
まとめ
「請求書」のみを自動で別のセルに入力する方法として、以下の手法を紹介しました。
- 関数(IF関数)を使う方法:簡単な設定でOK
- VBAを使う方法:より高度な自動化が可能
- VBAのイベント処理:入力と同時に即座に反映
用途に応じて適切な方法を選び、Excelの業務効率を向上させましょう。
コメント