ExcelマクロVBA入門
第47回.VBA関数(文字列操作,Replace,InStr,StrConv)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2019-10-06

第47回.VBA関数(文字列操作,Replace,InStr,StrConv)


文字列操作は、マクロVBAでプログラミングする上で必須です、
データ整形、データクレンジング、データクリーニング、
これらを行うVBAにおいて不可欠なものが、文字列操作関数です。


ここでは、文字列操作に関するVBA関数の一覧
Replace関数、InStr関数、StrConv関数について解説します。
これら以外の他の関数は、一覧のリンクより個別のページを参照して下さい。

全てのVBA関数一覧は、VBA関数一覧
VBA関数の一覧と解説ですどんな関数があるかは一度は確認しておくとをお勧めいたします。どんな関数があるだけでも知っておけば詳細の使い方は実際に使うときに調べても良いでしょう。文字列操作…34 型変換…14 データ判定…11 日付時刻…20 配列…7 ファイル操作…14 数学/財務…28 その他…19 MicrosoftDocsOfficeVBARefer…

文字列操作に関するVBA関数の一覧

下表のリンクはVBA関数一覧の説明ページが開かれます。
太字は、このページの下でも解説しています。



関数 説明 対応ワークシート関数
Asc 指定した文字列内にある先頭の文字の文字コードを返す変換関数です ワークシート関数のCODEと同じ
Chr 指定した文字コードに対応する文字を示す文字列型 (String) の値を返します ワークシート関数のCHARと同じ
LCase アルファベットの大文字を小文字に変換します ワークシート関数のLOWERと同じ
UCase アルファベットの小文字を大文字に変換します ワークシート関数のUPPERと同じ
Len 指定した文字列の文字数または指定した変数に必要なバイト数を表す値を返します ワークシート関数と同じ
Left 文字列の左端から指定した文字数分の文字列を返します ワークシート関数と同じ
Mid 文字列から指定した文字数分の文字列を返します ワークシート関数と同じ、文字数は省略可能
Right 文字列の右端から指定した文字数分の文字列を返します ワークシート関数と同じ
Replace 指定された文字列の一部を、別の文字列で指定された回数分で置換した文字列を返します ワークシート関数のSUBSTITUTEと同じ
InStr ある文字列の中から指定した文字列を検索し、最初に見つかった文字位置を返す ワークシート関数のFINDと同じ
ただし大文字小文字の区別はcompareで指定可能。
InStrRev ある文字列の中から指定された文字列を最後の文字位置から検索を開始し、最初に見つかった文字位置を返す文字列処理関数です  
Space 指定した数のスペースからなる文字列を返す文字列処理関数です  
String 指定した文字コードの示す文字、または文字列の先頭文字を、指定した文字数だけ並べた文字列を返す文字列処理関数です ワークシート関数のREPTと似ているが、REPTが文字列(複数文字)を繰り返すのに対し、Stringは先頭1文字のみ繰り返します。また引数の順序が違います。
Str 数式の値を文字列で表した値 (数字) で返す文字列処理関数です
StrConv 変換した文字列をバリアント型 (内部処理形式 String の Variant) で返します  
StrReverse 指定された文字列の文字の並びを逆にした文字列を返します  
Trim 指定した文字列から先頭と末尾の両方のスペースを削除した文字列を表す値を返します ワークシート関数とほぼ同じだが、中間スペースは削除されない
LTrim 指定した文字列から先頭のスペースを削除した文字列を表す値を返します  
RTrim 指定した文字列から末尾のスペース (RTrim)を削除した文字列を表す値を返します  
Val 指定した文字列に含まれる数値を適切なデータ型に変換して返します ワークシート関数のVALUEに近いが、先頭の数値部分のみ取り出す

対応するワークシート関数が解らない場合は、まずは、そちらを覚えて頂きたい。
ワークシート関数と同じと記していても、全く同一と言う訳ではありません。
引数や戻り値において、若干の違いがあるものもありますので注意願います。
マクロにおいて、良く使うものの中から、少々説明が必要と思われるものを以下に説明します。
上表では太字にしてあります。

Replace関数

指定された文字列の一部を、別の文字列で指定された回数分で置換した文字列を返します。
Replace(expression, find, replace[, start[, count[, compare]]])

expression 必ず指定します。
置換する文字列を含む文字列式 を指定します。
find 必ず指定します。
検索する文字列を指定します。
replace 必ず指定します。
置換する文字列を指定します。
start 省略可能です。
引数 expression 内の内部文字列の検索開始位置を指定します。
この引数を省略すると、1 が使用されます。.
count 省略可能です。
置換する文字列数を指定します。この引数を省略すると、既定値の -1 が使用され、すべての候補が置換されます。
compare 省略可能です。
文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。設定する値については、次の「設定値」を参照してください。

使用例
Replace("123aAbBcC","A","Z") → "123aZbBcC"
実戦VBAコードの参考
文字列置換の基本と応用(Replace)
マクロVBAの処理において文字列置換は頻出の処理ですが、これに苦労している初心者の方が多いようです、そこで文字列置換の基本と応用について解説します。・文字列内の空白(半角・全角)を取り除く VBA関数のTrimは前後の空白が削除されるだけです、そこで、Replace関数を使います。
以下のVBA関数一覧のページも参考にしてください。
Replace関数|VBA関数一覧
Replace関数は指定された文字列の一部を別の文字列で指定された回数分で置換した文字列を返します。引数compareの指定りより全角半角大文字小文字の扱いが変わります。Replace関数 Replace(expression,find,replace[,start[,count[,compare]]]) expression 必ず指定します。

