梅雨ですね……。
こちらは雨降りまくりです。(^^ゞ
毎年恒例(滝汗)ですが、冠水したウチの近所が、ニュースで映ってたらしい……。
ところで、
久々にExcelのセルから値を読み取るコードを作っていて、
そのセルが指示している内容を解釈する必要があるのですが……。
(例: a,b,c,d 4個 : 1,2,3,4,5,6 で6個 等)
この文字の区分けが、個人個人で“フリーダムすぎる”なわけでして……。(^^ゞ
ある方は、「,」。別な方は「、」 ……それくらいなら、まだ、ガマン出来るんだわ。
けれども、思わず声に出して「えええっ!!」と言ってしまったのは、
「x1、x2(セル内改行)
y1、y2」
の4点指示
Split関数でも限界ですぅ……。
「複数パターンで、文字列分解して、指示されている点数を数えたいっっっ!!!」
という叫びにも似た思いで作ってみました。
幸いヒントを出してくださっている、優しいブログさんもありましたし。(Replaceしてから、まとめてSplitして)
関数 Splitarray (VBA版)
意外に使い勝手が良かったので、ついでに、VBScript用も
関数 Splitarray (VBScript版)
VBA用サンプルコード
testプロシージャを実行すると、分割前の文章が表示されます。
その後、分割後の文字列が、次々と表示されます。
サンプルでは「、」「。」「 」の3つのdelimiterで分割しています。
VBScript用サンプルコード
実行すると、分割前の文章が表示されます。
その後、分割後の文字列が、次々と表示されます。
サンプルでは「、」「。」「 」の3つのdelimiterで分割しています。
ではまた。
こちらは雨降りまくりです。(^^ゞ
毎年恒例(滝汗)ですが、冠水したウチの近所が、ニュースで映ってたらしい……。
ところで、
久々に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
ではまた。