Excel VBAで品名を検索して、それに基づいてセルの値を変更する際に、複数の条件を設定する方法について解説します。質問者様の例では、品名「たぬき」と「きつね」に基づいて、それぞれ異なる数値をS列に加算する処理を行いたいという内容です。以下のコードを参考にして、問題を解決する方法をご紹介します。
1. 品名ごとの条件を追加する
まず、VBAで「たぬき」と「きつね」それぞれの条件に対応するコードを追加する方法を見ていきましょう。すでに「たぬき」に対する処理は完了しているので、同じように「きつね」に対する処理を追加するだけです。
以下は、質問者様のコードに「きつね」の処理を追加した例です。
For i = 14 To 45
Set FoundCell = Range("D14:L45").Find("たぬき") '品名の列から「たぬき」を検索
If Not FoundCell Is Nothing Then
Range("S" & FoundCell.Row) = Range("S" & FoundCell.Row) + 4 'たぬきの場合、S列に+4
Range("S" & FoundCell.Offset(1, 0).Row) = Range("S" & FoundCell.Offset(1, 0).Row) + 4
Exit For
End If
Set FoundCell = Range("D14:L45").Find("きつね") '品名の列から「きつね」を検索
If Not FoundCell Is Nothing Then
Range("S" & FoundCell.Row) = Range("S" & FoundCell.Row) + 5 'きつねの場合、S列に+5
Range("S" & FoundCell.Offset(1, 0).Row) = Range("S" & FoundCell.Offset(1, 0).Row) + 5
Exit For
End If
If Cells(i, "M").Value = "" Then
Cells(i, "M").Value = "基本料"
Cells(i, "D").Value = "たぬき"
End If
Next i
2. 処理の流れ
コード内で「たぬき」と「きつね」の両方を検索し、それぞれに異なる値をS列に加算しています。最初に「たぬき」を検索し、見つかった場合はS列に+4を加算します。次に「きつね」を検索し、見つかった場合はS列に+5を加算します。
もし、どちらも見つからなければ、M列に「基本料」が入力され、D列に「たぬき」が入力される処理が行われます。このコードの流れを適用すれば、異なる品名に対して異なる数値をS列に加算できます。
3. 他の品名に対する処理を追加する方法
今後、他の品名に対しても同様の処理を行いたい場合は、Find関数を使ってその品名を検索し、該当する場合にS列の値を加算するコードを追加することができます。例えば、「うさぎ」という品名に対して別の値を加算したい場合は、以下のように追加できます。
Set FoundCell = Range("D14:L45").Find("うさぎ") '品名の列から「うさぎ」を検索
If Not FoundCell Is Nothing Then
Range("S" & FoundCell.Row) = Range("S" & FoundCell.Row) + 6 'うさぎの場合、S列に+6
Range("S" & FoundCell.Offset(1, 0).Row) = Range("S" & FoundCell.Offset(1, 0).Row) + 6
Exit For
End If
4. まとめ
VBAで複数の品名に基づいて異なる値を加算するための処理は、Find関数を使って品名を検索し、それに対応する処理を行うことで簡単に実現できます。上記のコードを参考に、必要に応じて他の品名に対しても処理を追加することができます。


コメント