VBAのIF文で複数の条件を指定したい場合の簡単なコードを書いておきます。
例えば、A社でA商品を購入した個数、A社でB商品を購入した個数、B社でA商品を購入した個数によって自動で値段を入れたいとか。複数条件で処理したい時は沢山あるはず…
条件によっては、もっと短く書けるかもしれませんが…参考までに…ただIF文の中にIFを入れて、さらにIFを入れているだけですけどね(苦笑
ちなみにコメントを入れましたが削除して使って下さい…
Sub 商品単価() 'Private Sub「マクロ1」「マクロ2」「マクロ3」を読み込んで一つのマクロとして表示する マクロ1 マクロ2 マクロ3 End Sub '------------------------------------------------------------------------------------------ Private Sub マクロ1() '.Rowで2行目を取得して1000行までチェックする Dim r As Variant r = Range("A1").Row r = r + 1 For r = 1 To 1000 '【条件1】 'B行に「A社〇〇支店」or 「B社〇〇支店」が含まれていた場合は,条件2 '〇〇支店が多かったためLikeでワイルドカードを使用 If Range("B" & r).Value Like "A社**" Or _ Range("B" & r).Value Like "B社**" Then '【条件2】 '条件1に当てはまった場合=B行に「A社〇〇支店」or 「B社〇〇支店」、 'G行をチェックして、G行の中に「A商品」or「B商品」or「C商品」が入力されているかチェックする '当てはまった場合は条件3へ '当てはまらなかった場合は、下記の【条件2の分岐】へ If Range("G" & r).Value = "A商品" Or _ Range("G" & r).Value = "B商品" Or _ Range("G" & r).Value = "C商品" Then '【条件3】 '条件1と条件2に当てはまった場合は条件3 'J行の中の数字をチェックして1~4の場合はL行に10000を入力する 'J行の中の数字が5~10の場合はL行に20000を入力する 'J行の中の数字が11~1000の場合はL行に{30000+(J行の中の数字-100)×100}の数値を入力する If Range("J" & r).Value >= 1 And Range("J" & r).Value <= 4 Then Range("L" & r).Value = 10000 ElseIf Range("J" & r).Value >= 5 And Range("J" & r).Value <= 10 Then Range("L" & r).Value = 20000 ElseIf Range("J" & r).Value >= 11 And Range("J" & r).Value <= 1000 Then Range("L" & r).Value = ((Range("J" & r).Value - 100) * 100) + 30000 End If '【条件2の分岐-1】 '条件1に当てはまった場合=B行に「A社〇〇支店」or 「B社〇〇支店」、 'G行をチェックして、「D商品」or「E商品」が入力されているかチェックする '当てはまった場合は条件3へ '当てはまらなかった場合は、下記の【条件2の分岐】へ ElseIf Range("G" & r).Value = "D商品" Or Range("G" & r).Value = "E商品" Then '【条件3】 '条件1と条件2に当てはまった場合は条件3 'J行の中の数字をチェックして1~4の場合はL行に10000を入力する 'J行の中の数字が5~10の場合はL行に20000を入力する 'J行の中の数字が11~1000の場合はL行に{30000+(J行の中の数字-100)×100}の数値を入力する If Range("J" & r).Value >= 1 And Range("J" & r).Value <= 4 Then Range("L" & r).Value = 6000 ElseIf Range("J" & r).Value >= 5 And Range("J" & r).Value <= 10 Then Range("L" & r).Value = 7000 ElseIf Range("J" & r).Value >= 11 And Range("J" & r).Value <= 1000 Then Range("L" & r).Value = ((Range("J" & r).Value - 100) * 200) + 40000 End If '【条件2の分岐-2】 '上記同様、G行をチェックして、「F商品」の場合、【条件3】の処理をする ElseIf Range("G" & r).Value = "F商品" Then If Range("J" & r).Value >= 1 And Range("J" & r).Value <= 4 Then Range("L" & r).Value = 8000 ElseIf Range("J" & r).Value >= 5 And Range("J" & r).Value <= 10 Then Range("L" & r).Value = 9000 ElseIf Range("J" & r).Value >= 11 And Range("J" & r).Value <= 1000 Then Range("L" & r).Value = ((Range("J" & r).Value - 100) * 240) + 5000 End If End If End If Next End Sub '------------------------------------------------------------------------------------------ '同様に「C社」の場合の処理を書く Private Sub マクロ2() Dim r As Variant r = Range("L1").Row r = r + 1 For r = 1 To 1000 If Range("B" & r).Value Like "C社**" Then If Range("G" & r).Value = "A商品" Or _ Range("G" & r).Value = "B商品" Then If Range("J" & r).Value >= 1 And Range("J" & r).Value <= 4 Then Range("L" & r).Value = 10000 ElseIf Range("J" & r).Value >= 5 And Range("J" & r).Value <= 10 Then Range("L" & r).Value = 20000 ElseIf Range("J" & r).Value >= 11 And Range("J" & r).Value <= 1000 Then Range("L" & r).Value = ((Range("J" & r).Value - 100) * 100) + 30000 End If ElseIf Range("G" & r).Value = "G商品" Or Range("G" & r).Value = "H商品" Then If Range("J" & r).Value >= 1 And Range("J" & r).Value <= 4 Then Range("L" & r).Value = 6000 ElseIf Range("J" & r).Value >= 5 And Range("J" & r).Value <= 10 Then Range("L" & r).Value = 7000 ElseIf Range("J" & r).Value >= 11 And Range("J" & r).Value <= 1000 Then Range("L" & r).Value = ((Range("J" & r).Value - 100) * 200) + 40000 End If ElseIf Range("G" & r).Value = "I商品" Then If Range("J" & r).Value >= 1 And Range("J" & r).Value <= 4 Then Range("L" & r).Value = 8000 ElseIf Range("J" & r).Value >= 5 And Range("J" & r).Value <= 10 Then Range("L" & r).Value = 9000 ElseIf Range("J" & r).Value >= 11 And Range("J" & r).Value <= 1000 Then Range("L" & r).Value = ((Range("J" & r).Value - 100) * 240) + 5000 End If End If End If Next End Sub '------------------------------------------------------------------------------------------ '同様に「D社」の場合の処理を書く Private Sub マクロ3() Dim r As Variant r = Range("L1").Row r = r + 1 For r = 1 To 1000 If Range("B" & r).Value Like "D社**" Then If Range("G" & r).Value = "A商品" Or _ Range("G" & r).Value = "G商品" Then If Range("J" & r).Value >= 1 And Range("J" & r).Value <= 12 Then Range("L" & r).Value = 10000 ElseIf Range("J" & r).Value >= 13 And Range("J" & r).Value <= 30 Then Range("L" & r).Value = ((Range("J" & r).Value - 12) * 230) + 11000 ElseIf Range("J" & r).Value >= 31 And Range("J" & r).Value <= 40 Then Range("L" & r).Value = ((Range("J" & r).Value - 31) * 220) + 12000 ElseIf Range("J" & r).Value >= 41 And Range("J" & r).Value <= 400 Then Range("L" & r).Value = ((Range("J" & r).Value - 41) * 170) + 13000 End If ElseIf Range("G" & r).Value = "J商品" Then If Range("J" & r).Value >= 1 And Range("J" & r).Value <= 12 Then Range("L" & r).Value = 10000 ElseIf Range("J" & r).Value >= 13 And Range("J" & r).Value <= 30 Then Range("L" & r).Value = ((Range("J" & r).Value - 12) * 300) + 12000 ElseIf Range("J" & r).Value >= 31 And Range("J" & r).Value <= 40 Then Range("L" & r).Value = ((Range("J" & r).Value - 31) * 270) + 13000 ElseIf Range("J" & r).Value >= 41 And Range("J" & r).Value <= 400 Then Range("L" & r).Value = ((Range("J" & r).Value - 41) * 260) + 14000 End If End If End If Next End Sub