本記事はエクセル2019で動作確認を行っています。

このような疑問にお答えします。
VLOOKUP関数を使用すると、簡単に値を取得することができます。
ただ、実務では複数の人が同じブックを使用することはよくありますよね。
間違って関数を消されてしまい保存されると、水の泡です。
このようなことが無いよう、VBAで対策するのもひとつです。
本記事は
VBAを使用し、VLOOLUP関数のような働きをする方法。
を紹介します。
問題
1.Sheet2に下記のような表があります。
2.Sheet1の1列目に1~5の数字を入力すると、A~Eの文字を表示させるようにしたいです。
このような場合、どのようなVBAをかきましょう??
次に解説していきます。
Private Sub Worksheet_Change(ByVal Target As Range) ‘① Dim Number As Integer If Target.Column = 1 Then ‘② Application.EnableEvents = False Number = Target.Value ‘③ Dim FindCell As Range Set FindCell = Worksheets("Sheet2").Cells.Find(Number) ‘④ If Not FindCell Is Nothing Then ‘⑤ Cells(Target.Row, 2) = FindCell.Offset(0, 1).Value ‘⑥ Else Cells(Target.Row, 2) = "" ‘⑦ End If Application.EnableEvents = True End If End Sub
考え方解説
①ワークシートがなにかチェンジしたら、VBAを作動させたいな。
②ターゲットの列が1列目の時にうごかそう。
③入力したセルの値を変数としてとろう。
④配列をつかって、Sheet2の表からNumberの変数を見つけて、それをFindCellっていう変数にいれよう。
⑤FindCellがNothingじゃなかったら、If文にはいろう。
⑥ターゲットの行の2列目にFindCellの横の内容を表示させよう。
⑦ターゲットの行の2列目になにもなければ空欄にしよう。
このような手順で考えるとVLOOKUP関数と同じような動きをしてくれるマクロを組むことができます。
コードに少し変更をかければ、さまざまな問題に対応できるはずです。
ぜひ一度VBAをかいて動かしてみて下さい。
もちろん、場合によってはVLOOKUP関数を使用した方が、簡単に問題を解決できることもあります。
また、VBA自体にもVLOOKUP関数が存在しますので、またの機会にでも!
いろいろ臨機応変にたのしくVBAを書いていきましょう。
今回のワンポイント
If Not 〇〇 is Nothing Then
⇒もし〇〇がなければ、でなければ。 二重否定なので肯定になり、もし〇〇があればとなります。
If 〇〇 Is Nothing Then
⇒もし〇〇でなければ。となります。
ExcelVBAをこれから学習したい方は、本サイトの無料学習もご活用ください。
VBA無料学習はこちらから