- ベストアンサー
VBAマクロ抽出の記述
A列からAH列の6行目からデーターベースが入っています。 条件としてAH列6行目の欄にKという文字で F列~AC列までのデータがブランク以外のデータを抽出したい。 このマクロの記述の仕方を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 このご質問では、今ひとつデータのまとめ方が分らないですね。 Sheet2に列を詰めて、行間も詰めてまとめてみました。 Sub TestSample1() Dim i As Long Dim j As Integer Dim k As Long Dim c As Range j = 1: k = 1 For i = 6 To Range("A6").CurrentRegion.Rows.Count + 5 If Cells(i, 34).Value = "k" Then For Each c In Range(Cells(i, 6), Cells(i, 29)) If Not IsEmpty(c) Then Sheet2.Cells(k, j).Value = c.Value j = j + 1 End If Next c j = 1 If WorksheetFunction.Count(Sheet2.Rows(k)) > 0 Then k = k + 1 End If End If Next i End Sub
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") d1 = sh1.Range("A65536").End(xlUp).Row '最下データ行 k = 2 'Sheet2行指定ポインタ For i = 7 To d1 If sh1.Cells(i, "AH") = "k" Then For j = 6 To 29 If sh1.Cells(i, j) <> "" Then For j = i To 2 sh2.Cells(k, j) = sh1.Cells(i, j) Next j k = k + 1 Exit For End If Next j '---空白ばかり End If Next i End Sub >AH列6行目の欄にKという文字で は各行のAH列が”K"の場合ではないかと思い、そう組んでいます。 テストデータが作りにくいもので、テストしてません。後は修正などよろしく。
- sam_inoue
- ベストアンサー率47% (27/57)
> =IF(AND(F6<>"",G6<>"",H6<>"",・・・(中略)・・・,AH6<>""),"OK","NG") 作業列を使うなら、 =F6&G6&H6&・・・(略)・・・&AH6 で良いのではないでしょうか。 全てブランクならAI6もブランクで判定できると思います。
- oshietechodai
- ベストアンサー率35% (105/298)
=IF(AND(F6<>"",G6<>"",H6<>"",・・・(中略)・・・,AH6<>""),"OK","NG") という式をAI列に作って、すべてのデータ行にコピー 後は、データ-フィルタ-オートフィルタで AH列をK、 AI列をOK を選択すればいいのはないでしょうか。 しかしデータ量が多く、Accessをお持ちでしたら 読み込ませてクエリを作ったほうが早いかもしれません。