セルを呼び出して渡すことができるExcelの関数が必要です。入力:
_Firstname Lastname [email protected]
Firstname midname Lastname [email protected]
_
その間のスペースの数はランダムです。出力は配列でなければなりません。文字列がどのように見えるかわからないので、配列は任意の長さにすることができます。出力は次のようになります。
_Firstname, Lastname, [email protected]
Firstname, midname, Lastname, [email protected]
_
=MySplitFunction(A1)
のような1つのセルから関数を呼び出すと、FirstnameがA1、LastnameがB1、email @ mail.comがC1に配置されます。新しいモジュールを作成し、次のコードを試しました。
_Function MySplitFunction(s As String) As String()
MySplitFunction = Split(s, " ")
End Function
_
これは私に出力を与えます
_Firstname
_
配列全体を返すにはどうすればよいですか? 1つのセルに関数を記述して、それに近いセルにデータを配置することもできますか?
編集:
=MySplitFunction(A1)
複数のスペースを削除するには、次のようにコードを修正します(非常に効率的ではありませんが機能します)。
Function MySplitFunction(s As String) As String()
Dim temp As String
Do
temp = s
s = Replace(s, " ", " ") 'remove multiple white spaces
Loop Until temp = s
MySplitFunction = Split(Trim(s), " ") 'trim to remove starting/trailing space
End Function
代替ソリューションは次のとおりです。
これは提案された機能です:
Public Function MySplitFunction(sMark As String, nTh As Integer) As String
On Error GoTo EH
'regexp declaration
Dim objRegExp As Object
Set objRegExp = CreateObject("vbscript.regexp")
Dim tmpTXT As String
Dim tmpArr As Variant
With objRegExp
.Global = True
.Pattern = "\s+"
tmpTXT = .Replace(sMark, " ")
End With
tmpArr = Split(tmpTXT, " ")
MySplitFunction = tmpArr(nTh - 1)
Exit Function
EH:
MySplitFunction = ""
End Function
これは、それがどのように機能するかを示すスクリーンショットです:
重要! Excelで関数を呼び出すときは、パラメーターを区切るためにコンマを使用します(使用しているローカルバージョンのExcelのため、セミコロンは表示されません)。