Excel VBA

[Excel VBA]VLOOKUP関数のような動きのマクロの作り方

2020年12月31日

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

 

 

困ってます
VBAを使用して、VLOOKUP関数のように数字を入力すると、他の表から値を取得する方法はありますか?

 

このような疑問にお答えします。

 

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無料学習はこちらから

 

 

 

 

-Excel VBA
-,

Copyright© Ronpeee blog , 2023 All Rights Reserved.