• 締切済み

マクロの複数条件での分岐を教えて下さい

初心者です。 下記のような条件の場合、どのように記述すればよいか教えていただけますでしょうか。 もし、セルA2が"A"、且つ、セルB2が"☆"のとき、セルC3に"1" もし、セルA2が"A"、且つ、セルB2が"☆☆"のとき、セルC3に"2" もし、セルA2が"A"、且つ、セルB2が"☆☆☆"のとき、セルC3に"3" もし、セルA2が"B"、且つ、セルB2が"☆"のとき、セルC3に"4" もし、セルA2が"B"、且つ、セルB2が"☆☆"のとき、セルC3に"5" もし、セルA2が"B"、且つ、セルB2が"☆☆☆"のとき、セルC3に"6" それ以外は「エラー」 をセットしたい場合、マクロではどのような記述になるでしょうか。 どなたかご教授願います。

みんなの回答

回答No.5

No3です。 dim i for i = 1 to 100 '1行目から100行目まで if range("A" & i).value = "A" then if range("B" % i).value = "☆" then range("C" & i).value = 1 elseif range("B" & i).value = "☆☆" then range("C3" & i).value = 2 elseif range("B" & i).value = "☆☆☆" then range("C" & i).value = 3 else range("C" & i).value = "エラー" endif elseif range("A" & i).value ="B" then if range("B" & i).value = "☆" then range("C" & i).value = 4 elseif range("B" & i).value = "☆☆" then range("C" & i).value = 5 elseif range("B" & i).value = "☆☆☆" then range("C" & i).value = 6 else range("C" & i).value = "エラー" endif else range("C" & i).value = "エラー" endif next

すると、全ての回答が全文表示されます。
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.4

種類が多いわけではないのであまり効果はないですけれど、少し違うタイプのものを… 行について繰り返したければ、A2、B2、C2の部分を行についてループするようにすればよろしいかと。 Sub test() Dim checkVal As Variant Dim i As Integer, result As Variant, val As String checkVal = Array("☆", "☆☆", "☆☆☆") result = 0 val = Range("B2").Text For i = 0 To 2 If val = checkVal(i) Then result = i + 1 Exit For End If Next i If result <> 0 Then val = Range("A2").Text If val = "B" Then result = result + 3 Else If val <> "A" Then result = 0 End If If result = 0 Then Range("c2") = "エラーです" Else Range("C2") = result End Sub

すると、全ての回答が全文表示されます。
回答No.3

if range("A2").value = "A" then if range("B2").value = "☆" then range("C3").value = 1 elseif range("B2").value = "☆☆" then range("C3").value = 2 elseif range("B2").value = "☆☆☆" then range("C3").value = 3 else range("C3").value = "エラー" endif elseif range("A2").value ="B" then if range("B2").value = "☆" then range("C3").value = 4 elseif range("B2").value = "☆☆" then range("C3").value = 5 elseif range("B2").value = "☆☆☆" then range("C3").value = 6 else range("C3").value = "エラー" endif else range("C3").value = "エラー" endif

gosanta21
質問者

補足

ありがとうございます! こちらのミスでC3ではなくC2でした。 ちなみにこれをC列に繰り返し入力したい場合はどうしたら良いでしょうか?

すると、全ての回答が全文表示されます。
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

なんのマクロでしょう? セルを使ってることと、「マクロ」というだけではわかりません。 効率を無視すれば もし、セルA2が"A"、且つ、セルB2が"☆"のとき、セルC3に"1" 「そうでなければ」 もし、セルA2が"A"、且つ、セルB2が"☆☆"のとき、セルC3に"2" 「そうでなければ」もし、セルA2が"A"、且つ、セルB2が"☆☆☆"のとき、セルC3に"3" 「そうでなければ」もし、セルA2が"B"、且つ、セルB2が"☆"のとき、セルC3に"4" 「そうでなければ」もし、セルA2が"B"、且つ、セルB2が"☆☆"のとき、セルC3に"5" 「そうでなければ」もし、セルA2が"B"、且つ、セルB2が"☆☆☆"のとき、セルC3に"6" 「そうでなければ」「エラー」 と、「そうでなければ」に相当する命令等で上のように継げれば実現できます。

すると、全ての回答が全文表示されます。
  • moguppe
  • ベストアンサー率30% (20/65)
回答No.1

Select Case Cells(2, 1) Case "A" Select Case Cells(2, 2) Case "☆" Cells(3, 3) = 1 Case "☆☆" Cells(3, 3) = 2 Case "☆☆☆" Cells(3, 3) = 3 Case Else MsgBox "エラー" End Select Case "B" Select Case Cells(2, 2) Case "☆" Cells(3, 3) = 4 Case "☆☆" Cells(3, 3) = 5 Case "☆☆☆" Cells(3, 3) = 6 Case Else MsgBox "エラー" End Select Case Else MsgBox "エラー" End Select こんなとこでしょうか・・・ もっとうまくできるかもしれませんが私も最近手を出し始めたばかりなのでこれが限界です

すると、全ての回答が全文表示されます。

関連するQ&A