• ベストアンサー

VBAマクロ抽出の記述

A列からAH列の6行目からデーターベースが入っています。 条件としてAH列6行目の欄にKという文字で F列~AC列までのデータがブランク以外のデータを抽出したい。 このマクロの記述の仕方を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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)
回答No.3

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)
回答No.2

> =IF(AND(F6<>"",G6<>"",H6<>"",・・・(中略)・・・,AH6<>""),"OK","NG") 作業列を使うなら、 =F6&G6&H6&・・・(略)・・・&AH6 で良いのではないでしょうか。 全てブランクならAI6もブランクで判定できると思います。

回答No.1

=IF(AND(F6<>"",G6<>"",H6<>"",・・・(中略)・・・,AH6<>""),"OK","NG") という式をAI列に作って、すべてのデータ行にコピー 後は、データ-フィルタ-オートフィルタで AH列をK、 AI列をOK を選択すればいいのはないでしょうか。 しかしデータ量が多く、Accessをお持ちでしたら 読み込ませてクエリを作ったほうが早いかもしれません。

関連するQ&A

専門家に質問してみよう