• ベストアンサー

マクロ検索について

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

noname#72697
noname#72697

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

  • ベストアンサー
  • 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/17068)
回答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

  • エクセル2000マクロ記述について

    B列の2行目から下記のようなデータがあります。(例4件の18桁) AD120000110000000P AD120000110000000P AD120000110000000P AD120000110000000P 頭から7桁目と8桁目の間、12桁目と13桁目の間に半角のスペースを空けたいのですが マクロでの記述はどうすればよいか教えてください。 データの件数はその都度変わります。

  • Excel2000マクロ記述について

    下記の条件で下記のようなマスターを参照してマクロを作成したいのですが、どのように記述したら良いでしょうか シート名 滞留在庫表 条件 c列の5行目からdataが入っています。data例(AD1200S0110000000P)18桁 dataの頭8桁目がBの場合はL221をV列に表示 dataの頭8桁目が、A又はM又Pの場合はL222をV列に表示 dataの頭8桁目がB、A、M、P以外の場合は、ブランクをV列に表示 シート名 表示再設定マスタ             A列    B列 5行目****************** 6行目*******B********** L221 7行目*******A********** L222 8行目*******M********** L222 9行目*******P********** L222

  • excel2000マクロ記述方法

    抽出条件方法のマクロ記述 1つのファイルのシートの中にデータがあります。 例ファイル名a.xlsシート名マスター     B列 C列   D列    E列 項目名 倉庫  翻訳  ソート  非表示項目     A057 レオナ工場  1     A870 セ新港    2    Y     A887 セ日向    3 もう1つのファイル 例ファイル名B.xlsシート名WORK     A列   B列   c列    d列    E列    連結コード  品名  倉庫 出荷1  加工1  AA 0G120 0G120  A870 0 0 0 AA 0H120 0H120  A057 0 0 0 AA 0S0100 0S010  A887 0 0 0 抽出条件方法 シート名WORKのデータの中のC列と、シート名マスターのB列の倉庫を参照して 非表示項目のYが入っていない、倉庫と同じデータをシート名WORKのデータを抽出したい 場合のマクロ記述の方法を教えてください。よろしくお願いします。 (抽出表示方法) AA 0H120 0H120  A057 0 0 0 AA 0S0100 0S010  A887 0 0 0     

  • エクセル2000マクロ検索方法

    Aのファイル a.xls シート名 aaa Bのファイル b.xls シート名 bbb Aのファイルに下記のデータベースがあります。   A列 B列   0001 100   0002 200   0004 300 Bのファイルに下記のデータベースがあります。   A列 B列   0001 300   0002 200    抽出条件方法 AのファイルとBのファイルのA列を参照して違うものだけを、Aのファイルから 別のファイルに取り出す方法をマクロでの記述方法を教えてください。 別のファイルに取り出すデータは、下記の通リです。   A列 B列   0004 300 以上よろしくお願いします。

  • Excelのマクロを作ってもらえますか?

    こんにちは。 エクセルのマクロで、Sheet1に転々と 入力されているデータを すべてA1の列へ統一して並べ替え(2) 同じデータの数を計算してB2へ記述する(3)などという マクロができるなら作っていただけないでしょうか? もし、数の入った行のみ残して削除までできれば最良なの ですが(4) (2) AA-20 AA-20 AA-20 BB-30 CC-30 CC-30 CC-30 (3) AA-20   3 AA-20 AA-20 BB-30   1 CC-30   3 CC-30 CC-30 (4) AA-20   3 BB-30   1 CC-30   3 このようになのですが、 お時間のあるときで結構ですので宜しくお願いします。

  • EXCELのマクロにて

    EXCELのにて連続したデータを入力したデータベースがあります。(行が5000、列がAAまで) このデータベースのデータの最終行だけを指定して違うシートにコピー・貼り付けがしたいのです。 マクロにてこのような作業をするときにはどういった文をかけばよいですか。

  • ,エクセル2000のマクロでこんな事出来ますか?

    エクセル形式でデータが送られてきます。A~ADまで列があります。行数は決まっていませんが、だいたい10~50行程度です。 列は必ずA~ADと決まっています。1行目は項目が入り2行目からデータが入っています。そこでマクロを組んで下記のような事が出来るでしょうか? 先ず、必要なのはM、P、Q、T、Vの5列のみです。その他は必要ありません。データの内容としてP、Q列には日付が入力されています。V列はカタカナの文字が入っている又は空白の状態です。カタカナの文字は重複されている場合もあります。T列には数値が入っています。空白はありません、何らかの数値が入力されています。 M列には必ず文字が入っています。種類は決まっていて「東京、大阪、名古屋、福岡」の4種類しか入りません。 以上の内容なんですが、やりたいのは、先ず、A~ADをM、P、Q、T、Vのみの5列の表にした上でそこに3列を増やしたいのです。実際にはMPQTVがABCDEになるのでFGHという列が増える形になると思います。そのFGHという列には元T列に入っていた数値を反映させたいのです。 但し条件として ●M列に「東京」と入った場合には同じ行のT列の数値をF列に反映。M列に「東京」と入っている場合はV列に必ずカタカナが入力されています。 ●M列に「大阪」又は「名古屋」と入った場合には同じ行のT列の数値をG列に反映。但しこの「大阪」「名古屋」に関しては同行のV列にカタカナが入ってなくて空白の  場合があります。その場合は無視したいのです。V列が空白でM列が「大阪」「名古屋」の場合、まったく何も反映しない状態でその行はすべて削除で構いません。 ●M列に「福岡」と入った場合には同じ行のT列の数値をH列に反映。但しこの「福岡」と入る場合はV列が必ず空白の状態です。 以上がやりたい事ですが可能ですか?どなたか御教授下さい。

  • EXCELマクロ 検索

    Excelマクロで 検索とその結果のコピーを行いたいのですが、全くの素人のためご教授願えればと思います。 Excel2002で 2つの表から共通する部分をKEYに付随するデータ抜き出したいと思っています。関数VLOOKUPを使えば簡単な作業かと思いますがVBAではそのVLOOKUPやFIND、それにLOOPなどの使い方が今ひとつ理解 できません。 具体例として 表1には A-Z列まで約1000行のデータが存在します。 表2は表1と同じシート上の直ぐ隣列AA-AK列まで表1より必ず多い行数のデータが存在します。また表1のA列にあるデータは すべて必ず表2のAA列に含まれます。 行いたい作業は、VLOOKUPのような検索で、表1A列と表2AA列に共通したデータがあった場合、表2の該当セルを基準としてALからBJ列セルに表1の該当行のデータB-Z列をすべてコピー貼り付けすることです。 A・AA列とも同列内では重複も空白もなくソートされています。 これら以外の列には同じValueのデータや空白が存在します。またデータ件数(行数)も表1・2とも一定ではなく都度変動します。 解りやすくご説明いただけると幸いです。宜しくお願いいたします。

  • エクセル2000のマクロで教えて下さい。

    日々あるデータが送られてきます。 A~AEまであります。 マクロで下記のようにしたいのです。 残すのはA、C、N、T、U、V、W、Z、AAのみですが順序を入替えたい。 順番としてC、A、T、U、W、V、AA、Z、Nの順です。 どのようにすれば良いのか教えて下さい。 もし補足が必要なら申し付け下さい。

  • ユーザーマクロについて。

    初めてユーザーマクロを使ってみようと思い、 CAMで出力したポストをもとに作ってみました。 円の一部を2本の工具を使い加工するだけのパスです。 刃物はΦ6のエンドミル2本を使用しています。 変数として Aを加工する物の直径 Bをその半径 O100 G65P100A100. O200 #2=#1/2 (** P100**) T99 T01 (** 6H-A H01 D01 **) G54G00 G80G91G40G28Z0 G49G28X0Y0M05 M06 T02 G90G00X0Y0 G43Z50.H01 M03S3500 M50 X25.Y-[#2+1.] Z20. Z1. G01Z-1.F150 X-25.F500 G00Z20. Z50. X25. M09 (** 6H-S H02 D02 **) G80G91G40G28Z0 G49G28X0Y0M05 M06 T01 G90G00X0Y0 G43Z50.H02 M03S3500 M50 X25.Y-[#2+1.] Z20. Z1. G01Z-1.F30 X-25.F100 G00Z20. Z50. M09 (** End of tape **) G80G91G28Z0 G49G28X0Y0M05 M06 G90 M30 シミュレーションしてみるとエラーが出てしまいました。 どのようにすればイイですか? プログラム前半部分、訂正 (誤り) O100 G65P100A100. (正) O100 G65P200A100. 下記の皆様の回答をもとにこのようなプログラムで動かしてみました。 今回使用する機械にはファナック(M-18) 手打ちではなく下記のプログラムをコピーして機械に転送しております。 % O100 #1=100. #2=[#1]/2 (** P100**) T99 T01 (** 6H-A H01 D01 **) G54G00 G80G91G40G28Z0 G49G28X0Y0M05 M06 T02 G90G00X0Y0 G43Z50.H01 M03S3500 M50 X25.Y-[#2+1.] Z20. Z1. G01Z-1.F150 X-25.F500 G00Z20. Z50. X25. M09 (** 6H-S H02 D02 **) G80G91G40G28Z0 G49G28X0Y0M05 M06 T01 G90G00X0Y0 G43Z50.H02 M03S3500 M50 X25.Y-[#2+1.] Z20. Z1. G01Z-1.F30 X-25.F100 G00Z20. Z50. M09 (** End of tape **) G80G91G28Z0 G49G28X0Y0M05 M06 G90 M30 % しかし #2=[#1]/2 の場所で「009エラー」 と出ました。 アドレス関係のエラーのようです。 わかる方いましたらよろしくお願いします。 ファナック(M-16)で使用した結果 正常に動作いたしました。 改めて調べた結果 ファナック(M-18)の方にカスタムマクロを付けていなかったそうです。 マクロを使う以前の問題でした。 おさわがせしてもうしわけありませんでした。 今回初めてマクロを使用することになり ここで回答をいただいただけでも 大変ためになりました。

    • ベストアンサー
    • CAM

専門家に質問してみよう