Public Function CutStr(ByVal Text As String, _
ByVal Separator As String, _
ByVal N As Integer) As String
Dim strDatas() As String
strDatas = Split("" & Separator & Text, Separator, , 0)
CutStr = strDatas(N * Abs((N <= UBound(strDatas))))
End Function
? CutStr("AAA,BBB,CCC", ",", 2)
BBB
? CutStr("THIS IS A PEN.", " ", 2)
IS
? CutStr("THIS IS A PEN.", "THIS ", 2)
IS A PEN
? CutStr("THIS IS A PEN.", "IS ", 1)
THIS
私にとって、必須の関数です。
********************************
"AAAA○BBBB△CCCC" から BBBB を抜き出す用法
********************************
? CutStr("AAAA○BBBB△CCCC", "○", 2)
BBBB△CCCC
? CutStr("BBBB△CCCC", "△", 1)
BBBB
よって、
? CutStr(CutStr("AAAA○BBBB△CCCC", "○", 2), "△", 1)
BBBB
補足
Wendy02様 度々で大変申し訳ございません。 ご指示のようにやってみた?ところ、「インデックスが有効範囲にありません」とのエラーが出ます。 現在MVE上で書かれているのは 下記のような形です。 私の作業手順が悪いのだと思いますが、どこをいじればよろしいのでしょうか? ご指導下さいよろしくお願い致します。 Private Sub CommandButton2_Click() Call TestSplitting End Sub Sub TestSplitting() Dim sRng As String Dim strRngs As Variant Dim strPasteRngs As Variant Dim rng As Variant Dim c As Range Dim i As Integer Dim j As Long 'データの先頭位置 Const MYRANGE_TOP As String = "L1,M1" strRngs = Split(MYRANGE_TOP, ",") '切り分け '貼り付け左端 Const MYPASTE_RANGE As String = "O1,R1" strPasteRngs = Split(MYPASTE_RANGE, ",") '切り分け Application.ScreenUpdating = False For Each rng In strRngs For Each c In Range(Range(rng), Cells(65536, Range(rng).Column).End(xlUp)) If Not IsEmpty(c) Then SplitMarks c, Range(strPasteRngs(i)).Offset(j) j = j + 1 End If Next i = i + 1 j = 0 Next Application.ScreenUpdating = True End Sub Private Sub SplitMarks(ByVal myRange As Range, myPasteRange As Range) Dim Matches As Object Dim Match As Object Dim i As Long Dim ArrayBuf() As Variant 'マーク Const MARKS As String = "★●▲" With CreateObject("VBScript.RegExp") .Global = True .Pattern = "([" & MARKS & "][^" & MARKS & "]+)" Set Matches = .Execute(myRange.Value) For Each Match In Matches ReDim Preserve ArrayBuf(i) ArrayBuf(i) = Match.Value i = i + 1 Next End With myPasteRange.Resize(, UBound(ArrayBuf) + 1) = ArrayBuf() End Sub '----------------------------------------