文字列の内容 Format関数 日付関連の使用例

Format関数は日付や数値など表示形式を設定する場合に使用します。

Format関数の使用例について説明します。

Format関数の定義済みの内容などの説明は前回の内容を参考に確認お願い致します。

Format関数の構文

Format(Expression, [Format], [FirstDayOfWeek], [FirstWeekOfYear])

Format(日付や数値などの文字列, [書式指定式], [週の最初の曜日], [年内の最初の週])

[]内は省略可能です。

Format関数の使用例

・定義済みの書式で日付を表示(Long Date)

・定義済みの書式で日付を表示(Medium Date)

・定義済みの書式で日付を表示(Short Date)

・定義済みの書式で日付を表示(Long Time)

・定義済みの書式で日付を表示(Medium Time)

・定義済みの書式で日付を表示(Short Time)

・日付1桁の場合、先頭に0は付けない

・日付1桁の場合、先頭に0を付ける

・英語(省略形)表記の曜日

・日本語(省略形)表記の曜日

・英語表記の曜日

・日本語表記の曜日

・年、月、日を含むyyyy/mm/dd形式の日付を表示

・日本の場合は年月日で日付を表示

・曜日を表す数値

・その日が一年のうちで何週目かを表す数値

・月1桁の場合、先頭に0は付けない

・月1桁の場合、先頭に0を付ける

・英語(省略形)表記の月の名前

・英語表記の月の名前

・日本語表記の月の名前

・1年のうちで何番目の四半期かを表す数値

・年号の頭文字

・年号の頭文字の漢字1文字

・年号

・年号に基づく和暦1桁の場合、先頭に0は付けない

・年号に基づく和暦1桁の場合、先頭に0を付ける

・1年のうちで何日目かを表す数値

・西暦年の下2桁の数値

・西暦年の4桁の数値

・時間1桁の場合、先頭に0は付けない

・時間1桁の場合、先頭に0は付ける

・分1桁の場合、先頭に0は付けない

・分1桁の場合、先頭に0を付ける

・秒1桁の場合、先頭に0は付けない

・秒1桁の場合、先頭に0を付ける

・h:nn:ss形式の時刻

・AM/PM表記

・am/pm表記

・A/P表記

・a/p表記

・FirstDayOfWeekの設定方法

・FirstWeekOfYearの設定方法

の内容で説明をしていきます。

定義済みの書式で日付を表示(Long Date)

Sub format1()

    MsgBox Format("2022/04/03 16:49:45", "Long Date")
    
End Sub

定義済みの書式で日付を表示(Medium Date)

Sub format2()

    MsgBox Format("2022/04/03 16:49:45", "Medium Date")
    
End Sub

定義済みの書式で日付を表示(Short Date)

Sub format3()

    MsgBox Format("2022/04/03 16:49:45", "Short Date")
    
End Sub

定義済みの書式で日付を表示(Long Time)

Sub format4()

    MsgBox Format("2022/04/03 16:49:45", "Long Time")
    
End Sub

定義済みの書式で日付を表示(Medium Time)

Sub format5()

    MsgBox Format("2022/04/03 16:49:45", "Medium Time")
    
End Sub

定義済みの書式で日付を表示(Short Time)

Sub format6()

    MsgBox Format("2022/04/03 16:49:45", "Short Time")
    
End Sub

日付1桁の場合、先頭に0は付けない

Sub format7()

    MsgBox Format("2022/04/03", "d")
    
End Sub

日付1桁の場合、先頭に0を付ける

Sub format8()

    MsgBox Format("2022/04/03", "dd")
    
End Sub

英語(省略形)表記の曜日

Sub format9()

    MsgBox Format("2022/04/03", "ddd")
    
End Sub

日本語(省略形)表記の曜日

Sub format10()

    MsgBox Format("2022/04/03", "aaa")
    
End Sub

英語表記の曜日

Sub format11()

    MsgBox Format("2022/04/03", "dddd")
    
End Sub

日本語表記の曜日

Sub format12()

    MsgBox Format("2022/04/03", "aaaa")
    
End Sub

年、月、日を含むyyyy/mm/dd形式の日付を表示

Sub format13()

    MsgBox Format("2022年04月03日", "ddddd")
    
End Sub

日本の場合は年月日で日付を表示

Sub format14()

    MsgBox Format("2022/04/03", "dddddd")
    
End Sub

曜日を表す数値

日曜日が1、土曜日が7

Sub format15()

    MsgBox Format("2022/04/03", "w")
    
End Sub

その日が一年のうちで何週目かを表す数値

Sub format16()

    MsgBox Format("2022/04/03", "ww")
    
End Sub

月1桁の場合、先頭に0は付けない

Sub format17()

    MsgBox Format("2022/04/03", "m")
    
End Sub

月1桁の場合、先頭に0を付ける

Sub format18()

    MsgBox Format("2022/4/03", "mm")
    
End Sub

英語(省略形)表記の月の名前

Sub format19()

    MsgBox Format("2022/4/03", "mmm")
    
End Sub

英語表記の月の名前

Sub format20()

    MsgBox Format("2022/4/03", "mmmm")
    
End Sub

日本語表記の月の名前

Sub format21()

    MsgBox Format("2022/4/03", "oooo")
    
End Sub

1年のうちで何番目の四半期かを表す数値

Sub format22()

    MsgBox Format("2022/4/03", "q")
    
End Sub

年号の頭文字

Sub format23()

    MsgBox Format("2022/4/03", "g")
    
End Sub

年号の頭文字の漢字1文字

Sub format24()

    MsgBox Format("2022/4/03", "gg")
    
End Sub

年号

Sub format25()

    MsgBox Format("2022/4/03", "ggg")
    
End Sub

年号に基づく和暦1桁の場合、先頭に0は付けない

Sub format26()

    MsgBox Format("2022/4/03", "e")
    
End Sub

年号に基づく和暦 1桁の場合、先頭に0を付ける

Sub format27()

    MsgBox Format("2022/04/03", "ee")
    
End Sub

1年のうちで何日目かを表す数値

Sub format28()

    MsgBox Format("2022/04/03", "y")
    
End Sub

西暦年の下2桁の数値

Sub format29()

    MsgBox Format("2022/04/03", "yy")
    
End Sub

西暦年の4桁の数値

Sub format30()

    MsgBox Format("2022/04/03", "yyyy")
    
End Sub

時間1桁の場合、先頭に0は付けない

Sub format31()

    MsgBox Format("06:49:45", "h")
    
End Sub

時間1桁の場合、先頭に0は付ける

Sub format32()

    MsgBox Format("6:49:45", "hh")
    
End Sub

分1桁の場合、先頭に0は付けない

