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

A 回答 (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は使わない方法です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/04/03 09:20

>・・・データベースがあります。

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
    • good
    • 0

データーベースソフト名が分りませんが、MS Accessなら以下のクエリーになります。


SELECT * FROM テーブル WHERE left(D,2)='AD';
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