梅雨ですね……。
こちらは雨降りまくりです。(^^ゞ
毎年恒例(滝汗)ですが、冠水したウチの近所が、ニュースで映ってたらしい……。

ところで、
久々にExcelのセルから値を読み取るコードを作っていて、
そのセルが指示している内容を解釈する必要があるのですが……。
(例: a,b,c,d 4個 : 1,2,3,4,5,6 で6個 等)

この文字の区分けが、個人個人で“フリーダムすぎる”なわけでして……。(^^ゞ
ある方は、「,」。別な方は「、」 ……それくらいなら、まだ、ガマン出来るんだわ。

けれども、思わず声に出して「えええっ!!」と言ってしまったのは、
「x1、x2(セル内改行)
y1、y2」
の4点指示

Split関数でも限界ですぅ……。

「複数パターンで、文字列分解して、指示されている点数を数えたいっっっ!!!」
という叫びにも似た思いで作ってみました。
幸いヒントを出してくださっている、優しいブログさんもありましたし。(Replaceしてから、まとめてSplitして)

関数 Splitarray  (VBA版)
Function Splitarray(ByVal expression As String, _
                    Optional ByVal delimiter As Variant = " ", _
                    Optional ByVal limit As Integer = -1, _
                    Optional ByVal compare As Integer = 0) As Variant
    Dim exp_ As String, del_ As String, x As Variant
    
    exp_ = expression
    If IsArray(delimiter) Then
        del_ = delimiter(0)
        For Each x In delimiter
            exp_ = Replace(exp_, x, del_)
        Next x
    Else
        del_ = delimiter
    End If
    Splitarray = Split(exp_, del_, limit, compare)
End Function
使い方: 引数delimiter部分に Array関数で分割文字配列を作って、格納してください。


意外に使い勝手が良かったので、ついでに、VBScript用も
関数 Splitarray  (VBScript版)
Function Splitarray(ByVal expression, ByVal delimiter, ByVal limit, ByVal compare)
    Dim exp_, del_ , x 
    
    exp_ = expression
    If Len(limit) = 0 Then limit = -1
    If Len(compare) = 0 Then compare = 0
    If IsArray(delimiter) Then
        del_ = delimiter(0)
        For Each x In delimiter
            exp_ = Replace(exp_, x, del_)
        Next
    Else
        del_ = delimiter
    End If
    If IsEmpty(compare) Then compare = Null
    Splitarray = Split(exp_, del_, limit, compare)
End Function


VBA用サンプルコード
testプロシージャを実行すると、分割前の文章が表示されます。
その後、分割後の文字列が、次々と表示されます。
サンプルでは「、」「。」「 」の3つのdelimiterで分割しています。
Sub test()
    Dim str As Variant
    Dim rtn As Variant
    Dim x As Variant
    
    str = "今日は、天気が、悪いです。風が、強いです。By Midorityo"
    rtn = Splitarray(str, Array("、", " ", "。"))
    MsgBox (str)
    For Each x In rtn
        MsgBox (x)
    Next
End Sub

Function Splitarray(ByVal expression As String, _
                    Optional ByVal delimiter As Variant = " ", _
                    Optional ByVal limit As Integer = -1, _
                    Optional ByVal compare As Integer = 0) As Variant
    Dim exp_ As String, del_ As String, x As Variant
    
    exp_ = expression
    If IsArray(delimiter) Then
        del_ = delimiter(0)
        For Each x In delimiter
            exp_ = Replace(exp_, x, del_)
        Next x
    Else
        del_ = delimiter
    End If
    Splitarray = Split(exp_, del_, limit, compare)
End Function


VBScript用サンプルコード
実行すると、分割前の文章が表示されます。
その後、分割後の文字列が、次々と表示されます。
サンプルでは「、」「。」「 」の3つのdelimiterで分割しています。
Sub test()
    Dim str, rtn, x 
    
    str = "今日は、天気が、悪いです。風が、強いです。By Midorityo"
    rtn = Splitarray(str, Array("、", " ", "。"),Empty,Empty)
    MsgBox (str)
    For Each x In rtn
        MsgBox (x)
    Next
End Sub

Function Splitarray(ByVal expression, ByVal delimiter, ByVal limit, ByVal compare)
    Dim exp_, del_ , x 
    
    exp_ = expression
    If Len(limit) = 0 Then limit = -1
    If Len(compare) = 0 Then compare = 0
    If IsArray(delimiter) Then
        del_ = delimiter(0)
        For Each x In delimiter
            exp_ = Replace(exp_, x, del_)
        Next
    Else
        del_ = delimiter
    End If
    If IsEmpty(compare) Then compare = Null
    Splitarray = Split(exp_, del_, limit, compare)
End Function

call test


ではまた。