#author("2023-11-18T20:21:13+09:00","","")
#navi(../)
* CSVなどの区切り文字がある文字列を配列に格納する Split関数 [#ga767db5]
カンマ区切り、タブ区切り、パイプ区切りなど特定の区切り文字が含まれる文字列を~
区切り文字で分割し配列に格納するSplit関数についての記事になります。~
Split関数を使ったVBAサンプルコードと実行例を以下に記します。

#contents
#htmlinsert(office_ads_top.html)

* 関連サイト [#pc89be97]
-[[Microsoft Learn: Split 関数(Visual Basic for Applications)>https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/split-function]]

* 動作確認環境 [#d8059349]
- Windows 10 22H2
- Microsoft® Excel® for Microsoft 365 MSO (バージョン 2310 ビルド 16.0.16924.20054) 32 ビット

* Split関数の仕様 [#xc28ef5b]
[[Split 関数>https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/split-function]]ページの抜粋になります。

-構文
 Split(expression, [ delimiter, [ limit, [ compare ]]])
|~パーツ|~説明|
|expression|必ず指定します。&br;サブ文字列と区切り記号が含まれる文字列式です。&br;expression が長さ 0 の文字列 ("") の場合、Split は、空の配列、つまり、要素とデータのない配列を返します。|
|delimiter|オプション。&br;サブ文字列の制限を識別するために使用する文字列です。&br;省略すると、空白文字 (" ") が delimiter とみなされます。&br;区切り記号が長さ 0 の文字列の場合は、式文字列全体を含む単一要素配列が返されます。|
|limit|オプション。&br;返される部分文字列の数。-1 は、すべての部分文字列が返されることを示します。|
|compare|省略可能。&br;サブ文字列を評価するときに使用する比較の種類を示す数値です。&br;値については、「設定」セクションを参照してください。|
#br
-設定~
compare 引数には、次の値を指定できます。
|~定数|~値|~説明|
|vbUseCompareOption|-1|Option Compare ステートメントの設定を使用して比較を実行します。|
|vbBinaryCompare|0|バイナリ比較を実行します。|
|vbTextCompare|1|テキスト比較を実行します。|
|vbDatabaseCompare|2|Microsoft Access のみ。&br;データベース内の情報に基づいて比較を実行します。|

* VBAサンプルコードと実行結果 [#k53732cb]
以下にSplit関数を使ったVBAサンプルコードと実行結果を記します。

** VBA サンプルコード [#da7c9627]
 Option Explicit
 
 Sub SplitSample()
   
   
   Dim commaStr As String: commaStr = "Windows,macOS,Ubuntu,Debian,Arch Linux,FreeBSD,OpenBSD"
   Dim tabStr As String: tabStr = "Apples" & vbTab & "oranges" & vbTab & "bananas" & vbTab & "grapes" & vbTab & "pineapples"
   Dim pipeStr As String: pipeStr = "Toyota|Suzuki|Daihatsu|Honda|Nissan"
   
   
   Dim retArray() As String
   Dim msg As String: msg = ""
   Dim i As Long
   
   'Split comma string.
   retArray = Split(commaStr, ",")
   For i = 1 To UBound(retArray)
     msg = msg & i & ": " & retArray(i - 1) & vbCrLf
   Next i
   MsgBox msg, vbOKOnly, "Split(commaStr, "","")"
   
   'Split tab string.
   msg = ""
   retArray = Split(tabStr, vbTab)
   For i = 1 To UBound(retArray)
     msg = msg & i & ": " & retArray(i - 1) & vbCrLf
   Next i
   MsgBox msg, vbOKOnly, "Split(tabStr, vbTab)"
   
   'Split pipe string.
   msg = ""
   retArray = Split(pipeStr, "|")
   For i = 1 To UBound(retArray)
     msg = msg & i & ": " & retArray(i - 1) & vbCrLf
   Next i
   MsgBox msg, vbOKOnly, "Split(pipeStr, ""|"")"
   
 End Sub

** 実行結果 [#i1131e2d]
上記、VBAサンプルコードの実行結果です。

*** Split comma string. [#z26cf068]
#ref(01.png)
#br

***Split tab string. [#fd0f358f]
#ref(02.png)
#br

***Split pipe string. [#o949f4fe]
#ref(03.png)
#br

以上、Split関数のVBAサンプルコードでした。

#htmlinsert(office_ads_btm.html)

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS