7-3.文字列に関する関数

今回は、文字列に関する関数をいくつか説明します。

文字列の作成

文字列を作成する関数をご紹介します。

Str関数:数値を文字列に変換する

○構文
Str(number)

○処理
numberに指定した数値を文字列型で返します。

文字列の抽出

文字列の中から部分的に文字列を抽出する関数をご紹介します。

Left関数:文字列の一部を左から取り出す

○構文
Left(string,length)

○処理
stringに指定した文字列の左端からlength文字目までの文字列を返します。

lengthにstringの文字数以上の値を指定した場合、string全体が返ります。
lengthに0を指定した場合、空文字が返ります。

ワークシート関数のLeft関数と同じです。

Sub Left関数()
    Dim str As String: str = "abcde"
    
    MsgBox Left("abcde", 1)
    '>>> "a"
    MsgBox Left(str, 1)
    '>>> "a"
    
End Sub

Right関数:文字列の一部を右から取り出す

○構文
Right(string,length)

○処理
stringに指定した文字列の右端からlength文字目までの文字列を返します。

lengthにstringの文字数以上の値を指定した場合、string全体が返ります。
lengthに0を指定した場合、空文字が返ります。

ワークシート関数のRight関数と同じです。

Sub Right関数()
    Dim str As String: str = "abcde"
    
    MsgBox Right("abcde", 1)
    '>>> "e"
    MsgBox Right(str, 1)
    '>>> "e"
    
End Sub

Mid関数:文字列の一部を取り出す

○構文
Mid(string,start,[length])
※[]内の引数は省略可能

○処理
stringに指定した文字列のstart文字目から文字数length分の文字列を返します。

lengthは「何文字目まで」ではなく、startから「何文字分」抽出するかを指定します。

startがstringの文字数より大きい場合は、空文字が返ります。

lengthを省略する、または、lengthにstring – start 以上の値を指定した場合、start以降の全ての文字列が返ります。

Sub Mid関数()
    Dim str As String: str = "abcde"
    

     MsgBox Mid("abcde", 1, 3)
    '>>> "abc"
    MsgBox Mid(str, 3)
    '>>> "cde"
    
End Sub

文字列の情報を取得

文字列の情報を取得する関数をご紹介します。

Len関数:文字列の長さを取得する

○構文
Len(string)

○処理
stringの文字列の長さを返します。

ワークシート関数のLen関数と同じです。

Sub Len関数()
    
    MsgBox Len("abcde")
    '>>> 5
    
End Sub

InStr関数:文字列の位置を検索する

○構文
InStr([start],string1,string2,[compare])
※[]内の引数は省略可能

○処理
string1の中からstring2を検索する処理を行います。

string1の中にstring2が含まれる場合、string2が始まる位置の文字数を返します。
string2が複数ある場合、string2が最初に現れる位置を返します。
string2が含まれない場合、0が返ります。

startを指定すると、string1のstart文字目以降から検索します。

ワークシート関数のFind関数と同じです。

<compareの定数>
compareは検索方法を指定できます。

定数内容
vbUseCopmareOption-1OptionCompareステートメントの設定を使用します
vbBinaryCompare0バイナリ比較で検索します
vbTextCompare1テキスト比較で検索します
vbDatabaseCompare2Accessのみで使用します
データベース内の情報に基づいて検索します
Sub InStr関数()
    
    MsgBox InStr("abcde", "a")
    '>>> 1
    MsgBox InStr("abcde", "abc")
    '>>> 1
    MsgBox InStr(2, "aba", "a")
    '>>> 3
    
End Sub

InStrRev関数:文字列の位置を末尾から検索する

○構文
InStrRev(stringcheck,stringmatch,[start],[compare])
※[]内の引数は省略可能

stringcheckに検索される元の文字列、stringmatchに検索する文字列を指定します。

○処理
stringcheckの末尾からstringmatchを検索する処理を行います。
InStr関数の末尾から検索する版です。stringmatchが1つだけ含まれる場合、InStr関数と同じ戻り値を返します。

stringcheckの中にstringmatchが含まれる場合、stringmatchが始まる位置の文字数を返します。
stringmatchが複数ある場合、stringmatchが最後に現れる位置を返します。
stringmatchが含まれない場合、0が返ります。

startを指定すると、stringcheckのstart文字目以降から検索します。

<compareの定数>
compareは検索方法を指定できます。

定数内容
vbUseCopmareOption-1OptionCompareステートメントの設定を使用します
vbBinaryCompare0バイナリ比較で検索します
vbTextCompare1テキスト比較で検索します
vbDatabaseCompare2Accessのみで使用します
データベース内の情報に基づいて検索します
Sub InStrRev関数()
    
    MsgBox InStrRev("abcde", "a")
    '>>> 1
    MsgBox InStrRev("abcde", "abc")
    '>>> 1
    MsgBox InStrRev("aba", "a")
    '>>> 3
    
End Sub

文字列の変換

文字列を変換する関数をご紹介します。

Replace関数:特定の文字列を別の文字列に置換する

○構文
Replace(exp,find,replace,[start],[count],[compare])
※[]内の引数は省略可能

○処理
expの中に含まれるfindをreplaceに置換します。

expに置換する元の文字列を指定します。
findにexp内の検索する文字列を指定します。
replaceにfindを置換する文字列を指定します。

startを指定すると、expのstart文字目以降から検索します。

countには、findをreplaceに置換する回数を指定します。
例えば、1を指定すると、最初に見つかったfindのみ置換します。
省略すると、すべてのfindが置換されます。

