状況がよくわからないのですが。
まさか請求書が1枚だけということはないでしょう。沢山の請求書がどのような形で入っているのが、単なるコピーでいいのか、加算するのか。
実行前に請求金額一覧表を初期化する必要があるのか。
会社が存在しない場合(打ち間違い等で可能性はある)
年をどうするのか。
それとも、請求書を入力し一覧表にコピペ。破棄して別会社の請求書入力という運用をしているのかもしれません。しかし、それでは、間違いがあったときが大変です。
'
Option Explicit
'
Sub Macro1()
'
Dim IRange As Range
Dim Col As Integer
'
Set IRange = [請求金額一覧表!A:A].Find([請求書!E10])
'
If Not IRange Is Nothing Then
Col = Month([請求書!N3]) + 1
Sheets("請求金額一覧表").Cells(IRange.Row, Col) = [請求書!X42]
End If
End Sub
このプログラムは、請求書が1枚だけ、請求金額一覧表と同じワークブックにあり、会社名と月を検索しコピぺ。会社がない場合・年を無視しています。上記の問題を挙げていただくか、又は、これを参考に自分で作って下さい。
お礼
ご回答ありがとうございます。 説明不足で済みません。シート名"請求書入力フォーム"に記入した値はマクロを実行して、請求書データベースというシートに行単位で保存されます。 請求書データベースでは、Excelのフィルター機能を使って会社名や日付で、一社の該当月の請求書一覧を表示させ、可視セルを作業用シートに一時的にコピーするマクロを使って、作業用シートにコピーします。次に作業用シートのセルの値を、シート名”請求書”に表示させるという流れです。 一社毎に請求書を表示させて印刷しています。作業する人はフィルター機能を使って手作業で必要な情報を表示させるのは面倒ですが、その後、可視セルの内容を作業用シートにコピー、作業用シートの値を、請求書シートに貼り付け、印刷画面を表示させるところまで、マクロのボタンを一つを押せばできるようにしています。 今回、ご提示頂いたマクロを参考に検証してみます。ありがとうございました。