• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:表を検索するVBAについての質問です。)

VBAを使用して表を検索する方法

このQ&Aのポイント
  • 表を検索するVBAのプログラムを組む際にエラーが発生してしまう問題について、解決策を教えていただきたいです。
  • 初心者のため、VBAを使用して表を検索する方法がわかりません。どなたか教えていただけると助かります。
  • ExcelのSheet1に記載されている文字列を使用して、Sheet2から該当する行のB列の値を取得したいです。現在、プログラムを組んでいますが、エラーが発生しています。どうすれば解決できるでしょうか?

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

  • ベストアンサー
回答No.2

こんにちは。みっちょです。 単純ループでの検索は遅いと思うのですが、またコード的に気になるところも多少あるのですが、ご理解に易しいように、できるだけリンク先の趣向に沿ったまま簡易化してみました。一応、最低限動くと思いますので。 Sub 単純検索()   Dim LL As Long, tI As Long, tS As String, tT As String   tS = CStr(Sheets("Sheet1").Cells(1, 1).Value)   LL = Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row   For tI = 1 To LL     tT = CStr(Sheets("Sheet2").Cells(tI, 1).Value)     If (InStr(1, tT, tS, vbTextCompare) <> 0) Then       tS = CStr(Sheets("Sheet2").Cells(tI, 2).Value)       MsgBox tS     End If   Next End Sub 『MsgBox tS』の部分でtSにはSheet2の対応するB列の内容が入っていますので、あとは煮るなり焼くなりお好きなように… こんな感じでいかがでしょう?

gori200088
質問者

お礼

回答ありがとうございます。 上記のソースをいじって試したところ動くようになりました。 実行速度もそれほど気にならないので、問題ないかと思います。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

質問者さまが書いて実行しようとしているVBAソースそのものと、 そのソースのどこで・どのようなエラーになるのかを示してください。

gori200088
質問者

お礼