Sub format33()

    MsgBox Format("06:09:45", "n")
    
End Sub

分1桁の場合、先頭に0を付ける

Sub format34()

    MsgBox Format("06:9:45", "nn")
    
End Sub

秒1桁の場合、先頭に0は付けない

Sub format35()

    MsgBox Format("06:49:05", "s")
    
End Sub

秒1桁の場合、先頭に0を付ける

Sub format36()

    MsgBox Format("06:49:5", "ss")
    
End Sub

h:nn:ss形式の時刻

Sub format37()

    MsgBox Format("06:49:5", "ttttt")
    
End Sub

AM/PM表記

Sub format38()

    MsgBox Format("06:49:05", "AM/PM")
    
End Sub

am/pm表記

Sub format39()

    MsgBox Format("16:49:05", "am/pm")
    
End Sub

A/P表記

Sub format40()

    MsgBox Format("06:49:05", "A/P")
    
End Sub

a/p表記

Sub format41()

    MsgBox Format("16:49:05", "a/p")
    
End Sub

FirstDayOfWeekの設定方法

日曜日が 1(規定)、土曜日が 7

通常の場合

Sub format42()

    MsgBox Format("2022/04/04", "w")
    
End Sub

2022/04/04は月曜日のため2が表示されます。

月曜日を週の始まりとして設定

Sub format43()

    MsgBox Format("2022/04/04", "w", 2)
    
End Sub

規定値を2(月曜日)に設定したので戻り値が1になりました。

FirstWeekOfYearの設定方法

2022年1月前半のカレンダーです。

規定として1 月 1 日が含まれる週から開始します。

Sub format44()

    MsgBox Format("2022/01/2", "ww")
    
End Sub

2022/1/2は2週目なので、2が戻り値です。

定数説明
vbFirstJan111 月 1 日が含まれる週から開始します (既定)。
vbFirstFourDays24 日以上が含まれる最初の週が年の第 1 週目になります。
vbFirstFullWeek31 週間全体が含まれる最初の週がその年の第 1 週目になります。

FirstWeekOfYearの値を3に設定します。

Sub format45()

    MsgBox Format("2022/01/2", "ww", , 3)
    
End Sub

1 週間全体が含まれる最初の週がその年の第 1 週目になりますので、1が戻り値です。

今回はFormat関数の日付関連の使用例について記載させて頂きました。

次回はFormat関数の数値関連について記載していきます。

少しでも皆様の参考になれば幸いです。

文字列の内容 StrComp関数

StrComp関数は文字列の内容を比較します。

StrCompの構文

StrComp(string1, string2, [ compare ])

StrComp(文字列1, 文字列2, [ 比較方法 ])

[]内は省略可能です。省略した場合はバイナリーモードです。

比較方法はバイナリーモード(vbBinaryCompare)とテキストモード(vbTextCompare)があります。

戻り値の内容

条件戻り値
string1 が string2 より小さい-1
string1 が string2 と等しい0
string1 が string2 より大きい1
string1 または string2 が Null であるNull

文字列の比較方法

バイナリモードの場合は文字コードの番号で比較されます。

テキストモードの場合はひらがなやカタナカや英字の順番で比較されます。

バイナリモードで”a”(10進数で97)と”b”(10進数で98)で比較すると、”a”の方が小さいため-1が返却されます。

同様に”A”(10進数で65)と”a”(10進数で97)を比較すると、”A”が小さいため-1が返却されます。

テキストモードの場合は”A”(10進数で65)と”a”(10進数で97)を比較すると、等しいと認識されて0が返却されます。

StrCompの使用例

string1 が string2 より小さい

string1 が string2 と等しい

string1 が string2 より大きい

string1 または string2 が Null である

・比較方法を指定して実行する

・表から文字列を取得して比較する

の内容で説明をしていきます。

string1 が string2 より小さい

アルファベットで比較

Sub StrComp1()

    MsgBox "aとbを比較 戻り値" & StrComp("a", "b")
    
End Sub

数値で比較

Sub StrComp2()

    MsgBox "1と2を比較 戻り値" & StrComp(1, 2)
    
End Sub

ひらがなで比較

Sub StrComp3()

    MsgBox "あといを比較 戻り値" & StrComp("あ", "い")
    
End Sub

それぞれstring1 < string2 のため戻り値が-1です。

string1 が string2 と等しい

アルファベットで比較

Sub StrComp4()

    MsgBox "abとabを比較 戻り値" & StrComp("ab", "ab")
    
End Sub

数値で比較

Sub StrComp5()

    MsgBox "1と1を比較 戻り値" & StrComp(1, 1)
    
End Sub

ひらがなで比較

Sub StrComp6()

    MsgBox "あとあを比較 戻り値" & StrComp("あ", "あ")
    
End Sub

それぞれstring1 = string2 のため戻り値が0です。

string1 が string2 より大きい

アルファベットで比較

Sub StrComp7()

    MsgBox "bとacを比較 戻り値" & StrComp("b", "ac")
    
End Sub

数値で比較

Sub StrComp8()

    MsgBox "10と1を比較 戻り値" & StrComp(10, 1)
    
End Sub

ひらがなで比較

Sub StrComp9()

    MsgBox "いとあうを比較 戻り値" & StrComp("い", "あう")
    
End Sub

それぞれstring1 > string2 のため戻り値が1です。

string1 または string2 が Null である

Sub StrComp10()

    MsgBox "あとNullを比較 戻り値" & StrComp("あ", Null)
    
End Sub

string2がNullのため戻り値がNullです。

比較方法を指定して実行する

比較方法ですが、大文字小文字全角半角を比較するしないの設定が出来ます。

全角と半角で比較する(vbBinaryCompare)

Sub StrComp11()

    MsgBox "bとbを比較 戻り値" & StrComp("b", "b", vbBinaryCompare)
    
End Sub

全角と半角で比較しない(vbTextCompare)

Sub StrComp12()

    MsgBox "bとbを比較 戻り値" & StrComp("b", "b", vbTextCompare)
    
End Sub

全角と半角を比較していますが戻り値が0です。

大文字と小文字で比較する

Sub StrComp13()

    MsgBox "Bとbを比較 戻り値" & StrComp("B", "b")
    
End Sub

大文字と小文字で比較しない(vbTextCompare)

Sub StrComp14()

    MsgBox "Bとbを比較 戻り値" & StrComp("B", "b", vbTextCompare)
    
End Sub

大文字と小文字で比較していますが戻り値が0です。

表から文字列を取得して比較する

C列とD列の文字列を比較してE列に戻り値を設定します。