InStr関数

文字列の中から指定した文字列を検索し、最初に見つかった文字位置を返す文字列処理関数です。

InStr([start, ]string1, string2[, compare])



start 省略可能です。
検索の開始位置を表す数式を指定します。
省略すると、先頭の文字から検索されます。引数 start に Null 値が含まれている場合、エラーが発生します。
引数 compare を指定した場合は、start も指定する必要があります。
string1 必ず指定します。
検索対象となる文字列式を指定します。
string2 必ず指定します。
引数 string1 内で検索する文字列式を指定します。
compare 省略可能です。文字列比較の比較モードを指定する番号を設定します。
引数 compare が Null 値の場合は、エラーが発生します。
引数 compare を指定した場合は、引数 start も指定する必要があります。
引数 compare を省略すると、Option Compare ステートメントの設定に応じて、比較モードが決まります。
ローカル固有の比較ルールを使用するには、有効なLCID (LocaleID) を指定します。

※注意
この関数では、名前付き引数は使用できません。
指定するとコンパイルエラーになります。

使用例
InStr("123aAbBcC","A") → 5

以下のVBA関数一覧のページも参考にしてください。
InStr関数|VBA関数一覧
Instr関数は、VBAでは頻繁に使われる必須関数で、シート関数のFIND関数と同様機能のVBA関数になります。文字列の中から指定した文字列を先頭から検索し、最初に見つかった文字位置を返す文字列処理関数で、検索文字が見つからなかった場合は0を返します。

StrConv関数

指定された変換方式で変換した文字列を返します。

StrConv(string, conversion, LCID)

string 必ず指定します。変換する文字列式を指定します。
conversion

必ず指定します。整数型 (Integer) の値を指定します。
実行する変換の種類の値の合計を指定します。

定数 内容
vbUpperCase 文字列を大文字に変換します。
vbLowerCase 文字列を小文字に変換します。
vbProperCase 文字列の各単語の先頭の文字を大文字に変換します。
vbWide 文字列内の半角文字 (1 バイト) を全角文字 (2 バイト) に変換します。
vbNarrow 文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換します。
vbKatakana 文字列内のひらがなをカタカナに変換します。
vbHiragana 文字列内のカタカナをひらがなに変換します。
vbUnicode システムの既定のコード ページを使って文字列を Unicode に変換します。
Macintosh. では使用できません)
vbFromUnicode 文字列を Unicode からシステムの既定のコード ページに変換します。
Macintosh. では使用できません)
LCID 省略可能です。システムとは異なる国別情報識別子 (LCID) を指定できます。
既定値はシステムが使用する LCID です。

使用例
StrConv("123aAbBcC",vbUpperCase) → "123AABBCC"
StrConv("123aAbBcC",vbLowerCase) → "123aabbcc"
StrConv("123aAbBcC",vbWide) → "123aAbBcC"
StrConv(StrConv("アイウエオ",vbWide),vbHiragana) → "あいうえお"

以下のVBA関数一覧のページも参考にしてください。
StrConv関数|VBA関数一覧
StrConv関数は、指定された変換方式で変換した文字列を返します、バリアント型(内部処理形式StringのVariant)で返します。StrConv関数 StrConv(string,conversion,LCID) string 必ず指定します。

最後に

ここでVBA関数一覧とは別に解説した、
Replace関数、InStr関数、StrConv関数
これらの関数はマクロVBAで頻繁に使うもので、重要かつ習得必須な関数になります。



同じテーマ「マクロVBA入門」の記事

第44回.VBA関数について
第45回.VBA関数(Format)
第46回.VBA関数(日付,DateAdd)
第47回.VBA関数(文字列操作,Replace,InStr,StrConv)
第48回.VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)
第49回.Like演算子とワイルドカード
第50回.総合練習問題6
第51回.Withステートメント
第52回.オブジェクト変数とSetステートメント
第53回.Workbookオブジェクト
第54回.Windowsオブジェクト


新着記事NEW ・・・新着記事一覧を見る

VBAコードの全プロシージャー・プロパィ一覧を取得|VBAサンプル集(10月12日)
VBAでエラー行番号を取得できるErl関数|VBA技術解説(10月12日)
手動計算時の注意点と再計算方法|ExcelマクロVBA技術解説(10月9日)
引数の数を可変にできるパラメーター配列(ParamArray)|VBA入門(10月7日)
VBEの使い方:デバッグ|ExcelマクロVBA入門(10月6日)
VBAにおける配列やコレクションの起点について|VBA技術解説(10月5日)
VBEの使い方:オブジェクト ブラウザー|VBA入門(10月5日)
VBEの使い方:ウォッチ ウィンドウ|VBA入門(10月4日)
VBEの使い方:ローカル ウィンドウ|VBA入門(10月3日)
VBEの使い方:イミディエイト ウィンドウ|VBA入門(10月2日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • VBA関数(文字列操作,Replace,InStr,StrConv)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