- ベストアンサー
マクロ検索について
下記のようなデータベースがあります。A列からT列までにデータが入っています。 D列に下記のデータがあります。頭2桁がADのものだけを検索したい場合は、マクロでは どう記述すればいいでしょうか。教えてください。 AA0G120Y0000 AA0H12000000 AA0S01000000 AA0S03B00000 AA0S05A00000 AD120000110000000P AD120000110000000P AD120000110000000P AD120000110000000P
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>・・・データベースがあります。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)
エクセルの表だと仮定します。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は使わない方法です。
- gonta_goma
- ベストアンサー率50% (37/73)
データーベースソフト名が分りませんが、MS Accessなら以下のクエリーになります。 SELECT * FROM テーブル WHERE left(D,2)='AD';
お礼
ありがとうございました 参考になりました。