※文字列を、区切り文字ではなく、位置で分割するやり方は「文字列を位置で分割する」をご覧ください。
Split関数は、ある区切り文字で区切られた文字列を、その区切り文字で区切り、区切られた各文字列を、一次元配列として返します。言葉で表すとややこしいですが、要するに次のような処理をしてくれます。

Split関数の書式は次の通りです。
Split(元の文字列 , 区切り文字)
上の例なら、次のようになります。
Split("123,田中,tanaka" , ",")
Split関数は配列を返します。したがって、それを受け取る変数は、バリアント型変数か、動的配列でなければいけません。一般的にはバリアント型変数に受けます。Split関数の返り値(配列)を受け取ったバリアント型変数は、それ以降、配列として操作できます。

このとき注意しなければいけないのは、Split関数が返す配列の要素は0から始まるということです。上の例をVBAのコードで書くと次のようになります。
Sub Sample1()
Dim tmp As Variant
tmp = Split("123,田中,tanaka", ",")
MsgBox tmp(0)
MsgBox tmp(1)
MsgBox tmp(2)
End Sub

上の例では、元の文字列が「"123,田中,tanaka"」と分かっていたので、Split関数で配列に分解した結果が、3つの要素になることも分かっていました。でも、元の文字列に、いくつの要素が含まれているか分からないときもあります。そんなときは、配列の要素数を調べる関数を使います。
これらの関数を使うと、先のコードは次のように書けます。
Sub Sample2()
Dim tmp As Variant, i As Long
tmp = Split("123,田中,tanaka", ",")
For i = LBound(tmp) To UBound(tmp)
MsgBox tmp(i)
Next i
End Sub
もっとも、一般的なVBAでは、Split関数が返す配列の最小要素番号は0と決まっていますから、LBound関数の代わりに0を指定することが多いです。
Sub Sample2()
Dim tmp As Variant, i As Long
tmp = Split("123,田中,tanaka", ",")
For i = 0 To UBound(tmp)
MsgBox tmp(i)
Next i
End Sub
上記のように、Split関数はCSVデータやTSVデータ(Tab区切りデータ)などをワークシートに読み込むときに活躍します。ほかにも、Split関数はさまざま場面で役立ちます。
下図は、A列に氏名が入力されています。苗字と名前の間には半角スペースが入力されているとします。Split関数の区切り文字に半角スペースを指定すれば、こうしたデータを簡単に分割できます。

Sub Sample3()
Dim i As Long, tmp As Variant
For i = 2 To 22
tmp = Split(Cells(i, 1), " ")
Cells(i, 2) = tmp(0)
Cells(i, 3) = tmp(1)
Next i
End Sub

区切り文字には日本語も指定できますので、上と同じ考え方で住所を分割することも可能です。下図は、A列に住所が入力されています。Split関数を使って、県名を抜き出します。

Sub Sample4()
Dim i As Long, tmp As Variant
For i = 2 To 13
tmp = Split(Cells(i, 1), "県")
Cells(i, 2) = tmp(0) & "県"
Cells(i, 3) = tmp(1)
Next i
End Sub

あるいは、こんなことも。

Sub Sample5()
Dim i As Long, tmp As Variant
For i = 2 To 11
tmp = Split(Cells(i, 1), "(")
Cells(i, 2) = tmp(0) - Replace(tmp(1), ")", "")
Next i
End Sub

こんなことも。

Sub Sample6()
Dim i As Long, tmp As Variant
For i = 2 To 6
tmp = Split(Cells(i, 1), "\")
Cells(i, 2) = tmp(UBound(tmp) - 1)
Cells(i, 3) = tmp(UBound(tmp))
Next i
End Sub

こんなことまで。

Sub Sample7()
Dim i As Long, tmp As Variant
For i = 2 To 6
tmp = Split(Cells(i, 1), vbLf)
Cells(i, 2) = tmp(0)
tmp = Split(tmp(1), ":")
Cells(i, 3) = tmp(1)
Next i
End Sub
