ExcelのVLOOKUP関数をマクロで使いたいけど、どうやったらいいのか分からない…
そんな時は「IF文」を使用してみて下さい。
コードは長くなりますが、書いていることはシンプルで、だいたい同じことができます。
例えば、普通にVLOOKUPを関数を使うと下記のようにA2に「A」と入力されたらB2に「AA」になります。
上記の表を同様にA=AA B=BB C=CC D=DD E=EEと表示させるようにするには、
以下、マクロ。
Sub a()
‘普通、この場合は変数の型を「Long」とするもしれないけど、面倒なのでオールマイティの「Variant」型
Dim r As Variant
‘変数rに「行の高さとしてB1」を指定する(行の高さを指定=.ROWね)
‘指定した行の高さを一つ下げて「今回はB1の下」からはじめる
r = Range(“B1”).Row
r = r + 1
For r = 1 To 1000 ‘上で一つ下げた1行目から順番に1000行目まで実行する
‘ここからは簡単な「IF文」
‘Aのr行目が”A”の場合は、Bのr行目に”AA”と入力する
If Range(“A” & r).Value = “A” Then
Range(“B” & r).Value = “AA”
‘そうじゃくてAのr行目が”B”の場合は、Bのr行目に”BB”と入力する
ElseIf Range(“A” & r).Value = “B” Then
Range(“B” & r).Value = “BB”
‘そうじゃくてAのr行目が”C”の場合は、Bのr行目に”CC”と入力する
ElseIf Range(“A” & r).Value = “C” Then
Range(“B” & r).Value = “CC”
‘そうじゃくてAのr行目が”D”の場合は、Bのr行目に”DD”と入力する
ElseIf Range(“A” & r).Value = “D” Then
Range(“B” & r).Value = “DD”
‘そうじゃくてAのr行目が”E”の場合は、Bのr行目に”EE”と入力する
ElseIf Range(“A” & r).Value = “E” Then
Range(“B” & r).Value = “EE”
‘そうじゃくてAのr行目が”上の何にも当てはまらない”場合は、Bのr行目に空白で入力する
Else
Range(“P” & r).Value = “”
End If
Next
一応、コーピーしやすいようにしておくと、
Sub a()
Dim r As Variant
r = Range("B1").Row
r = r + 1
For r = 1 To 1000
If Range("A" & r).Value = "A" Then
Range("B" & r).Value = "AA"
ElseIf Range("A" & r).Value = "B" Then
Range("B" & r).Value = "BB"
ElseIf Range("A" & r).Value = "C" Then
Range("B" & r).Value = "CC"
ElseIf Range("A" & r).Value = "D" Then
Range("B" & r).Value = "DD"
ElseIf Range("A" & r).Value = "E" Then
Range("B" & r).Value = "EE"
Else
Range("P" & r).Value = ""
End If
Next
簡単ですよね。