|
▼まさ さん:
以下、とりあえず。
>"時間"をFINDして一行"データなし"というワードを入れて
どこにいれるのかが不明でしたので、ここは以下のコードにはいれていません。
>"名前1_歳" -> 名前1 あるいは "時間xx:xx〜xx:xx"1 -> xx:xx〜xx:xx1
かならず、このような文字列規則、" で囲まれているとか、 _ で区切られているとか 時間の数字が " の右にある
ということを前提にしています。
また、抽出は、"名前 という文字列で始まるセルと "時間 という文字列で始まるセルを対象にします。
(つまり、この2つは、M列、O列の1組のブロック内に必ず存在するという前提)
Sub Test3()
Dim z1 As Long
Dim z2 As Long
Dim z As Long
Dim v() As String 'B,C列要配列
Dim i As Long
Dim j As Long
Dim x As Long
Dim y As Long
Dim d As String
Dim s As String
Dim col As Variant
z1 = Range("M" & Rows.Count).End(xlUp).Row 'M列最終行
z2 = Range("O" & Rows.Count).End(xlUp).Row 'O列最終行
z = WorksheetFunction.Max(z1, z2) 'いずれか大きい値
ReDim v(1 To z, 1 To 2)
x = 1
For Each col In Array("M", "O")
y = 1
For i = 3 To z
s = Empty
d = Cells(i, col).Value
Select Case Mid(d, 2, 2)
Case "名前"
s = Split(Replace(d, """", ""), "_")(0)
Case "時間"
s = Mid(Replace(d, """", ""), 3)
End Select
If Len(s) > 0 Then
y = y + 1
v(y, x) = s
End If
Next
x = x + 1
Next
Columns("B:C").ClearContents
Range("B3").Resize(z, 2).Value = v
End Sub
|
|