Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11659 / 76734 ←次へ | 前へ→

【70607】Re:初心者ですいません
回答  UO3  - 11/12/6(火) 11:16 -

引用なし
パスワード
   ▼まさ さん:

以下、とりあえず。

>"時間"を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

3 hits

【70580】初心者ですいません まさ 11/12/4(日) 11:12 質問
【70582】Re:初心者ですいません UO3 11/12/4(日) 13:13 発言
【70590】Re:初心者ですいません まさ 11/12/5(月) 11:56 質問
【70593】Re:初心者ですいません UO3 11/12/5(月) 13:30 発言
【70594】Re:初心者ですいません UO3 11/12/5(月) 14:22 回答
【70598】Re:初心者ですいません まさ 11/12/5(月) 19:27 質問
【70602】Re:初心者ですいません UO3 11/12/6(火) 6:30 発言
【70603】Re:初心者ですいません UO3 11/12/6(火) 6:39 発言
【70604】Re:初心者ですいません まさ 11/12/6(火) 9:12 発言
【70607】Re:初心者ですいません UO3 11/12/6(火) 11:16 回答

11659 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free