ワークシート関数のReplace関数と同じです。

<compareの定数>
compareは検索方法を指定できます。

定数内容
vbUseCopmareOption-1OptionCompareステートメントの設定を使用します
vbBinaryCompare0バイナリ比較で検索します
vbTextCompare1テキスト比較で検索します
vbDatabaseCompare2Accessのみで使用します
データベース内の情報に基づいて検索します
Sub Replace関数()


    MsgBox Replace("abcde", "a", "A")
    '>>> "Abcde"
    
End Sub

StrReverse関数:文字列を反転する

○構文
StrReverse(exp)

○処理
expに指定した文字列を反転した文字列を返します。

Sub StrReverse関数()

    MsgBox StrReverse("abcde")
    '>>> "edcba"
    
End Sub

Format関数:文字列の表示形式を変換する

○構文
Format(exp,format)

○処理
expに指定した文字列を、formatに指定した表示形式で返します。

formatに指定する表示形式は、ワークシートの表示形式と同じ形式を指定できます。
文字列で指定します。

ワークシート関数のText関数と同じです。

Sub Format関数()
    
    MsgBox Format(1000, "#,##0")
    '>>> "1,000"
    MsgBox Format(1, "0.0%")
    '>>> "100.0%"
    MsgBox Format("2023/1/1", "yyyymmdd")
    '>>> "20230101"
    
End Sub

StrConv関数:文字列の種類を変換する

○構文
StrConv(string,conversion,[localeID])
※[]内の引数は省略可能

○処理
stirngに種類を変換する元の文字列を指定します。
conversionに変換する文字列の種類を指定します。
localeIDにLCIDを指定します。(よくわかりませんが)

<conversionの定数>

定数内容
vbUpperCase1大文字に変換します
vbLowerCase2小文字に変換します
vbProperCase3全ての単語の最初の文字を大文字に変換します
vbWide4半角文字を全角文字に変換します
vbNarrow8全角文字を半角文字に変換します
vbKatakana16ひらがなをカタカナに変換します
vbHiragana32カタカナをひらがなに変換します
vbUnicode64文字コードをUnicodeに変換します
vbFromUnicode128Unicodeからシステム既定の文字コードに変換します
Sub StrConv関数()

    MsgBox StrConv("abcde", vbUpperCase)
    '>>> "ABCDE"
    MsgBox StrConv("abcde", vbProperCase)
    '>>> "Abcde"

End Sub

LCase関数/UCase関数:アルファベットを小文字/大文字に変換する

○構文
LCase(string)
UCase(string)

○処理
LCase関数は、stringを小文字に変換します。StrConv関数のvbLowerCaseと同じです。

UCase関数は、stringを大文字に変換します。StrConv関数のvbUpperCaseと同じです。

ワークシート関数のLower関数/Upper関数と同じです。

Sub LCase関数_UCase関数()

    MsgBox LCase("ABCDE")
    '>>> "abcde"
    
    MsgBox UCase("abcde")
    '>>> "ABCDE"
    
End Sub

文字列の加工

文字列を加工する関数をご紹介します。

Trim関数/LTrim関数/RTrim関数:先頭と末尾のスペースを削除する

○構文
Trim(string)
LTrim(string)
RTrim(string)

○処理
Trim関数は、stringの先頭と末尾のスペースを削除した文字列を返します。
LTrim関数は、stringの先頭のスペース、RTrim関数は、stringの末尾のスペースを削除します。

半角スペースと全角スペースのどちらも削除します。

ワークシート関数のTrim関数と同じ名前ですが、スペースの削除の仕方が異なります。

Sub Trim関数他()
    
    MsgBox Trim(" abc ")
    '>>> "abc"
    
    MsgBox LTrim(" abc ")
    '>>> "abc "
    
    MsgBox RTrim(" abc ")
    '>>> " abc"
    
End Sub

Space関数:スペースを追加する

○構文
Space(number)

○処理
numberに指定した数値分の半角スペースを返します。
全角スペースを追加する場合は、後述のString関数を使用します。

Sub Space関数()

    MsgBox "a" & Space(5) & "b"
    '>>> a     b
    
End Sub

String関数:特定の文字列を繰り返す

○構文
String(number,character)

○処理
characterに指定した文字列を、numberに指定した数値分繰り返した文字列を返します。

Sub String関数()

    MsgBox String(5, "a")
    '>>> "aaaaa"
    

  '全角スペースを繰り返す
    MsgBox "a" & String(5, " ") & "b"
    '>>> "a     b"
    
End Sub

StrComp関数:文字列を比較する

○構文
StrComp(string1,string2,[compare])
※[]内の引数は省略可能

○処理
string1とstring2を比較し、比較結果を返します。
基本的に文字列の長さで比較されます。

比較結果の戻り値は以下の通りです。
string1 < string2 の場合:-1
string1 = string2 の場合:0
string1 > string2 の場合:1

compareに比較方法を指定します。

<compareの定数>

定数内容
vbUseCopmareOption-1OptionCompareステートメントの設定を使用します
vbBinaryCompare0バイナリ比較で検索します
vbTextCompare1テキスト比較で検索します
vbDatabaseCompare2Accessのみで使用します
データベース内の情報に基づいて検索します

StrCompとStrConvがややこしいですが、Compare(比較)とConversion(変換)で覚えると間違いにくいかと思います。

Sub StrComp関数()

    MsgBox StrComp("abcde", "abc")
    '>>> 1
    
End Sub

他にも文字列に関する関数はありますので、徐々に更新していきたいと思います。

コメント