OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

マクロ検索について

  • すぐに回答を!
  • 質問No.242835
  • 閲覧数39
  • ありがとう数1
  • 気になる数1
  • 回答数3
  • コメント数0

下記のようなデータベースがあります。A列からT列までにデータが入っています。
D列に下記のデータがあります。頭2桁がADのものだけを検索したい場合は、マクロでは
どう記述すればいいでしょうか。教えてください。
AA0G120Y0000
AA0H12000000
AA0S01000000
AA0S03B00000
AA0S05A00000
AD120000110000000P
AD120000110000000P
AD120000110000000P
AD120000110000000P
通報する
  • 回答数3
  • 気になる1
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

>・・・データベースがあります。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
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル9

ベストアンサー率 50% (37/73)

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

  • 回答No.3
レベル14

ベストアンサー率 28% (4322/15241)

エクセルの表だと仮定します。A列にデータが入っているとします。(本題ではD列だが説明を単純にするために) B列、C列も空きの列で有ると仮定します。B列に1より連続番号を振ります。(B1に1、B2に2を入力し、B1とB2を範囲指定して、右下の+を最下行まで引っ張っれば良い。) C1列に「=IF(MID(A1,1,2)=”AD”,A1,””)」と式をいれ、C2から最下行まで式の複写をします。 すると、C ...続きを読む
エクセルの表だと仮定します。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

ありがとうございました
参考になりました。
投稿日時 - 2002-04-03 09:20:16
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