Excelマクロ、記号で括られたデータを別のセルに抜き出す
先頭行はラベル、左から8番目のセルの中身は、、、
<元のセルの中身>
Cells(n, 8)
テキストA
テキストB
テキストC
-
- -
抜き出したいデータ(複数行)
-
- -
テキストD
<変更後>
Cells(n,8)
テキストA
テキストB
テキストC
テキストD
Cells(n,10)
抜き出したいデータ(複数行)
こんな感じにしたい。
出来たのが、こんなマクロになった。
Sub move_items() Dim i As Integer Cells(1, 10) = "抜き出したデータ" For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row 'セルの値を改行で分割して配列にする Dim LineArr() As String: LineArr = Split(Cells(i, 8), vbLf, , vbBinaryCompare) Dim memoStr As String: memoStr = "" Dim itemStr As String: itemStr = "" Dim chk As Boolean chk = False For j = 0 To UBound(LineArr) If LineArr(j) = "---" Then chk = Not (chk) Else If chk = True Then itemStr = itemStr & LineArr(j) & vbLf Else memoStr = memoStr & LineArr(j) & vbLf End If End If Next j Cells(i, 8).Value = TrimLF(memoStr) Cells(i, 10).Value = TrimLF(itemStr) Next i End Sub Private Function TrimLF(str As String) As String '末尾のvblfを削除しまくる Do Until Right(str, 1) <> vbLf str = Left(str, Len(str) - 1) Loop TrimLF = str End Function