スポンサーリンク

Excel VBA(マクロ) LIKE によるあいまい検索で現金出納帳の摘要から科目を割り当てる


Excel VBA(マクロ)で、If 文を使うことがあります。

If 文は「もしこうだったらこうする」と

条件に一致する場合に、指定した処理をさせるためにあります。

さて、今日はこの If 文を使ってあいまい検索する事例を取り上げたいと思います。

スポンサーリンク

1、If 文の使い方

まずは、If 文の使い方について、通常の使い方とあいまい検索をする方法を紹介します。

通常の使い方

Excel VBA で If 文を使う場合、以下のように記述します。

If 条件1 Then       
    処理①
Else
Endif

これで、「条件1 に該当する場合に処理①を行う」という命令になります。

例えば、セルA1 の文字列が「消費税」の場合に、メッセージボックスで「OK」と表示させたければ以下のようにコードを書きます。

セル A1 に「消費税」と入力した状態で実行すると、以下のようにメッセージボックスが表示されることが確認できます。

通常の検索

Like を使った場合

さて、今日お話ししたい Like は、If 文の条件1の中で使います。

If 条件1 Then       
    処理①
Else
Endif

例えば、セルA1 の文字列に「消費税」というキーワードが含まれる場合に、メッセージボックスで「OK」と表示させたければ以下のようにコードを書きます。

セルA1 の文字列が「消費税」とぴったり一致する場合を条件とするときは以下のように書きました。

If Cells(1, 1).Value = “消費税”

それに対して、「消費税」というキーワードを含むことを条件とする場合は以下のように書きます。

という記述を使って以下のように書きます。

If Cells(1, 1).Value Like “*消費税*”

「消費税」というキーワードを「*」で囲うことを忘れないようにしましょう!

こうすることで、消費税という文字の前後に他の文字が含まれる場合も条件を満たすことになります。

例えば、セルA1 に「消費税の計算を行います」と記述した状態で実行してみましょう。

「消費税」というキーワードの後ろに他の文字列があっても、以下のようにメッセージボックスが表示されることが確認できます。

あいまい検索1

また、セルA1 に「勉強したいのは消費税」と記述した状態で実行してみましょう。

「消費税」というキーワードの前に他の文字列があっても、以下のようにメッセージボックスが表示されることが確認できます。

あいまい検索2

以下については、リンク先よりお願い致します。----------------------------------------------------------------
◆メルマガ登録
◆Youtube:税理士 松井元のチャンネル

2、Like によるあいまい検索で現金出納帳の摘要から科目を割り当てる

Like によるあいまい検索で現金出納帳の摘要から科目を割り当てる VBA コード

さて、Like を使ったあいまい検索の例をもう少し紹介します。

次のような現金出納帳があったとします。

Excel現金出納帳

以下の項目を入力するものとなっています。

日にち、勘定科目、科目コード、摘要、収入金額、支払金額。

差引残高はセルに数式を埋め込んであるので計算されます。

お題として、摘要を入力した状態で実行すると勘定科目と科目コードを割り当てるコードを考えてみます。

勘定科目・科目コード割り当て

例えば、摘要欄に「〇〇商店」というキーワードがある場合には、勘定科目は「仕入高」、科目コードは「712」というように自動的に割り当てれるようにするという意味です。

何回も出てくる取引内容だと、このようにすれば勘定科目と科目コードを手入力せずに済みます。

さて、下準備としてまず現金出納帳の余白にキーワード、勘定科目、科目コードの対応が分かる表を作っておきます。

よく出てくる取引を選ぶ出すと良いでしょう。

検索の表

これで、どのキーワードにどの科目を割り当てたいかを設定したことになります。

VBE(エディタ)を開いて以下のコードを記述します。

これを実行すると、以下のようにだいたいの勘定科目と科目コードが自動的に割り振られます。

科目割り当て

すべての摘要のキーワードを想定すると量が多くなりすぎるので、絞る必要はあるわけですが、頻繁に出てくるものを設定しておくだけで勘定科目と科目コードを入力する手間が省けます。

コード説明

さて、今回の VBA コードについて主な点をお話ししておきます。

If 文での検索の条件は以下のように記述しています。

If Tekiyou Like “*” Cells(j + 11, Keyword_Line) “*”

今回のようにキーワードを順番に読み込む必要がある場合には、キーワードを「Cells(j + 11, Keyword_Line)」のように変数を使って表さなければなりません。

そのような場合に Like を使うとすると、先の “*消費税*”のように “” で囲われる中に全てを表示することができません。

文字列をつなぐ役割を持った & を使って

“*” & Cells(j + 11, Keyword_Line) & “*”

のように記述します。

これで、「Cells(j + 11, Keyword_Line)」というキーワードを含む文字列を表すことができます。

3、まとめ

Like を使ったあいまい検索は意外と使える場面が多いです。

今回の例を参考にして、是非活用いただければと思います。

編集後記

昨日(12/19)は仕事の後、マッサージを受けに行ってきました。

ここのところ座って作業しっぱなしで、かなり体が凝ってたので楽になりました。

以下については、リンク先よりお願い致します。----------------------------------------------------------------
◆メルマガ登録
◆Youtube:税理士 松井元のチャンネル