【2026年7月最新】VBA Split関数で文字列を分割する完全ガイド|複数区切り・配列操作・Claude Code活用

【2026年7月最新】VBA Split関数で文字列を分割する完全ガイド|複数区切り・配列操作・Claude Code活用

ExcelのVBAを使っていると、「カンマ区切りの文字列をセルに分けたい」「スラッシュで区切られた日付を年・月・日に分解したい」という場面が頻繁に出てきます。そのために使うのがSplit関数です。

Split関数は1行で文字列を分割して配列に格納できるため、VBAのデータ処理で欠かせない基礎関数の一つです。この記事では、Split関数の基本から、複数区切り文字への対応・CSVデータの解析・よくあるエラーの対策・Claude Codeでの自動コード生成まで、実用コードを交えて解説します。

代表菅澤 代表菅澤
Split関数は「文字列を区切り文字で分割して配列にする」だけのシンプルな関数です。覚えるポイントは4つの引数の使い方とUBoundとの組み合わせです。コードのパターンを覚えてしまえば応用範囲が広くなります。
✔️Split関数の基本構文・4つの引数(Expression/Delimiter/Limit/Compare)
✔️UBoundで配列要素数を確認してループ処理する方法
✔️Limit引数で分割する最大数を制限する活用パターン
✔️大文字小文字の区別をCompare引数で制御する方法
✔️複数区切り文字に対応するReplace関数との組み合わせテクニック
✔️CSVデータをSplitで行・列に分解してセルに書き込む実務パターン
✔️エラー原因(空文字列・Null値)と防御コードの書き方
✔️Claude CodeでSplit処理を含むVBAコードを自動生成する方法
📌 この記事の結論
【2026年7月最新】VBA Split関数で文字列を分割する完全ガイド|複数区切り・配列操作・Claude Code活用
VBAのSplit関数を完全解説。基本構文・区切り文字の指定・取り出し回数の制限・大文字小文字の区別、複数区切り文字対応(Replace併用)、UBoundで配列要素数を取得、2次元データの処理、Claude Codeでの自動コード生成まで実例コード付きで網羅。

01 Split関数の基本構文と引数の意味 Expression・Delimiter・Limit・Compareの4引数を押さえる

Split関数の基本構文は以下の通りです。返り値は文字列型の1次元配列(String())です。

' Split関数の基本構文
Dim result() As String
result = Split(Expression, [Delimiter], [Limit], [Compare])

' 引数の説明
' Expression : 分割する元の文字列(必須)
' Delimiter  : 区切り文字(省略時はスペース " ")
' Limit      : 最大分割数(省略時は -1 = 無制限)
' Compare    : 大文字小文字の区別(省略時は vbBinaryCompare)

' 最もシンプルな使い方(カンマ区切り)
Dim items() As String
items = Split("りんご,みかん,ぶどう", ",")
' items(0) = "りんご"
' items(1) = "みかん"
' items(2) = "ぶどう"

' 区切り文字を省略するとスペースで分割
Dim words() As String
words = Split("Hello World VBA")
' words(0) = "Hello"
' words(1) = "World"
' words(2) = "VBA"

📚 用語解説

Split関数の返り値(1次元配列):Split関数はString型の1次元配列を返す。配列のインデックスは0始まり(0 to n-1)。要素数はUBound(result)+1で取得できる。区切り文字が見つからない場合は元の文字列全体がresult(0)に入り、要素が1つだけの配列になる。Nullを渡すとエラーになる。

引数デフォルト説明
ExpressionStringなし(必須)分割する元の文字列
DelimiterString" "(スペース)区切り文字(""を指定すると1文字ずつ分割)
LimitLong-1(無制限)最大何個に分割するか。-1=すべて分割
ComparevbCompareMethodvbBinaryComparevbTextCompare=大文字小文字無視、vbBinaryCompare=区別

02 分割した文字列の取り出し方とUBoundの使い方 要素インデックスでのアクセスとForループでの全要素処理

Split関数が返す配列の要素には、変数名(インデックス)でアクセスします。インデックスは0から始まることに注意してください。配列の要素数はUBound(配列名) + 1で取得できます。

