Excel VBAで品名ごとに異なる値を設定する方法

Visual Basic

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関数を使って品名を検索し、それに対応する処理を行うことで簡単に実現できます。上記のコードを参考に、必要に応じて他の品名に対しても処理を追加することができます。

コメント

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