お返事ありがとうございます。 返事が遅くなりましたが、何とか動く状態になりました。 また、困った事があった時は宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • excel vba 検索の方法について

    excel vba 検索の方法について sheet1とsheet2があり sheet1のA列に10列(全て8桁の数字)文字が並んでいます。 sheet2のA列には1000列(全て8桁の数字)文字が並んでいます。 sheet1のA列とsheet2のA列で同じ文字がある場合 sheet2のA列の同じ文字の隣のsheet2のB列に◎がつくような vbaが書きたいです。 A列の文字は消したり、文字を変えたりします。 コマンドボタンに書いて、ボタンを押せば B列に◎がつくようにしたいです。 ご教授お願いします。

  • VBA 条件検索について

    VBAの検索について質問です。 以下のようなものを作ろうと思います。 sheet1とsheet2がありsheet1のA、Bの数値をsheet2の同じA,Bの数値の値の行を検索して, その同じ値の行のsheet1のCの数値の値からsheet2のCの数値を引いた値をsheet3のC列に返すプログラムを作ろうと思います。空白などで同じ値がない場合はsheet3に空欄を返そうと思います。 以下に例をプログラムの実行例を示します。 sheet1 ■ A 列 B 列 C列 1: 7 | 1 | 3 2: 5 | 8 | 2 3: 2 | 3 | 1 4: 9 | 6 | 4 sheet2 ■ A 列 B列 C列 1: 2 | 3 | 4 2: 9 | 6 | 2 3: 7 | 1 | 5 4: 5|   | 3 sheet3 ■ A列 B列 C列 1: 7| 1 | -2 2: 3: 2| 3 | -3 4: 9 | 6 | 2 自分で以下のプログラムを作成してみたのですが空欄が検索できなかったりしてなかなかできません。 どなたか、教えてください。お願いします。 Sub test() Dim sh1 As Object, sh2 As Object, sh3 As Object Dim d1 As String, d2 As String, a As Long Set sh1 =Sheets(“Sheet1”) Set sh2 =Sheets(“Sheet2”) Set sh3 =Sheets(“Sheet3”) For a = 1 To 3000 Step 1 d1 = sh1.Cells(a,1) & sh1.Cells(a,2) d2 = sh2.Cells(a,1) & sh2.Cells(a,2) Do while d2 <>”” If d1 = d2 Then Sh3.Cells(a,1) = sh1.Cells(a,1) Sh3.Cells(a,2) = sh1.Cells(a,2) Sh3.Cells(a,3) = sh1.Cells(a,3) Exit Do End If a= a+1 d2 = sh2.Cells(a,1) & sh2.Cells(a,2) Loop Next End Sub

  • エクセルVBAで検索の早い方法

    こんにちは。 エクセルのVBAでお教え下さい。 シート1のA列に下記の様なデータがあって ABCDは業者コードだとおもって下さい。 A A B C D D 違うシート2に下記のように業者コードの マスターがあるとします。 A D シート1の全てのA列がシート2のマスターと 合致するかどうかで、合致しなかった場合にエラーを 表示するようなことをしたい(この場合、BCがエラー)のですが、どういうプログラムにするのが処理的に早いでしょうか? ぐるぐる順番に回す方法以外になにか良い手は ありますでしょうか? お教え下さい。よろしくお願いします。

  • 検索VBAを教えてください。

    VBAの勉強中です。 超初心者です。 シート1のB3に入力した値を、シート2のデータベースのC列から検索して、その検索した値と同じ行のD列・E列・F列の値を、シート1のB4・ B5・B6に表示したいと思います。 <シート1>    A     B     C     D 1 2     3       あああ ←ここを入力すると 4       aaa   ←表示したい! 5       bbb   ←表示したい! 6       ccc   ←表示したい! <シート2>    A    B    C      D     E     F 1           あああ    aaa     bbb     ccc 2           いいい      eee     fff      ggg 3           ううう      hhh      iii       jjj 4           えええ     kkk      mmm     nnn 5             おおお     ooo     ppp     qqq findを使えばいいと聞きましたが、使い方がよくわかりません。 例を読みましたが、どう自分に生かせばいいのかわかりませんでした。 どなたか未熟な私に教えていただけませんか? どうぞよろしくお願いいたします。

  • エクセルVBAで検索して内容をコピーする

    VBAで検索をして内容コピーをするやり方を考えているのですが、 初心者でどうもうまくいきません。 処理の内容としては、 シート1のA列、B列とシート2のA列と一致したときに シート2のB列にある内容を シート1のC列にコピーするもの。(空白時は、とばして次の処理へ行く)

  • VBA複数セルで検索

    VBA複数セルで検索 VBA初心者です。 1つのシートにA列氏名1、B列番号1、c列エラー、D列氏名2、E列番号2と並んでます。 例) a*1001* *a*1001 a*1005*該当なし *a*1002 a*1000* *c*1003 c*1003* *e*1005 c*1005*該当なし *d*1004 以下続く(*はセル区切り) 氏名1と番号1の組み合わせが氏名2、番号2にあるかどうかチェックして ないものは、C列に「該当なし」とエラーを表示させたいです。 Find関数を使用してやってみたのですが、氏名と番号をセットで検索する方法がわかりません。 氏名と番号をくっつけて検索すればいいのでしょうか?

  • エクセルVBAで、ある文字を含んでいたら別シートに抽出したい

    エクセル2002を使っています。 シート1に  A列に氏名  B列に住所  C列に電話番号 のデータが300件の表があります。 B列を検索してたとえば大阪府があれば、その行(ABC列)をシート2へコピーして抽出したいのです。  VBAを使ってやりたいのですがどうしたらよいでしょうか? よろしくお願いします。

  • 複数のシートから検索抽出

    検索値シート(4)【B】123で行い、検索範囲をシート(1)、(2)、(3)のうちの一つの【B】列でヒットした【A】列ABCをシート(4)の【C】に検索結果を表示させたいのですがどのようにしたらよいでしょうか。 また、シート(4)【B】列1000以上全て検索値としたいのですが、どうかよろしくお願いします。 シート(1)~(3) 【A】  【B】  【C】 ABC ....123 DEF ...456 GHI ....789 JKL ....795 MNO ..816 シート(4) 【A】 【B】 【C】    .. 123 ... ??? ......... 456 ......... 789 方法が分からず困っています。 お手数ですが、どうかお教えください。

  • VBAで表データの検索

    アクティブセルの2列隣のデータを”Sheet2”から検索し、情報が見つかったセルの隣の列のデータをアクティブセルに返すために、下記のようなプログラムを組んでます。 ****************************************************** Set myRange=Worksheets("Sheet2").Range("A1:B256") B=ActiveCell.Offset(0,2) Set c=myRange.Find(B) ActiveCell.Value=C.Offset(0,1) ****************************************************** ほとんどうまくいくんですが、一部、期待と異なったデータが帰ってきます。例は以下のとおりです。   (1)検索値「#1」を検索すると、「#19」に該当するデータが帰ってくる   (2)検索値「#2」を検索すると、「#29」に該当するデータが帰ってくる   (3)検索値「#3」を検索すると、「#39」に該当するデータが帰ってくる   (4)検索値「#4」を検索すると、「#49」に該当するデータが帰ってくる   (5)検索値「#5」を検索すると、「#59」に該当するデータが帰ってくる   (6)検索値「#6」を検索すると、「#69」に該当するデータが帰ってくる   (7)検索値「#7」を検索すると、「#79」に該当するデータが帰ってくる   (8)検索値「N」を検索すると、アクティブセルの内容が消去される   (9)検索値「M」を検索すると、「14mm」に該当するデータが帰ってくる   (10)検索値「K」を検索すると、アクティブセルの内容が消去される。 なお、”Sheet2”には、#80、#79、#78・・・・と降順にデータが並んでおり、その後ろにA,B,C・・・とアルファベットが正順に並んでます。 何か、よい解決法はないでしょうか?

  • VBA 検索ボックスの作成について

    VBA初心者です。 エクセルで、ある列(仮にA列)のみに限定し、ショートカットキーを押した時に、 別シートにあるデータベースから検索、 検索結果をショートカットキーを押したセルに反映させるマクロを組みたいと思っています。 具体的には、 シート1→(請求明細用シート) A列→コード B列→企業名 C列→部署名 D列→請求内容 E列→金額 etc シート2→データベース(全コード一覧) A列→コード B列→企業名 C列→部署名、のみが記載。 検索ボックスは、 ユーザーフォームにテキストボックスひとつ、ボタン1つ、リストボックス1つ。 テキストボックスに文字を入力し、ボタン(検索用)を押すと、 リストボックスにシート2上のAーC列の結果が表示され(検索条件:部分一致)、 検索結果をリストボックス上でダブルクリックすると、 ショートカットキーを押したA列のセル(及びB-C列)に検索結果を出力することができる、 といったプログラムを考えています。 (B-C列への出力はVLOOKUPだけで大丈夫なので、マクロ上で組む必要はないです。 また、テキストボックスで検索する時は、基本的にB列(会社名)の内容で検索する予定です。 そして同じ会社でも部署が違えば、別のコードを採用している為、 検索結果が複数ある場合があります。 注文が多くて申し訳ありませんが、よろしくお願いします。