📚 用語解説

UBound関数:UBound(arrayname, [dimension]):配列の最大インデックス(上限)を返す関数。1次元配列の場合、UBound(arr)は最後の要素のインデックスを返す。要素数はUBound(arr)+1。LBound関数は最小インデックス(通常0)を返す。Split関数の結果はLBound=0のため、通常はUBoundのみ使えば十分。

' UBoundを使って全要素をループ処理する
Sub SplitLoopExample()
    Dim csv As String
    Dim items() As String
    Dim i As Long

    csv = "東京,大阪,名古屋,福岡,札幌"
    items = Split(csv, ",")

    ' 要素数を確認
    Debug.Print "要素数: " & UBound(items) + 1  ' → 5

    ' For Eachでループ(全要素を順に処理)
    Dim item As Variant
    For Each item In items
        Debug.Print item
    Next item
    ' → 東京 / 大阪 / 名古屋 / 福岡 / 札幌

    ' インデックス指定ループ(インデックスも使いたい場合)
    For i = 0 To UBound(items)
        Cells(i + 1, 1).Value = items(i)  ' A1:A5に書き込む
    Next i
End Sub

' 特定の要素だけ取り出す
Sub GetSpecificElement()
    Dim path As String
    Dim parts() As String

    path = "C:\Users\kohei\Documents\report.xlsx"
    parts = Split(path, "\")

    ' ファイル名だけ取得(最後の要素)
    Dim filename As String
    filename = parts(UBound(parts))  ' → "report.xlsx"
    Debug.Print "ファイル名: " & filename
End Sub
AI鬼管理山崎 AI鬼管理山崎
Split関数の返り値はVariant型ではなくString型の配列なので、要素のアクセスはitems(0)のように直接文字列として扱えます。Variant配列にしてFor Eachで処理する場合は「Dim item As Variant」で宣言する必要があります。
文字列をSplitで分割
items = Split(str, ",")
UBoundで要素数確認
n = UBound(items)+1
For i = 0 To UBound
全要素をループ処理
items(i)で要素取得
セルへの書込み等

03 区切り回数の制限(Limit引数) 最初のN個だけ分割する活用パターン

Limit引数を指定すると、最大何個に分割するかを制限できます。Limit=2にすると「最初の区切り文字で1回だけ分割して2要素の配列」になります。残りの文字列は最後の要素にそのまま格納されます。

' Limit引数で分割数を制限する
Sub LimitExample()
    Dim str As String
    Dim parts() As String

    str = "2026/07/19"

    ' Limit=-1(デフォルト): すべて分割
    parts = Split(str, "/", -1)
    Debug.Print UBound(parts) + 1  ' → 3
    ' parts(0)="2026" / parts(1)="07" / parts(2)="19"

    ' Limit=2: 最初の1か所だけ分割(2要素)
    parts = Split(str, "/", 2)
    Debug.Print UBound(parts) + 1  ' → 2
    ' parts(0)="2026" / parts(1)="07/19"(残りはそのまま)

    ' Limit=1: 分割なし(元の文字列が0番目に入る)
    parts = Split(str, "/", 1)
    Debug.Print UBound(parts) + 1  ' → 1
    ' parts(0)="2026/07/19"(分割されない)

End Sub

' 活用例: メールアドレスからドメインだけ取得
Sub GetDomain()
    Dim email As String
    Dim parts() As String

    email = "sugasawa.kohei@genai-ai.co.jp"

    ' "@"で2つに分割してドメイン部分を取得
    parts = Split(email, "@", 2)
    ' parts(0) = "sugasawa.kohei"
    ' parts(1) = "genai-ai.co.jp"

    Debug.Print "ドメイン: " & parts(1)  ' → genai-ai.co.jp
End Sub
💡 Limit引数の実用パターン

「最初の区切り文字まで」と「それ以降の残り」に2分割したい場合はLimit=2が便利です。例えばメールアドレスを「@」で分割してユーザー名とドメインに分ける、URLを「://」で分割してスキームとパス部分に分けるなど、「最初の区切りだけ見たい」ケースで活用できます。

04 大文字小文字の区別(Compare引数) vbTextCompare vs vbBinaryCompare の使い分け

📚 用語解説

vbBinaryCompare と vbTextCompare:vbBinaryCompare(=0)はバイナリ比較。「A」と「a」を別の文字として区別する(デフォルト)。vbTextCompare(=1)はテキスト比較。大文字小文字を無視して一致する。例えばSplit("AaA", "a", -1, vbTextCompare)は"A"も区切り文字として扱い3要素に分割されるが、vbBinaryCompareでは"A"は区切りにならない。日本語のひらがな/カタカナの区別はこの引数では制御できない。

' Compare引数で大文字小文字の区別を制御する
Sub CompareExample()
    Dim str As String
    Dim partsB() As String, partsT() As String

    str = "HelloAworldAtest"  ' "A"が区切り文字

    ' vbBinaryCompare(デフォルト): 大文字のAのみが区切り
    partsB = Split(str, "a", -1, vbBinaryCompare)
    Debug.Print UBound(partsB) + 1  ' → 1(小文字aしかないので分割されない)
    ' partsB(0) = "HelloAworldAtest"(Aは区切りにならない)

    ' vbTextCompare: 大文字小文字を無視、A/aどちらも区切り
    partsT = Split(str, "a", -1, vbTextCompare)
    Debug.Print UBound(partsT) + 1  ' → 3
    ' partsT(0)="Hello" / partsT(1)="world" / partsT(2)="test"

End Sub

' 実用例: CSVの列名(英語ヘッダー)を大文字小文字無視で処理
Sub ParseHeaderIgnoreCase()
    Dim header As String
    Dim cols() As String

    header = "Name,EMAIL,Phone,Address"
    cols = Split(header, ",")

    Dim i As Long
    For i = 0 To UBound(cols)
        cols(i) = LCase(cols(i))  ' 全部小文字に統一してから処理
    Next i
    ' cols(0)="name" / cols(1)="email" / cols(2)="phone" / cols(3)="address"
End Sub

05 複数区切り文字への対応(Replace関数と組み合わせ) カンマ・スペース・タブなど複数の区切りに対応する実用テクニック

Split関数は区切り文字を1つしか指定できません。「カンマでもスペースでも分割したい」という場合は、Replace関数で一方の区切り文字をもう一方に統一してからSplitするのが基本パターンです。

⚠️ Split関数は複数区切り文字を直接指定できません

Split(str, ",|; ")のようにパイプで複数指定しても動作しません(","と"; "の固定文字列として扱われます)。正規表現のような複数区切り指定はVBA標準のSplitには存在しません。VBScriptのRegExpオブジェクトを使う方法もありますが、Replaceで統一するほうが高速でシンプルです。

' 複数区切り文字に対応する方法

' 方法1: Replaceで区切り文字を1種類に統一してからSplit
Sub MultiDelimiterExample()
    Dim str As String
    Dim parts() As String

    ' カンマとセミコロンの混在データ
    str = "東京,大阪;名古屋,福岡;札幌"

    ' セミコロンをカンマに置換してからSplit
    str = Replace(str, ";", ",")
    parts = Split(str, ",")
    ' parts: 東京/大阪/名古屋/福岡/札幌

    Debug.Print UBound(parts) + 1  ' → 5

End Sub

' 方法2: 複数区切りを段階的にReplaceで統一
Sub NormalizeDelimiters()
    Dim str As String
    Dim parts() As String

    ' タブ・スペース・カンマが混在したCSV的なデータ
    str = "Apple" & vbTab & "Banana, Cherry " & Chr(9) & "Date"

    ' 全ての区切り文字を"|"に統一
    str = Replace(str, vbTab, "|")   ' タブ→|
    str = Replace(str, " ", "|")    ' スペース→|
    str = Replace(str, ",", "|")    ' カンマ→|

    ' 連続した"|"がある場合は1つに(複数スペース対策)
    Do While InStr(str, "||") > 0
        str = Replace(str, "||", "|")
    Loop

    parts = Split(str, "|")
    ' 結果: Apple / Banana / Cherry / Date

    Dim i As Long
    For i = 0 To UBound(parts)
        If Trim(parts(i)) <> "" Then  ' 空要素をスキップ
            Debug.Print Trim(parts(i))
        End If
    Next i

End Sub

' 方法3: RegExpで複数区切りに対応(上級者向け)
Sub SplitWithRegEx()
    Dim re As Object
    Dim matches As Object
    Dim result() As String

    Set re = CreateObject("VBScript.RegExp")
    re.Pattern = "[,;| ]+"  ' カンマ・セミコロン・パイプ・空白(1文字以上)
    re.Global = True

    Dim str As String
    str = "Apple,Banana;Cherry Date"

    ' Replaceで一括統一してSplit
    Dim normalized As String
    normalized = re.Replace(str, "|")
    result = Split(normalized, "|")
    ' result: Apple / Banana / Cherry / Date

    Dim i As Long
    For i = 0 To UBound(result)
        Debug.Print result(i)
    Next i
End Sub

📚 用語解説

Chr(9)とvbTab:vbTabはタブ文字の定数(Chr(9)と同値)。ExcelのセルをコピーしてVBAの文字列として取得するとセル間の区切りがタブ文字(vbTab)になることが多い。Replace(str, vbTab, ",")でCSV形式に変換してからSplitするパターンが実務でよく出る。同様にvbCrLf(改行+CR)、vbLf(改行のみ)もReplaceで処理してから行ごとにSplitするのが基本。

06 CSVデータの解析・セルへの分散配置 行・列2重Splitで2次元データを処理する実務パターン

Splitの最も実践的な使い方の一つがCSVデータの解析です。まず改行で行に分割し、各行をカンマで列に分割するという「2重Split」のパターンが基本になります。

' CSVデータをセルに展開する
Sub ParseCSVToSheet()
    Dim csvText As String
    Dim lines() As String
    Dim cols() As String
    Dim i As Long, j As Long

    ' CSV文字列(実際はファイルから読み込む)
    csvText = "名前,年齢,部署" & vbCrLf & _
              "菅澤孝平,24,営業" & vbCrLf & _
              "山崎太郎,32,開発" & vbCrLf & _
              "田中花子,28,総務"

    ' Step1: 改行コードで行に分割
    lines = Split(csvText, vbCrLf)

    ' Step2: 各行をカンマで列に分割してセルに書き込む
    For i = 0 To UBound(lines)
        If lines(i) <> "" Then  ' 空行をスキップ
            cols = Split(lines(i), ",")
            For j = 0 To UBound(cols)
                Cells(i + 1, j + 1).Value = cols(j)
            Next j
        End If
    Next i

    Debug.Print "完了: " & (UBound(lines) + 1) & "行を展開"
End Sub

' テキストファイルからCSVを読み込んで展開する
Sub ReadCSVFile()
    Dim fileNo As Integer
    Dim filePath As String
    Dim allText As String
    Dim lines() As String
    Dim cols() As String
    Dim i As Long, j As Long

    filePath = "C:\Users\kohei\Documents\data.csv"
    fileNo = FreeFile

    Open filePath For Input As #fileNo
    allText = Input(LOF(fileNo), fileNo)  ' ファイル全体を読み込み
    Close #fileNo

    ' 改行コードを統一(\r\nと\nの混在を防ぐ)
    allText = Replace(allText, vbCr, "")  ' \rを除去
    lines = Split(allText, vbLf)  ' \nで行分割

    Sheets("Sheet1").Cells.Clear  ' シートをクリア

    For i = 0 To UBound(lines)
        If Trim(lines(i)) <> "" Then
            cols = Split(lines(i), ",")
            For j = 0 To UBound(cols)
                ' クォートを除去してセルに書き込む
                Cells(i + 1, j + 1).Value = Replace(cols(j), Chr(34), "")
            Next j
        End If
    Next i

    MsgBox UBound(lines) & "行のCSVデータを読み込みました。"
End Sub
テキストファイルを読み込む
Open/Input/Close
改行コードで行分割
Split(text, vbCrLf)
各行をカンマで列分割
Split(line, ",")
セルに書き込む
Cells(i, j).Value

07 Split関数の落とし穴とエラー対策 空文字列・Null・インデックス超過の3大エラーを防ぐ

⚠️ Split関数の3大エラー

①Null値を渡すとエラー(「型が一致しません」)。IsNull()でガードする。②空文字列("")を渡すと分割されず1要素になる。UBound=0になるので要注意。③配列のインデックスを超えてアクセスするとエラー(「インデックスが有効範囲にありません」)。UBoundで上限を確認してからアクセスする。

' エラー対策パターン集

' 1. Null値チェック
Sub SafeSplitWithNull()
    Dim cellValue As Variant
    Dim parts() As String

    cellValue = Cells(1, 1).Value  ' セルがNullの可能性

    ' IsNullチェックを先に行う
    If IsNull(cellValue) Or cellValue = "" Then
        Debug.Print "空またはNull: スキップ"
        Exit Sub
    End If

    parts = Split(CStr(cellValue), ",")
    Debug.Print "分割結果: " & UBound(parts) + 1 & "要素"
End Sub

' 2. 空文字列の処理(区切り文字が見つからない場合)
Sub HandleEmptyResult()
    Dim str As String
    Dim parts() As String

    str = "区切り文字なしのテキスト"
    parts = Split(str, ",")  ' カンマがないので分割されない

    ' 要素数を確認
    If UBound(parts) = 0 Then
        Debug.Print "区切り文字が見つからなかった: " & parts(0)
    Else
        Debug.Print "分割数: " & UBound(parts) + 1
    End If
End Sub

' 3. インデックス超過を防ぐ安全なアクセス
Sub SafeIndexAccess()
    Dim str As String
    Dim parts() As String

    str = "項目1,項目2"  ' 2要素
    parts = Split(str, ",")

    ' UBoundを確認してからアクセス
    Dim targetIndex As Long
    targetIndex = 3  ' 存在しないインデックス

    If targetIndex <= UBound(parts) Then
        Debug.Print parts(targetIndex)
    Else
        Debug.Print "インデックス " & targetIndex & " は存在しない(最大 " & UBound(parts) & ")"
    End If
End Sub

' 4. 空の配列要素をフィルタリングする
Sub FilterEmptyElements()
    Dim str As String
    Dim parts() As String
    Dim cleaned As New Collection

    str = "A,,B,,,C,"  ' 空要素あり
    parts = Split(str, ",")

    Dim i As Long
    For i = 0 To UBound(parts)
        If Trim(parts(i)) <> "" Then
            cleaned.Add Trim(parts(i))
        End If
    Next i

    Debug.Print "有効要素数: " & cleaned.Count  ' → 3 (A, B, C)
End Sub

📚 用語解説

IsNull関数とIsEmpty関数の違い:IsNull(value)はVariant型の変数がNullかどうかを判定する。セルの値がNullの場合はIsNullでTrueになる。IsEmpty(value)はVariant型が未初期化かどうかを判定する。セルが空の場合はIsEmptyでTrueになることが多い。空文字列("")との違いに注意: ""はIsNullもIsEmptyもFalseを返す。Split関数に渡す前は IsNull(v) Or IsEmpty(v) Or v = "" の3条件でガードするのが安全。

08 Claude CodeでVBA Split処理を自動生成する 処理の仕様を伝えるだけでSplit+ループコードが即生成される

Claude Codeを使えば、「どんなデータを」「何で分割して」「どう処理するか」を日本語で説明するだけで、Split関数を含むVBAコードが即座に生成されます。エラー対策コードやUBoundによる安全なループも自動で入ります。

ユースケースClaude Codeへの指示例
CSVをシートに展開「A列にCSV文字列があります。カンマで分割して1行ずつB列からI列に展開するVBAマクロを作って。空行はスキップ。」
複数区切り対応「カンマまたはセミコロンで区切られた文字列を分割してコレクションに格納するVBAコードを書いて。空要素は除外。」
ファイル名の抽出「Windowsのフルパス文字列から\で分割してファイル名だけ取得するVBA関数を書いて。バックスラッシュに注意。」
メールアドレス処理「セル範囲のメールアドレスから@でSplitしてドメイン部分だけ隣の列に書き出すマクロを作って。Null/空セルはスキップ。」
' Claude Codeが生成するコード例のパターン
' (指示: 「A列のカンマ区切り文字列をB列以降に展開するマクロ」)

Sub SplitColumnA()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim cellVal As String
    Dim parts() As String
    Dim j As Long

    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    For i = 1 To lastRow
        ' Null・空チェック
        If Not IsNull(ws.Cells(i, 1).Value) And ws.Cells(i, 1).Value <> "" Then
            cellVal = CStr(ws.Cells(i, 1).Value)
            parts = Split(cellVal, ",")

            For j = 0 To UBound(parts)
                ws.Cells(i, j + 2).Value = Trim(parts(j))  ' B列から書き込み
            Next j
        End If
    Next i

    MsgBox lastRow & "行の処理が完了しました。"
End Sub
代表菅澤 代表菅澤
Claude Codeへの指示で特に重要なのは「入力データの形式」と「出力の形式」を具体的に伝えることです。「カンマ区切りの文字列がA列にある→B列からI列に展開する→空行スキップ」という3点を明確にするだけで、Null対策・UBound・Trimが入った完成度の高いコードが返ってきます。
分割したいデータを準備
入力形式・区切り文字を確認
Claude Codeに指示
入力/出力/スキップ条件
を日本語で伝える
生成コードをVBEに貼る
Alt+F11でVBE起動
モジュールに貼り付け
実行・確認
F5またはマクロ一覧から実行

09 まとめ:VBA Split関数の重要ポイント 基本から実務パターンまでの確認チェックリスト

✔️Split関数はExpression, Delimiter, Limit, Compareの4引数
✔️返り値はインデックス0始まりのString型1次元配列
✔️配列の要素数はUBound(arr) + 1で取得
✔️Limit引数で分割数を制限(Limit=2で2分割に使える)
✔️Compare引数で大文字小文字の区別を制御(vbTextCompare=無視)
✔️複数区切り文字はReplace関数で1種類に統一してからSplit
✔️CSV解析は改行→行分割→カンマ→列分割の2重Split
✔️エラー対策はIsNull/空チェック・UBound確認の2点が重要
✔️Claude Codeに指示を出せばSplit+Null対策込みのコードが即生成

VBAのデータ処理をAIで効率化したい方へ

Split関数を使ったCSV解析や文字列処理をはじめ、VBAの繰り返し作業はClaude Codeとの組み合わせで大幅に効率化できます。
AI鬼管理では、ExcelVBA・業務自動化のAI活用設計・実装支援を行っています。

代表菅澤 代表菅澤
「毎月同じCSVを手作業でExcelに貼り付けている」「VBAが書けないが自動化したい」という相談は非常に多いです。まずは無料相談でどんな処理を自動化したいかを聞かせてください。

NEXT STEP

この記事の内容を、あなたのビジネスで
実践してみませんか?

AI活用を自社で回せるようになりたい方へ

AI鬼管理

Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。

よくある質問

Q. VBAのSplit関数の基本的な使い方を教えてください。

A. Split(文字列, 区切り文字)で文字列を分割してString型の配列が返ります。例: items = Split("A,B,C", ",") とすると items(0)="A", items(1)="B", items(2)="C" になります。配列の要素数はUBound(items)+1で確認できます。For i = 0 To UBound(items)でループして全要素を処理するのが基本パターンです。

Q. Split関数で複数の区切り文字を使いたい場合はどうすればいいですか?

A. Split関数は区切り文字を1種類しか指定できません。複数の区切り文字に対応するには、Replace関数で全ての区切り文字を1種類に統一してからSplitします。例: str = Replace(str, ";", ",") → parts = Split(str, ",") のように、セミコロンをカンマに置換してからカンマでSplitします。3種類以上の区切りがある場合は複数のReplaceを連続して使います。

Q. Split関数で「インデックスが有効範囲にありません」エラーが出ます。原因は?

A. 配列の範囲外のインデックスにアクセスしているのが原因です。例えばSplitで3要素の配列(インデックス0〜2)に対してitems(3)にアクセスするとこのエラーになります。対策: アクセス前にIf targetIndex <= UBound(items) ThenでインデックスがUBound以下かを確認してください。また、Splitが返す配列の要素数が想定より少ない場合は、区切り文字が見つからなかった可能性があります(その場合はitems(0)に元の文字列全体が入ります)。

Q. VBAでCSVファイルをSplitで読み込む方法を教えてください。

A. Open/Input/Closeでファイル全体をテキストとして読み込んだ後、①改行コードで行に分割(Split(text, vbCrLf))→②各行をカンマで列に分割(Split(line, ","))→③セルに書き込む、という2重Splitのパターンを使います。WindowsのファイルはvbCrLf(\r\n)とvbLf(\n)が混在することがあるため、Replace(text, vbCr, "")でvbCrを除去してからvbLfでSplitするのが安全です。

Q. Split関数でNullが入ったセルを処理すると「型が一致しません」が出ます。

A. Split関数にNull値を渡すと「型が一致しません(エラー13)」が発生します。セルの値を渡す前にIsNull()またはIsEmpty()でNullチェックを行い、NullならSplitをスキップしてください。またセルの値はVariant型で取得されるため、Split関数に渡す前にCStr(cellValue)で文字列型に変換する習慣をつけると安全です。

Q. Claude CodeでVBAのSplitコードを生成してもらうにはどう指示すればいいですか?

A. 「入力データの形式(どの列・どんな区切り文字)」「出力の形式(どの列に展開するか)」「スキップ条件(空行・Nullの扱い)」の3点を日本語で伝えるのが効果的です。例: 「A列にカンマ区切りの文字列があります。Split関数で分割してB列からJ列に展開するVBAマクロを書いて。空セルはスキップ。各要素はTrimで空白除去。」このように具体的に伝えると、UBound・Nullチェック・Trimが入った完成度の高いコードが返ってきます。

AIAI鬼管理

AI鬼管理へのお問い合わせ

この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。

会社名を入力してください
業種を選択してください
お名前を入力してください
正しいメールアドレスを入力してください

1つ以上選択してください
1つ以上選択してください
月額コストを選択してください

約1時間のオンライン面談(Google Meet)です

空き枠を取得中...
面談日時を選択してください

予約確定後、Google Calendarの招待メールをお届けします。
しつこい営業は一切ございません。

監修 最終更新日: 2026年7月19日
菅澤孝平
菅澤 孝平 株式会社GENAI 代表取締役
  • AI業務自動化サービス「AI鬼管理」を運営 — Claude Code を活用し、経営者の業務を「AIエージェントに任せる仕組み」へ転換するパーソナルトレーニングを 伴走構築 で提供。日報・採用・問い合わせ対応・経費精算・議事録・データ集計・営業リスト等の定型業務を、AIに代行させる体制を経営者と一緒に作り込む
  • Claude Code 実装ノウハウを 経営者・法人クライアント に直接指導。生成AIを「便利ツール」ではなく 「業務を任せる存在」 として運用する手法を体系化
  • 「やらせ切る管理」メソッドの開発者。シンゲキ株式会社(2021年設立・鬼管理専門塾運営)にて累計3,000名以上の学習者を志望校合格に導いた管理メソッドを、AI × 経営者支援 に転用
  • 著書『3カ月で志望大学に合格できる鬼管理』(幻冬舎)、『親の過干渉こそ、最強の大学受験対策である。』(講談社)
  • メディア出演: REAL VALUE / カンニング竹山のイチバン研究所 / ええじゃないかBiz 他
  • 明治大学政治経済学部卒
現在は AI鬼管理(Claude Code活用の伴走型パーソナルトレーニング)を主事業とし、経営者と二人三脚で「AIに業務を任せる仕組み」を実装。「実行を強制する環境」を AI で構築する手法を、自社の実運用知見をもとに発信している。