3日がかりのその仕事、3分で終わらせる方法教えます!
パソコンスキルの心技体

文字列内にある文字列を含んでいるかどうかの判定には、 Instr 関数を! – マクロ・VBA

2011年12月29日
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

エクセルマクロ・VBA達人養成塾小川です。

キューバ旅行記、その70です。

ハバナからバラデロビーチへは、夜のバスで移動しました。

そのまま、あらかじめ予約してあった Casa Particular (民宿)に泊まり、次の日の朝です。

エクセルマクロ達人養成塾塾長ブログ-朝、Casa Particularから一枚。

エクセルマクロ達人養成塾塾長ブログ-朝、Casa Particularからもう一枚。

エクセルマクロ達人養成塾塾長ブログ-あるく人。

エクセルマクロ達人養成塾塾長ブログ-別の方向を。

エクセルマクロ達人養成塾塾長ブログ-いい朝でした ヾ(´ー`)ノ

塾長のキューバ旅行記、最初から読みたい方はこちらから


Instr関数の評価結果を利用する

一昨日、昨日の続きです。

一昨日のブログ『「If True Then」なんて書き方でテスト』
一行の中に2回イコール「 = 」を書くと – Excel VBA

昨日のブログの最後に、

明日は、この話の続きとして、以前ある受講生のフォローをしたときに書いたマクロを紹介します。
見慣れない人には、若干ヘンタイかもしれません。。が、おもしろいと思える人にはおもしろいかも (^^;

..って書いたんですが。

その話をするためには、まだちょっと前提が足りないかなということに思い至ったので、今日は別のお話を。
(すいません…)

今日は、「Instr関数の評価結果を利用する」ということで、Instr関数の使い方として、以下をご紹介。

例えば、以下のようなデータがあったとします。


|A列 |B列 |C列 |D列 |E列 |F列 |
------------------------------------------------------------------
1 行目 |ID |所属 |氏名 |得点 |評価 |ひとこと|
------------------------------------------------------------------
2 行目 |1 |都島研究所 |松本 めぐみ |20 | | |
------------------------------------------------------------------
3 行目 |2 |宇部総研 |金沢 京子 |51 | | |
------------------------------------------------------------------
4 行目 |3 |宇部総研 |東京 尚広 |56 | | |
------------------------------------------------------------------
5 行目 |4 |徳島化学 |金沢 大輔 |95 | | |
------------------------------------------------------------------
6 行目 |5 |大阪都島港運|広島 留美 |65 | | |
------------------------------------------------------------------
7 行目 |6 |宮崎研究所 |三重 尚広 |79 | | |
------------------------------------------------------------------
8 行目 |7 |門司出版 |神戸 真菜 |79 | | |
------------------------------------------------------------------
9 行目 |8 |大垣産業 |米子 理絵 |17 | | |
------------------------------------------------------------------
10行目 |9 |能代百貨店 |京都 若菜 |72 | | |
------------------------------------------------------------------
11行目 |10 |徳島産業 |権田原 竜之介|65 | | |
------------------------------------------------------------------

このとき、「所属」に「都島」という文字列を含むものがあったならば、
そうでないものとは違う扱いにしたい(例えば、「評価」で「合格」にするための「得点」の基準を低くするとか)とします。

さあ、どうするか。

ある文字列が、指定された文字列を含むかどうかを評価するには、Instr関数を使います。

こんな↓感じ。

‘文字列が一定の文字を含んでいるかによって、処理を振り分けます
‘Instr関数を使用します(Instr関数の戻り値が0かどうかで条件分岐します)
Sub IfSample05()
    If InStr(Range(“B2”).Value, “都島”) > 0 Then
        Range(“F2”).Value = “都島グループの人なので、特別扱いします!”
    Else
        Range(“F2”).Value = “通常の扱いです”
    End If
End Sub

For Next構文も使って2行目から11行目までのすべての行について連続処理するとなると、こんな感じ↓ですね。

Sub IfSample05Hanako()
Dim cnt ‘変数名は何でもよいですが、今回は「cnt」としてみました。
For cnt = 2 To 11
If InStr(Range(“B” & cnt).Value, “都島”) > 0 Then
Range(“F” & cnt).Value = “都島グループの人なので、特別扱いします!”
Else
Range(“F” & cnt).Value = “通常の扱いです”
End If
Next
End Sub

参考にしてください。

キーワード

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド