2019.07.23スポンサーリンクこんにちは、VBAエンジニアのやすこれです。みなさんはVBAでInStr関数を使ったことがありますか?VBAのInStr関数の基本的な使い方を知りたいInStr関数の使いどころがわからないInStr関数の利用の仕方を実例付きで知りたい!という方も多いのではないでしょうか。そこで今回は、任意の文字列の開始位置を取得できるInStr関数の使い方と実務での応用方法をサンプルコード付きで紹介します。名字と名前を分ける複数の文字列で検索する住所から都道府県を取り出すフルパスをディレクトリとファイル名に分けるVBAでのInStr関数まとめVBAでのInStr関数の使い方InStr関数の基本的な使い方InStr関数は、指定した文字列から任意の文字列を検索し、見つかった開始位置を数字で返す関数です。"う")文字列1「あいうえお」から文字列2「う」の開始位置を返しています。画像のように、文字列1「あいうえお」の開始位置は「1」から始まります。文字列2「う」の位置は開始から3番目なのでサンプルのInStr関数は「3」を返します。他にも、省略した引数を指定するとどうなるのか、検索文字列が見つからない場合はどうなるのかなど、いくつかパターンがあるので、詳しく解説します。省略可能な引数も含めて一覧で解説します。各引数の値による返り値を一覧で解説します。指定した文字列を検索して数値を返すInStr関数ですが、注意点があります。それは比較形式によって、返り値が変わることです。返り値にどういう違いがでるのか、説明します。区別されず検索される比較形式を省略した場合、全角・半角が区別されて検索される比較形式に「vbTextCompare」もしくは「1」を指定した場合、全角・半角が区別されず検索されるInStr関数の注意点を解決する方法InStr関数は省略可能な「比較形式」の指定によって返り値が変わります。区別するには、比較形式に「vbBinaryCompare」もしくは「0」を指定しましょう。str2)」を検索しています。比較形式には「vbBinaryCompare」を指定しているため、大文字と小文字を区別しています。区別しないには、比較形式に「vbTextCompare」もしくは「1」を指定しましょう。str2)」を検索しています。比較形式には「vbTextCompare」を指定しているため、大文字と小文字を区別しません。よって結果は次の画像の通り、「1」となります。比較形式が「vbBinaryCompare」でも「UCase」「LCase」関数を使って事前に引数の文字列の大文字・小文字をそろえておくことで、大文字・小文字の区別なく検索することができます。vbBinaryCompare)上記サンプルコードは比較形式に大文字・個別を区別する「vbBynaryCompare」を指定しています。UCase(str2))」とすることで、画像のように返り値は1となります。うまく組み合わせて使ってみましょう。1)まず「InStr関数」を使って、名字と名前の間にある「スペース」の位置を取得して、「borderNum」に定義しています。")次に「Left関数」と先ほど定義した「borderNum」を使って「スペース」の手前までの文字列(名字)を取得しています。“ABC”最後に「Mid関数」と「borderNum」を使って「スペース」の後ろから最後までの文字列(名前)を取得しています。“BCD”以上で、InStr関数を使って名前と名字を分けることができました。いくつか他の関数もでてきましたが、ひとつひとつはとても単純です。順を追ってしっかり理解しましょう。Left関数・Mid関数については、下記でも詳しく解説しているので、読んでみてください。【ExcelVBA】Left関数の使い方とは?実務で使うテクニックも解説こんにちは、VBAエンジニアのやすこれです。Left関数の利用の仕方を実例付きで知りたい!yasucore.com2020.01.12【ExcelVBA】Mid関数の使い方とは?実務で使うテクニックも解説こんにちは、VBAエンジニアのやすこれです。"」もありませんでした。If「If関数」と「Or関数」を組み合わせて、複数文字列の検索を行います。0」とすることで文字列が見つかったかどうかの判定を行うことができます。処理結果は画像のようになります。先ほど紹介した、名前と名字を分ける処理を行う際、スペースが半角・全角どちらかわからなければ、組み合わせて使うことができますね。"」どちらもありました。"」のどちらかもしくは両方ありませんでした。If「If関数」と「And関数」を組み合わせて、複数文字列の検索を行います。0」とすることで文字列が見つかったかどうかの判定を行うことができます。処理結果は画像のようになります。4」)の場合は左端から4文字を取得して、3つの県に該当しなければ、左端から3文字を取得すれば都道府県を取り出すことができます。これを利用して、下記の部分で判定を行い、都道府県が対象の住所から何文字目までかを「endNum」に定義しています。Ifあとは「Left関数」を使って、対象の住所「trgtAddress」から「endNum」に定義された数だけ文字数を取得すれば、住所から都道府県を取り出すことができます。“ABC”Left関数については、下記でも詳しく解説しているので、読んでみてください。【ExcelVBA】Left関数の使い方とは?実務で使うテクニックも解説こんにちは、VBAエンジニアのやすこれです。Left関数の利用の仕方を実例付きで知りたい!yasucore.com2020.01.12フルパスをディレクトリとファイル名に分けるディレクトリとファイル名に分ける処理は「InStr関数」の代わりに「InStrRev関数」を使って行います。使い方は「InStr関数」に非常によく似ていますので、紹介します。InStrRev関数の使い方InStrRev関数は、指定した文字列の後ろから任意の文字列を検索し、はじめに見つかった位置を数字で返す関数です。「InStr関数」とは省略可能な引数の位置が違うことに注意しましょう。"う")文字列1「あいうえお」の後ろから文字列2「う」を検索して初めに見つかった位置を返しています。画像のように、文字列2「う」の位置は文字列1「あいうえお」の後ろから3番目なのでサンプルのInStrRev関数は「3」を返します。"")まず次の部分で、ディレクトリとファイル名に分けたいフルパス「trgtPath」から、ディレクトリ「dirStr」を取り出します。“\”)」の部分で末尾の「\」の位置、つまりファイル名が始まる直前の位置を取得しLeft関数でそれよりも前の文字列であるディレクトリを取得しています。“ABC”次にフルパス「trgtPath」から取得したディレクトリ「dirStr」を取り除いて、ファイル名「fileName」を取得します。"")画像のように「Replace関数」を使って、フルパス「trgtPath」からディレクトリ名「dirStr」を「空の文字列」に置き換えることでファイル名「fileName」を取得しています。“ABC”以上で、フルパスをディレクトリとファイル名に分けることができました。「InStr関数」ではなく「InStrRev関数」を使いましたが、この2つの関数は非常に似ており応用も効くので、あわせて使いこなしましょう。Left関数・Replace関数については、下記でも詳しく解説しているので、読んでみてください。【ExcelVBA】Left関数の使い方とは?実務で使うテクニックも解説こんにちは、VBAエンジニアのやすこれです。Replace関数の利用の仕方を実例付きで知りたい!yasucore.com2020.01.12また、ファイル名の取得は、Dir関数でも行うことができます。あわせてご覧ください。【ExcelVBA】Dir関数の使い方とは?実務で使うテクニックも解説こんにちは、VBAエンジニアのやすこれです。VBAでのファイル一覧取得方法を知りたい!yasucore.com2020.01.13VBAでのInStr関数まとめ今回はVBAでのInStr関数の使い方と実務での使用方法を紹介いたしました。切り替えも覚えておきましょう。実例通り使ってみると、理解が深まり応用が効くのでおすすめです。最近とてもいいWebサービスが増えてきた。ブラウザ上で完結するのは便利な反面、開くまでのステップが多い。Webサービスをアプリみたいに一発で開きたい。「条件付き書式」でセル値によって書式を変えている。セル値じゃなくて、決まった時間がきたら書式が変わるようにしたい。「条件付き書式」は数式を使い色々な条件を指定できます。【ExcelVBA】MATCH関数の使い方とは?よくあるエラーの対策も解説!こんにちは、VBAエンジニアのやすこれです。【Windows】OneDriveを無効化して自動起動を停止する方法を解説こんにちは。VBAエンジニアのやすこれです。みなさんは、OneDrive使っていますか?ぼくの場合、オンラインストレージはDropboxとGoogleDriveを使っているので使っていません。同じようにOneDrive以外のサービスを使っている方は、OneDriveは必要ないですよね。【ExcelVBA】VLOOKUP関数の使い方とは?よくあるエラーの対策も解説!こんにちは、VBAエンジニアのやすこれです。【ExcelVBA】Right関数の使い方とは?実務で使うテクニックも解説こんにちは、VBAエンジニアのやすこれです。【ExcelVBA】ファイルコピーのやり方とよくあるエラーを解説!こんにちは、VBAエンジニアのやすこれです。2017年12月やすこれ働きたくない。いう思いから投資をはじめ、ブログを書いてます。働かないために業務自動化を推し進め、幅広くExcel(VBA含む)の知識を身に付けました。その後、事務職からVBAエンジニアへの転職を果たしています。VBA開発・Excel指導依頼受け付けてます。Twitterやcoconala等でお気軽にDMください。2017年12月やすこれ働きたくない。いう思いから投資をはじめ、ブログを書いてます。働かないために業務自動化を推し進め、幅広くExcel(VBA含む)の知識を身に付けました。その後、事務職からVBAエンジニアへの転職を果たしています。VBA開発・Excel指導依頼受け付けてます。Twitterやcoconala等でお気軽にDMください。カテゴリーを選択ライフハック。