• ベストアンサー

マクロ検索について

下記のようなデータベースがあります。A列からT列までにデータが入っています。 D列に下記のデータがあります。頭2桁がADのものだけを検索したい場合は、マクロでは どう記述すればいいでしょうか。教えてください。 AA0G120Y0000 AA0H12000000 AA0S01000000 AA0S03B00000 AA0S05A00000 AD120000110000000P AD120000110000000P AD120000110000000P AD120000110000000P

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

>・・・データベースがあります。A列からT列までにデータが入っています。 もしかしてExcel?Excelでなかったら、破棄してください。 Filter、Find-FindNext などいろいろありますが、検索して検索結果をどうすればいいかわからないので、検索したセルを選択状態にしてみました。 これは検索というよりも照合しています。D列の2行目から下に検索しています。ご参考に。(Excel97です) Sub Kensaku()   Dim rg As Range 'セル   Dim FoundCell As Range '検索セル   Dim maxRow As Long '検索する最終行   Dim schRg As String '検索範囲   Const schCol = "D" '検索列   Const schStr = "AD" '検索文字   '検索範囲   maxRow = Range(schCol & "65536").End(xlUp).Row     If maxRow = 1 Then Exit Sub   schRg = schCol & "2:" & schCol & maxRow   '検索実行   With Worksheets("Sheet1")     For Each rg In .Range(schRg)       '左から2文字を比べる       If Left(rg, 2) = schStr Then         '一致した場合         If FoundCell Is Nothing Then           '1個目           Set FoundCell = rg         Else           '2個目以降           Set FoundCell = Union(FoundCell, rg)         End If       End If     Next   End With   '検索したセルを選択状態にする   If Not FoundCell Is Nothing Then     FoundCell.Select   End If End Sub

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

エクセルの表だと仮定します。A列にデータが入っているとします。(本題ではD列だが説明を単純にするために) B列、C列も空きの列で有ると仮定します。B列に1より連続番号を振ります。(B1に1、B2に2を入力し、B1とB2を範囲指定して、右下の+を最下行まで引っ張っれば良い。) C1列に「=IF(MID(A1,1,2)=”AD”,A1,””)」と式をいれ、C2から最下行まで式の複写をします。 すると、C列はブランクのセルと、AD・・・のセルの2種類となります。 B列とC列について、C列の降順で並べ替えます。上部にAD・・のセルが残ります。そこでAD・・のセルだけをB列とC列について、B列の連番で昇順に並べかえるとA列の順序を保存したままで、上部にAD・・・のデータが残ります。 これでいかがですか。難しいVBAは使わない方法です。

noname#72697
質問者

お礼

ありがとうございました 参考になりました。

回答No.1

データーベースソフト名が分りませんが、MS Accessなら以下のクエリーになります。 SELECT * FROM テーブル WHERE left(D,2)='AD';

関連するQ&A