Sub StrComp15()
    
    Dim str1, str2 As String
    Dim i As Integer
    i = 2
    
    Do While Cells(i, 3) <> ""
        'セルから文字列を取得
        str1 = Cells(i, 3)
        str2 = Cells(i, 4)
        'セルにStrCompの戻り値を設定
        Cells(i, 5) = StrComp(str1, str2)
        
        i = i + 1
    Loop
        
End Sub

E列に比較した戻り値が設定されました。

今回はStrComp関数について記載させて頂きました。

少しでも皆様の参考になれば幸いです。

文字列の内容 Trim/LTrim/RTrim関数

Trim関数は、文字列の先頭と末尾に空白がある場合は、空白を削除する関数です。

LTrim関数は、文字列の先頭に空白がある場合は、空白を削除する関数です。

RTrim関数は、文字列の末尾に空白がある場合は、空白を削除する関数です。

構文

Trim(string)

Trim(文字列)

LTrim(string)

LTrim(文字列)

RTrim(string)

RTrim(文字列)

Trim/LTrim/RTrim関数の使用例

・半角の空白を文字列の先頭と末尾に設定

・全角の空白を文字列の先頭と末尾に設定

・記号を文字列の先頭と末尾に設定

・文字列に指定した文字列が無い場合

・半角と全角の空白を文字列の先頭と末尾に設定

・セルから文字列を取得してTrimで変換してセルに設定

・繰り返し処理(Trim/LTrim/RTrim関数)

の内容で説明をしていきます。

半角の空白を文字列の先頭と末尾に設定

Sub Trim1()
    
    Dim moji As String
    '文字列の先頭と末尾に空白を2つ設定
    moji = "  abcd  "
    
    MsgBox Trim(moji) & "," & LTrim(moji) & "," & RTrim(moji) & ","
    
End Sub

変数mojiに文字列の先頭と末尾に空白を2つ設定しています。

Trimでは先頭と末尾の空白、LTrimでは先頭の空白、RTrimでは末尾の空白が削除されました。

全角の空白を文字列の先頭と末尾に設定

Sub Trim2()
    
    Dim moji As String
    '文字列の先頭と末尾に全角の空白を2つ設定
    moji = "  abcd  "
    
    MsgBox Trim(moji) & "," & LTrim(moji) & "," & RTrim(moji) & ","
    
End Sub

変数mojiに文字列の先頭と末尾に全角の空白を2つ設定しています。

Trimでは先頭と末尾の全角の空白、LTrimでは先頭の全角の空白、RTrimでは末尾の全角の空白が削除されました。

記号を文字列の先頭と末尾に設定

Sub Trim3()
    
    Dim moji As String
    '文字列の先頭と末尾に空白を2つ設定
    moji = "? abcd /"
    
    MsgBox Trim(moji) & "," & LTrim(moji) & "," & RTrim(moji) & ","
    
End Sub

変数mojiに文字列の先頭に”? “と末尾に” /”の記号と空白を設定しました。

先頭と末尾に空白ではない文字が存在する場合、文字の間に空白がある場合でも空白は削除されません。

文字列に指定した文字列が無い場合

Sub Trim4()
    
    Dim moji As String

    
    MsgBox Trim(moji) & "," & LTrim(moji) & "," & RTrim(moji) & ","
    
End Sub

変数mojiに文字列を設定していません。

変数mojiに何も設定されていないため、Trimの間に設定している”,”しか表示されていません。

半角と全角の空白を文字列の先頭と末尾に設定

Sub Trim5()
    
    Dim moji As String
    '文字列の先頭と末尾に半角と全角の空白を設定
    moji = "  abcd  "
    
    MsgBox Trim(moji) & "," & LTrim(moji) & "," & RTrim(moji) & ","
    
End Sub

変数mojiに文字列の先頭と末尾に半角と全角の空白を設定しています。

Trimでは先頭と末尾の半角と全角の空白、LTrimでは先頭の半角と全角の空白、RTrimでは末尾の半角と全角の空白が削除されました。

セルから文字列を取得してTrimで変換してセルに設定

B2のセルに文字列” あいう “が設定されています。

Sub Trim6()
    
    Dim moji As String
    'セルから文字列を取得
    moji = Cells(2, 2)
    'セルにTrimで変換した値を設定
    Cells(2, 3) = Trim(moji)
    Cells(2, 4) = LTrim(moji)
    Cells(2, 5) = RTrim(moji)
        
End Sub

変換した値を各セルに設定しました。

繰り返し処理(Trim/LTrim/RTrim関数)

B列に文字列を設定します。

Sub Trim7()
    
    Dim moji As String
    Dim i As Integer
    i = 2
    
    Do While Cells(i, 2) <> ""
        'セルから文字列を取得
        moji = Cells(i, 2)
        'セルにTrimで変換した値を設定
        Cells(i, 3) = Trim(moji) & ","
        Cells(i, 4) = LTrim(moji) & ","
        Cells(i, 5) = RTrim(moji) & ","
        
        i = i + 1
    Loop
        
End Sub

C~E列に変換した値に”,”を付けて設定しています。

各列に”,”を付けた状態で文字列が表示されました。

今回はTrim/LTrim/RTrim関数を使用した使用例を複数記載致しました。

皆様の参考になれば幸いです。

文字列の内容 Len関数

Len関数は、文字列の文字数の取得や、型のサイズを取得します。

大体、文字数チェックや他の文字列の関数と併用して使う事が多いです。

Len関数の構文

Len(string | varname)

Len(文字列|型)

戻り値は数値です。

Len関数の使用例

・Len関数内に文字列を設定

・Len関数内に構造体を設定

・文字列に指定した文字列が無い場合

・セルから文字列を取得して文字数をセルに設定

・Mid関数、InStrRev関数との併用例

・繰り返し処理(Mid関数、InStrRev関数、Len関数)

の内容で説明していきます。

Len関数内に文字列を設定

Sub Len1()

    MsgBox "abcde 文字数:" & Len("abcde") & vbLf & "あいう 文字数:" & Len("あいう")
    
End Sub

vbLf はメッセージボックス内の改行です。

Len関数内に構造体を設定

Len関数内で構造体(Integer型、Long型など)のバイト数を取得します。

構造体の大きさを取得します。

Sub Len2()

    Dim i As Integer
    Dim l As Long
    MsgBox "Integer型:" & Len(i) & vbLf & "Long型:" & Len(l)
    
End Sub

変数は宣言しましたが値などは設定していません。

Integer型は2バイト、Long型は4バイト

文字列に指定した文字列が無い場合

Sub Len3()

    MsgBox Len("")
    
End Sub

Len関数内は空白です。

空白ですので文字数は0です。

セルから文字列を取得して文字数をセルに設定

B2に文字列を入力しています。

Sub Len4()

    Dim moji As String
    
    'セルから文字列を取得
    moji = Cells(2, 2)
    Cells(2, 3) = Len(moji)
    
End Sub

処理を実行するとC2に7の数値が設定されます。

Mid関数、InStrRev関数との併用例

B2にファイルのパスを含めたファイル名が設定されています。

ファイル名だけ取得したい場合、Mid関数とInStrRev関数とLen関数を使用すると簡単に取得します。

Mid関数は指定した文字数を取得します。文字列の内容 Mid関数参考にしてください。

InStrRev関数は文字列の末尾から検索した文字列の位置を返却します。

Sub Len5()

    Dim moji As String
    Dim ichi, mojisu As Integer
    
    'セルから文字列を取得
    moji = Cells(2, 2)
    '文字列の末尾から\の位置を取得
    ichi = InStrRev(moji, "\")
    '文字列の文字数を取得
    mojisu = Len(moji)
    'ファイル名を取得
    Cells(2, 3) = Mid(moji, ichi + 1, mojisu)
    
End Sub

処理の内容

1.B2セルから”C:\Desktop\写真一覧\写真\IMG00013.jpg”の内容を変数mojiに設定します。

2.InStrRev関数で”C:\Desktop\写真一覧\写真\IMG00013.jpg”の末尾から”\”の位置を取得します。変数ichiの値は19です。

3.Len関数で”C:\Desktop\写真一覧\写真\IMG00013.jpg”の文字数を取得する。変数mojisuの値は31です。

4.Mid関数で”C:\Desktop\写真一覧\写真\IMG00013.jpg”の文字列を19 + 1番目から31番目まで取得してC2に設定します。

ファイル名だけがC2に設定されました。

繰り返し処理(Mid関数、InStrRev関数、Len関数)

上記の内容のようにファイル名を記載している文字列の一覧があります。

一覧からファイル名だけを隣のセルに設定する方法を紹介します。

Sub Len6()

    Dim moji As String
    Dim ichi, mojisu As Integer
    Dim i As Integer
    
    i = 0
    Do While Cells(i + 2, 2) <> ""
    
        'セルから文字列を取得
        moji = Cells(i + 2, 2)
        '文字列の末尾から\の位置を取得
        ichi = InStrRev(moji, "\")
        '文字列の文字数を取得
        mojisu = Len(moji)
        'ファイル名を取得
        Cells(i + 2, 3) = Mid(moji, ichi + 1, mojisu)
        i = i + 1
        
    Loop
    
End Sub

Mid関数、InStrRev関数との併用例にDo Whileを追加致しました。

ファイル名だけがC列に設定されました。

今回はLen関数を使用した使用例を複数記載致しました。

皆様の参考になれば幸いです。

文字列の内容 LCase/UCase関数

LCase関数はアルファベットの大文字の文字列を小文字に変換します。

UCase関数はアルファベットの小文字の文字列を大文字に変換します。

データベースに書式を統一して登録したい時などに使用します。

LCase関数の構文

LCase(string)

LCase(文字列)

UCase関数の構文

UCase(string)

UCase(文字列)

LCase/UCase関数の使用例

・アルファベットを設定

・空白を設定

・アルファベットと記号の設定

・セルから文字列を取得して隣のセルに設定

・繰り返し処理(Do While文)

の内容で説明していきます。

アルファベットを設定

Sub LCaseUCase1()

    MsgBox LCase("AbCdE") & vbLf & UCase("AbCdE")

End Sub

L/UCase関数内で”AbCdE”を設定します。

vbLfは改行です。

LCaseですべて小文字に変換されました。

UCaseですべて大文字に変換されました。

空白を設定

Sub LCaseUCase2()

    MsgBox LCase("") & vbLf & UCase("")

End Sub

L/UCase関数内は空白です。

何も表示されません。

アルファベットと記号の設定

Sub LCaseUCase3()

    MsgBox LCase("A|B?c&d") & vbLf & UCase("A|B?c&d")

End Sub

L/UCase関数内で”A|B?c&d”を設定します。

LCaseで記号以外は小文字に変換されました。

UCaseで記号以外は大文字に変換されました。

セルから文字列を取得して隣のセルに設定

セルのB2に”AbCdE”が入力されています。

B2の値をLCaseとUCaseを使用した結果をセルに表示します。

Sub LCaseUCase4()

    Dim moji As String
    
    'セルから文字列を取得
    moji = Cells(2, 2)
    Cells(2, 3) = LCase(moji)
    Cells(2, 4) = UCase(moji)
    
End Sub

小文字と大文字に変換されました。

繰り返し処理(Do While文)

B列に複数の文字列が入力されています。

B列の値をLCaseとUCaseを使用した結果をセルに表示します。

Sub LCaseUCase5()

    Dim moji As String
    Dim i As Integer
    
    i = 0
    'B列が空白でない間繰り返し処理
    Do While Cells(2 + i, 2) <> ""
        moji = Cells(2 + i, 2)
        Cells(2 + i, 3) = LCase(moji)
        Cells(2 + i, 4) = UCase(moji)
        i = i + 1
    Loop
    
End Sub

アルファベットが小文字と大文字に変換されました。

今回はLCase/UCase関数を使用した使用例を複数記載致しました。

皆様の参考になれば幸いです。

文字列の内容 StrConv関数

StrConv関数は文字列を指定された変換方法で文字列を返します。

データベースに入力内容の書式を統一して登録する時などに利用できます。

StrConv関数の構文

StrConv(string, conversion, [ LCID ])

StrConv(文字列, 変換方法, [ロケールID])

[]内は省略可能です。

ロケールIDは言語を表すコードであり、Windowsの地域設定などでも使用されています。

既定値はシステムが使用する LCID です。

コントロール パネル → 時計と地域 → 地域の内容で確認できます。

StrConv関数の使用例

・文字列を大文字に変換します。vbUpperCase

・文字列を小文字に変換します。vbLowerCase

・文字列内のすべての単語の最初の文字を大文字に変換します。vbProperCase

・文字列内の半角文字 (1 バイト) を全角文字 (2 バイト) に変換します。vbWide

・文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換します。vbNarrow

・文字列内のひらがな文字をカタカナ文字に変換します。vbKatakana

・文字列内のカタカナ文字をひらがな文字に変換します。vbHiragana

・変換内容の組み合わせ vbKatakana + vbNarrow

の内容で説明していきます。

文字列を大文字に変換します。vbUpperCase

Sub StrConv1()
    
    MsgBox StrConv("Abc", vbUpperCase)

End Sub

“A”だけ大文字で”bc”は小文字です。

“BC”も大文字になりました。

Sub StrConv2()
    
    MsgBox StrConv("Abc", 1)

End Sub

vbUpperCaseではなく、1で処理を実行することも可能です。

文字列を小文字に変換します。vbLowerCase

Sub StrConv3()
    
    MsgBox StrConv("Abc", vbLowerCase)

End Sub
Sub StrConv4()
    
    MsgBox StrConv("Abc", 2)

End Sub

“A”だけ大文字で”bc”は小文字です。

“A”が小文字の”a”に変換されました。

文字列内のすべての単語の最初の文字を大文字に変換します。vbProperCase

Sub StrConv5()
    
    MsgBox StrConv("abc def/ghi", vbProperCase)

End Sub
Sub StrConv6()
    
    MsgBox StrConv("abc def/ghi", 3)

End Sub

“c”と”d”の間に” “、”f”と”g”の間に”/”を入力しています。

文字列内のすべての単語の最初の文字を大文字にするので”a”と”d”が大文字に変換されました。

文字列内の半角文字 (1 バイト) を全角文字 (2 バイト) に変換します。vbWide*

東アジアのロケールIDに適用されます。

Sub StrConv7()
    
    MsgBox StrConv("a <>/?-~", vbWide)

End Sub
Sub StrConv8()
    
    MsgBox StrConv("a <>/?-~", 4)

End Sub

それぞれの文字と記号を設定しています。

全角文字に変換されました。

文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換します。vbNarrow*

東アジアのロケールIDに適用されます。

Sub StrConv9()
    
    MsgBox StrConv("c、< >・あ", vbNarrow)

End Sub
Sub StrConv10()
    
    MsgBox StrConv("c、< >・あ", 8)

End Sub

それぞれの文字と記号を設定しています。

全角文字が半角文字に変換されました。

“あ”は全角文字ですが半角に変換されません。

文字列内のひらがな文字をカタカナ文字に変換します。vbKatakana

日本にのみ適用されます。

Sub StrConv11()
    
    MsgBox StrConv("あイうエお", vbKatakana)

End Sub
Sub StrConv12()
    
    MsgBox StrConv("あイうエお", 16)

End Sub

“あイうエお”が設定されています。

すべてカタカナに変換されました。

文字列内のカタカナ文字をひらがな文字に変換します。vbHiragana

日本にのみ適用されます。

Sub StrConv13()
    
    MsgBox StrConv("あイうエお", vbHiragana)

End Sub
Sub StrConv14()
    
    MsgBox StrConv("あイうエお", 32)

End Sub

“あイうエお”が設定されています。

すべてひらがなに変換されました。

変換内容の組み合わせ vbKatakana + vbNarrow

Sub StrConv17()
    
    MsgBox StrConv("あいうえお", vbKatakana + vbNarrow)

End Sub
Sub StrConv18()
    
    MsgBox StrConv("あいうえお", 16 + 8)

End Sub

“あいうえお”が設定しています。

カタカナにするのと半角にするのをいっぺんに行います。

半角カタカナに変換されました。

また、vbUnicodeとvbFromUnicodeもあります。

vbUnicode(64)は文字コードをUnicodeに変換します。

vbFromUnicode(128)は文字コードをUnicodeからシステム既定の文字コードに変換します。

今回はStrConv関数を使用した使用例を複数記載致しました。

皆様の参考になれば幸いです。

文字列の内容 CStr関数

CStr関数は、指定した値を文字列に変換します。

数値や日付などを文字列に変換したい場合などに使用します。

CStr関数の構文

CStr(expression)

CStr(文字列に変換したい値)

Cstr関数の使用例

・数値を文字列に変換

・日付を文字列に変換

・時間を文字列に変換

・日付と時間を文字列に変換

・文字列の結合でCStr関数を使用

・セルから値を取得してString型の配列に格納

の内容で説明していきます。

数値を文字列に変換

Sub CStr1()
    
    MsgBox CStr(3)

End Sub

CStrに数値の3を設定しています。

日付を文字列に変換

Sub CStr2()
    
    MsgBox CStr(Date)

End Sub

CStrに本日の日付を設定しています。

Dateは本日の日付を取得します。

時間を文字列に変換

Sub CStr3()
    
    MsgBox CStr(Time())

End Sub

CStrに今の時間を設定しています。

Time()で今の時間を取得します。

日付と時間を文字列に変換

Sub CStr4()
    
    MsgBox CStr(Now())

End Sub

CStrに今の時間と日付を設定しています。

Now()で今の時間を取得します。

文字列の結合でCStr関数を使用

CStr関数が必要になる場合を記載致します。

Sub CStr5()
    
    MsgBox "今は" + Now() + "です"

End Sub

上記のコードを記載するとエラーが発生します。

MsgBoxを呼び出し時にString型以外の足し算はエラーになります。

CStr関数を使用した修正方法

Sub CStr6()
    
    MsgBox "今は" + CStr(Now()) + "です"

End Sub

Now()をCStrに設定しています。

エラーが発生することなく表示されました。

大体の方はCStrで書かず&でコードを書くと思います。

Sub CStr7()
    
    MsgBox "今は" & Now() & "です"

End Sub

セルから値を取得してString型の配列に格納

上記の内容は文字列、日付、数値のデータがあります。

こちらを文字列に変換して配列に格納していきます。

Sub CStr8()

    Dim neko(3) As String
    Dim i As Integer
    
    i = 0
    Do While Cells(2, i + 2) <> ""
        neko(i) = CStr(Cells(2, i + 2))
        i = i + 1
    Loop
    
    Cells(2, i + 2) = Join(neko)

End Sub

2行目のデータを配列に格納します。

格納したデータをF列に表示します。

B~E列の値がF列に表示されました。

配列にString型で格納されています。

CStr関数は、取得する値が不明でもString型に変換する事でデータの確認などを行えます。

今回はCStr関数について記載させて頂きました。

少しでも皆様の参考になれば幸いです。

文字列の内容 Split関数

Split関数は文字列を指定の文字で分割して、分割した文字列を1次元配列に格納します。

ファイルから取得した文字列の内容を調べたい時などに利用します。

Splitの構文

Split(式, [ 区切り 記号 , [ limit, [ compare ]]])

Split(文字列, [区切りたい文字, [返す要素数, [区切り文字の比較方法]]])

[]内は省略可能です。

Split関数は配列を返すので、配列を宣言する必要があります。

Split関数の使用例

・Split関数内に文字列を設定

・Split関数内に文字列が無い場合

・Split関数内に区切りたい文字列を設定

・Split関数内に返す要数を設定

・Split関数内に区切り文字の比較方法を設定

・セルから文字列を取得してセルに設定

繰り返し処理(文字列、区切り文字)

の内容で説明していきます。

Split関数内に文字列を直接設定

Sub Split1()

    Dim str() As String
    str = Split("aaa bbb ccc")
    MsgBox Join(str, vbLf)

End Sub

区切り文字を指定していない場合は” “で判定して配列に格納します。

Join関数を利用して配列に格納している文字列の間に改行を設定しています。

Join関数の内容がご不明な場合は文字列の内容 Join関数を確認してください。

Split関数で”aaa bbb ccc”が” “毎に分割されて、strの配列に格納されました。

Join関数で配列の要素の間に改行を結合させて表示しています。

Sub Split2()

    MsgBox Join(Split("aaa bbb ccc"), vbLf)

End Sub

この様な記載も可能です。

Split関数内に文字列が無い場合

Sub Split3()

    Dim str() As String
    str = Split("")
    MsgBox Join(str, vbLf)

End Sub

Split関数内に文字列がないので何も表示されません。

Split関数内に区切りたい文字列を設定

Sub Split4()

    Dim str() As String
    str = Split("aaa bbb_ccc", "_")
    MsgBox Join(str, vbLf)

End Sub

Split関数内で区切り文字を”_”で設定します。

Split関数内の文字列にbとcの間に”_”があるので、分割して配列に格納されました。

区切り文字が”_”のため” “は判断されません。

Split関数内に返す要素数を設定

Sub Split5()

    Dim str() As String
    str = Split("aaa_bbb_ccc", "_", 2)
    MsgBox Join(str, vbLf)

End Sub

Split関数内で”_”が文字列の中に2つあります。

返す要素数を2に設定しています。

配列の要素数を2で設定したので、1つ目の”_”で区切られ配列に格納されました。

ちなみに返す要素数を-1にするとすべて返します。

区切り文字を省略した場合は” “で判定されます。

Sub Split6()

    Dim str() As String
    str = Split("aaa bbb ccc", , 2)
    MsgBox Join(str, vbLf)

End Sub

Split関数内に区切り文字の比較方法を設定

比較方法ですが、大文字小文字を比較するしないの設定が出来ます。

0 or vbBinaryCompare で大文字小文字を比較します。

Sub Split7()

    Dim str() As String
    str = Split("aaaebbbEccc", "E", , 0)
    MsgBox Join(str, vbLf)

End Sub
Sub Split8()

    Dim str() As String
    str = Split("aaaebbbEccc", "E", , vbBinaryCompare)
    MsgBox Join(str, vbLf)

End Sub

aとbの間にe、bとcの間にEがあります。

区切り文字は”E”です。

“E”で判定された部分で分割されて、配列に格納されています。

1 or vbTextCompare で大文字小文字を比較しません。

Sub Split9()

    Dim str() As String
    str = Split("aaaebbbEccc", "E", , 1)
    MsgBox Join(str, vbLf)

End Sub
Sub Split10()

    Dim str() As String
    str = Split("aaaebbbEccc", "E", , vbTextCompare)
    MsgBox Join(str, vbLf)

End Sub

aとbの間にe、bとcの間にEがあります。

区切り文字は”E”です。

“e”と”E”で判定された部分で分割されて、配列に格納されています。

セルから文字列を取得してセルに設定

B2の文字列とC2の区切り文字を取得して配列の内容をD2に表示させます。

Sub Split11()
    Dim str() As String
    Dim kugiri, moji As String
    
    'セルから文字列を取得
    moji = Cells(2, 2)
    'セルから区切り文字を取得
    kugiri = Cells(2, 3)
    'Splitで配列に格納
    str = Split(moji, kugiri)
    '配列の内容をセルに表示
    Cells(2, 4) = Join(str, vbLf)
    
End Sub

配列の内容がD2に表示されました。

繰り返し処理(文字列、区切り文字)

B列の文字列とC列の区切り文字を取得して配列の内容をD列に表示させます。

C5には” “を入力していて、C6には空白です。

Sub Split12()
    Dim str() As String
    Dim kugiri, moji As String
    Dim i As Integer
    
    i = 2
    
    Do While Cells(i, 2) <> ""
        'セルから文字列を取得
        moji = Cells(i, 2)
        'セルから区切り文字を取得
        kugiri = Cells(i, 3)
        'Splitで配列に格納
        str = Split(moji, kugiri)
        '配列の内容をセルに表示
        Cells(i, 4) = Join(str, vbLf)
        i = i + 1

    Loop


End Sub

B列が空白になるまで繰り返し処理を行っています。

配列の内容がD列に表示されます。

区切り文字をセルに空白で設定しているの場合は、そのまま表示されます。

今回はSplit関数について記載させて頂きました。

少しでも皆様の参考になれば幸いです。

文字列の内容 InStr関数

InStr関数は文字列の中に指定した文字列が存在するか確認したい時に使用します。

例えば、入力チェック等で利用できます。

InStrの構文

InStr([ start ], string1string2, [ compare ])

InStr([検索開始位置], 文字列, 指定した文字列, [文字列の比較方法])

[]内は省略可能です。

InStr関数を使用すると指定した文字列の位置が数値で返されます。

InStr関数の使用例

・InStr関数内に文字列を直接設定

・文字列に指定した文字列が無い場合

・指定した文字列が複数存在する場合

・InStr関数で開始位置を設定

・InStr関数で比較方法を設定

・セルから文字列を取得してセルに設定

繰り返し処理(指定した文字列)

・繰り返し処理(文字列、指定した文字列)

・繰り返し処理(文字列、指定した文字列、比較方法を設定)

の内容で説明していきます。

InStr関数内に文字列を直接設定

Sub InStr1()

    MsgBox InStr("abcde", "c") & "番目にあります"

End Sub

指定した文字列が”c”なので3が返されます。

文字列に指定した文字列が無い場合

Sub InStr2()

    MsgBox InStr("abcde", "f") & "番目にあります"

End Sub

指定した文字列が”f”なので見つからず0が返されます。

指定した文字列が複数存在する場合

Sub InStr3()

    MsgBox InStr("abcdec", "c") & "番目にあります"

End Sub

3番目と6番目に指定した文字列の”c”があります。

最初に見つけた位置を返すため、3が返されました。

InStr関数で開始位置を設定

Sub InStr4()

    MsgBox InStr(4, "abcdec", "c") & "番目にあります"

End Sub

3番目と6番目に指定した文字列の”c”があります。

検索する開始位置を4に設定しています。

開始位置が4のため6番目の”c”の位置を返します。

InStr関数で比較方法を設定

比較方法ですが、大文字小文字を比較するしないの設定が出来ます。

比較方法を設定する場合は、開始位置も設定しないとエラーになります。

0 or vbBinaryCompare で大文字小文字を比較します。

Sub InStr5()

    MsgBox InStr(1, "abcdeC", "C", 0) & "番目にあります"

End Sub
Sub InStr6()

    MsgBox InStr(1, "abcdeC", "C", vbBinaryCompare) & "番目にあります"

End Sub

3番目に”c”、6番目に”C”があり、”C”を指定します。

6番目の”C”の位置が返されます。

1 or vbTextCompare で大文字小文字を比較しません。

Sub InSt7()

    MsgBox InStr(1, "abcdeC", "C", 1) & "番目にあります"

End Sub
Sub InStr8()

    MsgBox InStr(1, "abcdeC", "C", vbTextCompare) & "番目にあります"

End Sub

3番目に”c”、6番目に”C”があり、”C”を指定します。

大文字小文字を比較しないため、3番目の”c”の位置が返されます。

開始位置を設定しない時に発生するエラー

Sub InStrErr()

    MsgBox InStr("abcdeC", "C", vbTextCompare) & "番目にあります"

End Sub

開始位置を設定していません。

処理を実行時にこのエラーが発生します。

セルから文字列を取得してセルに設定

B2の文字列をC2の文字列が検索して結果をD2に表示させます。

Sub InStr9()
    Dim str, find, rep As String
    str = Cells(2, 2)
    find = Cells(2, 3)
    
    Cells(2, 4) = InStr(str, find) & "番目にあります。"

End Sub

“c”が3番目にあるので、3の値が返されてD2に結果が表示されました。

繰り返し処理(指定した文字列)

B2の文字列を取得して、C列にある指定した文字列が含まれるか確認します。

Sub InStr10()

    Dim str, kekka As String
    Dim find() As String
    Dim i, retuNum As Integer
    str = Cells(2, 2)
    '指定した文字列の列番号を設定します
    retuNum = 3
    '指定した文字列のリストを設定します
    find() = リストの設定(retuNum)
    
    i = 1
    kekka = ""
    '指定した文字列をリスト分繰り返します
    For Each Var In find
        '指定した文字列が存在するか確認します。

        If InStr(str, find(i - 1)) <> 0 Then
            kekka = kekka & find(i - 1) & "が" & InStr(str, find(i - 1)) & "番目にあります。"
        End If
        
        i = i + 1
    Next
    
    If kekka = "" Then
        kekka = "指定した文字列がありません。"
    End If

    Cells(2, 4) = kekka

End Sub

Functionを使用して、リストの設定という関数みたいな物を作成しています。

リストの設定の内容は指定した文字列のリストを作成して返しています。

Function リストの設定(ByVal retuNum As Integer) As String()
    
    Dim list() As String
    Dim i As Integer
    Dim kazu As Long
    
    kazu = Cells(1000, retuNum).End(xlUp).Row
    ReDim list(kazu - 2)
    
    For i = 2 To kazu
        list(i - 2) = Cells(i, retuNum)
    Next i
    
    リストの設定 = list()
    
End Function

指定した文字列の”c”と”bc”があるため結果がD2に表示されます。

繰り返し処理(文字列、指定した文字列)

B列の文字列をC2の文字列が検索して、結果をD列に表示させます。

Sub InStr11()
    
    Dim kekka As String
    Dim str() As String
    Dim find() As String
    Dim i, j, retuNum As Integer
        
    '文字列の列番号を設定します
    retuNum = 2
    '文字列のリストを設定します
    str() = リストの設定(retuNum)
    
    '指定した文字列の列番号を設定します
    retuNum = 3
    '指定した文字列のリストを設定します
    find() = リストの設定(retuNum)
    
    i = 1
    '文字列をリスト分繰り返します
    For Each Var In str
        j = 1
        kekka = ""
        '指定した文字列をリスト分繰り返します
        For Each Var2 In find
            '指定した文字列が存在するか確認します
            If InStr(str(i - 1), find(j - 1)) <> 0 Then
                kekka = kekka & find(j - 1) & "が" & InStr(str(i - 1), find(j - 1)) & "番目にあります。"
            End If
            
            j = j + 1
        Next
        
        If kekka = "" Then
            kekka = "指定した文字列がありません。"
        End If
        
        Cells(i + 1, 4) = kekka
        i = i + 1
    Next
    
End Sub

リストの設定の内容は指定した文字列のリストと文字列のリストを作成して返しています。

Function リストの設定(ByVal retuNum As Integer) As String()
    
    Dim list() As String
    Dim i As Integer
    Dim kazu As Long
    
    kazu = Cells(1000, retuNum).End(xlUp).Row
    ReDim list(kazu - 2)
    
    For i = 2 To kazu
        list(i - 2) = Cells(i, retuNum)
    Next i
    
    リストの設定 = list()
    
End Function

それぞれの行で指定した文字列が存在するか確認して、結果を表示しています。

繰り返し処理(文字列、指定した文字列、比較方法を設定)

大文字小文字を比較しない方法で複数の文字列と指定した文字列の確認を行います。

C列に大文字のBを設定しています。

Sub InStr12()

    Dim kekka As String
    Dim str() As String
    Dim find() As String
    Dim i, j, retuNum As Integer
        
    '文字列の列番号を設定します
    retuNum = 2
    '文字列のリストを設定します
    str() = リストの設定(retuNum)
    
    '指定した文字列の列番号を設定します
    retuNum = 3
    '指定した文字列のリストを設定します
    find() = リストの設定(retuNum)
    
    i = 1
    '文字列をリスト分繰り返します
    For Each Var In str
        j = 1
        kekka = ""
        '指定した文字列をリスト分繰り返します
        For Each Var2 In find
            '指定した文字列が存在するか確認します。
            If InStr(1, str(i - 1), find(j - 1), 1) <> 0 Then
                kekka = kekka & find(j - 1) & "が" & InStr(1, str(i - 1), find(j - 1), 1) & "番目にあります。"
            End If
            
            j = j + 1
        Next
        
        If kekka = "" Then
            kekka = "指定した文字列がありません。"
        End If
        
        Cells(i + 1, 4) = kekka
        i = i + 1
    Next
    
End Sub

InStr関数を使用している所で開始位置と比較方法を1に設定しています。

Function リストの設定(ByVal retuNum As Integer) As String()
    
    Dim list() As String
    Dim i As Integer
    Dim kazu As Long
    
    kazu = Cells(1000, retuNum).End(xlUp).Row
    ReDim list(kazu - 2)
    
    For i = 2 To kazu
        list(i - 2) = Cells(i, retuNum)
    Next i
    
    リストの設定 = list()
    
End Function

大文字小文字を比較しないで表示されました。

“ぁぃぅぇぉ”は小文字判定されないので注意してください。

今回はInStr関数について記載させて頂きました。

少しでも皆様の参考になれば幸いです。

文字列の内容 Join関数

Join関数は文字列を結合する関数です。

文字列型配列に任意の区切り文字を付けたい時などに使用します。

Join関数の構文

Join(sourcearray, [delimiter])

Join(1次元配列, [区切り文字])

[]内は省略可能です。

省略を行った場合は文字列と文字列の間に空白が入ります。

Join関数の使用例

・文字列の結合方法

・文字列型配列に文字列が無い場合

・文字列型配列が2次元配列の場合

・セルから文字列を取得して結合した文字列をセルに設定

Excelのデータ一覧からSQLのINSERT文を作成

・文字列の結合の処理時間

の内容で説明していきます。

文字列の結合方法

文字列の結合を行う方法は複数存在します。

・”+”を使用する場合

・”&”を使用する場合

・Joinを使用する場合

・Joinを使用して任意の区切り文字を設定する場合

を紹介します。

“+”を使用する場合

Sub 文字列の結合1()
    Dim str As String
    str = "abc" + " " + "def"
    MsgBox str
End Sub

“abc”と” “と”def”の結合なので “abc def”が表示されます。

“&”を使用する場合

Sub 文字列の結合2()
    Dim str As String
    str = "abc" & " " & "def"
    MsgBox str
End Sub

“abc”と” “と”def”の結合なので “abc def”が表示されます。

Joinを使用する場合

Sub 文字列の結合3()
    Dim str(1) As String
    str(0) = "abc"
    str(1) = "def"
    MsgBox Join(str)
End Sub

strの1次元配列に”abc”と”def”が設定されています。

任意の区切り文字を設定していないため”abc”と”def”の間に” “が入ります。

Joinを使用して任意の区切り文字を設定する場合

Sub 文字列の結合4()
    Dim str(1) As String
    str(0) = "abc"
    str(1) = "def"
    MsgBox Join(str, ",")
End Sub

任意の区切り文字を”,”に設定しました。

任意の区切り文字を”,”に設定してしたため”abc”と”def”の間に”,”が入ります。

文字列型配列に文字列が無い場合

Sub Join1()
    Dim str() As String
    MsgBox Join(str)
End Sub

配列には何も設定していません。

何も設定されていないため何も表示されません。

文字列型配列が2次元配列の場合

Sub Join2()
    Dim str() As String
    ReDim str(1, 2)
    str(0, 0) = "a"
    str(0, 1) = "b"
    str(0, 2) = "c"
    str(1, 0) = "d"
    str(1, 1) = "e"
    str(1, 2) = "f"
    
    MsgBox Join(str)
End Sub

Joinは1次元配列しか設定できませんが、2次元配列を設定します。

1次元配列しか設定できないのでエラーが発生します。

セルから文字列を取得して結合した文字列をセルに設定

セルに複数の行が設定されています。

A~D列の値を取得し、E列に結合して表示させます。

Sub Join3()
    Dim str() As String
    Dim i, j As Integer
    Dim gyo, retu As Integer
    
    '入力されている行数を取得
    gyo = Cells(1, 1).End(xlDown).Row
    '入力されている列数を取得
    retu = Cells(1, 1).End(xlToRight).Column
    
    '配列の設定
    ReDim str(retu - 1)
    
    '文字列の結合を繰り返し
    For i = 2 To gyo
        For j = 1 To retu
            'セルの文字列を配列に設定
            str(j - 1) = Cells(i, j)
        Next j
        '配列の文字列を列の末端の隣のセルに設定
        Cells(i, retu + 1) = Join(str, ",")
    Next i
    
End Sub

任意の区切り文字は”,”を設定しています。

A~D列のセルの値が”,”区切りでE列に設定されました。

文字列の結合の処理時間

文字列の結合方法で3つご紹介させて頂きました。

Joinを使用した場合が処理時間が速いです。

簡単な文字列の結合でしたら処理時間など気になりませんが、結合する文字列が大量だった場合、処理時間が変わってきます。

処理時間の計測方法

・47都道府県名のデータを”,”で区切ます。

・それを1000回繰り返しString型に設定した時間を計測します。

B列に47都道府県を設定しています。

“+”を使用する場合

Sub 結合時間の計測1()
    Dim setStr As String
    Dim i, j As Integer
    
    '計測時間の宣言
    Dim startTime As Double
    Dim endTime As Double
    Dim processTime As Double

    '開始時間取得
    startTime = Timer
    
    '初期設定
    setStr = ""

    '文字列の結合を繰り返し
    For i = 1 To 1000
        For j = 1 To 47
            'セルの文字列を配列に設定
            setStr = setStr + Cells(j, 2) + ","
        Next j
    Next i
    
    '終了時間取得
    endTime = Timer
    
    '処理時間表示
    processTime = endTime - startTime
    MsgBox "処理時間:" & processTime
    
End Sub

“&”を使用する場合

Sub 結合時間の計測2()
    Dim setStr As String
    Dim i, j As Integer
    
    '計測時間の宣言
    Dim startTime As Double
    Dim endTime As Double
    Dim processTime As Double

    '開始時間取得
    startTime = Timer
    
    '初期設定
    setStr = ""

    '文字列の結合を繰り返し
    For i = 1 To 1000
        For j = 1 To 47
            'セルの文字列を配列に設定
            setStr = setStr & Cells(j, 2) & ","
        Next j
    Next i
    
    '終了時間取得
    endTime = Timer
    
    '処理時間表示
    processTime = endTime - startTime
    MsgBox "処理時間:" & processTime
    
End Sub

Joinを使用する場合

Sub 結合時間の計測3()
    Dim str(46999) As String
    Dim i, j As Integer

    Dim setStr As String
    
    '計測時間の宣言
    Dim startTime As Double
    Dim endTime As Double
    Dim processTime As Double

    '開始時間取得
    startTime = Timer

    '文字列の結合を繰り返し
    For i = 1 To 1000
        For j = 1 To 47
            'セルの文字列を配列に設定
            str(((i - 1) * 47) + j - 1) = Cells(j, 2)
        Next j
    Next i
    '配列の文字列をString型に設定
    setStr = Join(str, ",")
    
    '終了時間取得
    endTime = Timer
    
    '処理時間表示
    processTime = endTime - startTime
    MsgBox "処理時間:" & processTime


End Sub

処理時間のまとめ

・”+”を使用する場合 0.5秒

・”&”を使用する場合 0.484375秒

・Joinを使用する場合 0.14453125秒

上記の通りJoinを使用した場合が一番速いので、データ量が多い場合はJoinを使用することをお勧めします。

今回はJoin関数を紹介させて頂きました。

皆様の参考になれば幸いです。