• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:HLOOKUPでもVLOOKUPでもなくて、それに似た関数はありますか)

エクセルで特定の文字列を含む行を検索する方法

rukukuの回答

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.6

>VBAまったくの超初心者で、まったく何もわからず、図々しいお願いですが、 >そのVBAをちょこっと載せて頂けたら… シート1 1 ミッキー サッカー チョコレート 2 ミニー 野球 クッキー 3 ドナルド テニス ビスケット 4 デイジー 水泳 ポテトチップス 5 ミッキー サッカー チョコレート 6 ミニー 野球 クッキー 7 ドナルド テニス ビスケット 8 デイジー 水泳 ポテトチップス シート2 A列に 野球 水泳 として、以下のプログラムを試してみてください。 Sub sumple1()   '変数の定義   Dim Line1  As Long   Dim Line2  As Long   Dim Line3  As Long   Dim LastLine1  As Long   Dim LastLine2  As Long      'sheet3のデータを消去   Worksheets("Sheet3").Cells.Clear   '最終行の取得   LastLine1 = Worksheets("Sheet1").Range("A65536").End(xlUp).Row   LastLine2 = Worksheets("Sheet2").Range("A65536").End(xlUp).Row   '条件に合うものをコピー   For Line2 = 1 To LastLine2     For Line1 = 1 To LastLine1       If Worksheets("Sheet1").Cells(Line1, 3) = Worksheets("Sheet2").Cells(Line2, 1) Then         Line3 = Line3 + 1         Worksheets("Sheet3").Cells(Line3, 1) = Worksheets("Sheet1").Cells(Line1, 1)         Worksheets("Sheet3").Cells(Line3, 2) = Worksheets("Sheet1").Cells(Line1, 2)         Worksheets("Sheet3").Cells(Line3, 3) = Worksheets("Sheet1").Cells(Line1, 3)       End If     Next Line1   Next Line2 End Sub 並び順が期待通りでないと思ったら、上記のプログラムに続いて、以下のプログラムを実行してください。 Sub sumple1a()   Worksheets("Sheet3").Cells.Sort Key1:=Range("A1"), Header:=xlNo End Sub ------------------------------------------------------------------ >オートフィルタですと、シート2にある文字列を一つずつフィルタを >かけなくてはいけなくて マクロを使って、「シート2にある文字列でフィルタを掛けて、 結果をシート3にコピーする」ということを順次行うことも出来ます。 という意味で回答しました。 ⇒オートフィルタと関数を使えばもう少しうまく出来そうな方法を  思いつきましたので別途回答します。

chip-goo-goo
質問者

補足

またまた回答、本当にありがとうございます! マクロ実行してみたところ、欲しかった結果が出ました。 でも、、、 質問したときに、書くのを忘れてたのですが、 シート1のエクセル表は更新されていくので、行が段々増えていくのです。 回答して頂いたものだと、行の数だけ、 Worksheets("Sheet3").Cells(Line3, 3) = Worksheets("Sheet1").Cells(Line1, 3) この実行を増やさなくてはいけないですよね? それだとちょっと使い勝手が… それを解消する方法はありますか? シート1と同じ行分だけ、マクロの中の↑の行も増やせていけるなんて、 もう無理でしょうか?

関連するQ&A

  • vlookup関数とHlookup関数の組み合わせ

    Excelの関数で、HLOOKUPやVLOOKUPがありますが、この 2つの関数を合わせた様な感じで、列の値と行の値の 2条件がマッチした値を別シートに作成した集計表から 取得させたいですがどの様にすればよいでしょうか。 質問が分かりにくいですがどうぞよろしくお願い致します。

  • エクセルでHLOOKUP関数の選択範囲について

    エクセルでHLOOKUP関数を使って、検索したいのですが、 シートは、一覧表のシートと データが入っているA101、B203、C305、...シートは300シートくらいあります。 一覧表のシートには、下のような表になっていて、      A列  B列  C列  D列 ...          1003、1004、1005、1006、... 2行目 A101  3行目 B203 4行目 C305       .       .       . データのはいっているシート、A101は下の表になっています。      B列 C列 D列、・・・、Z列 2行目 1004、1005、1006、... 3行目 100、 200、 150、... 一覧表のB列の2行目には HLOOKUP(B2、シートA2のB2:Z3、2行目、FALSE) という感じで、シート名をセルA2のものを参照にして 探して表示させ、B列、C列、D列の2行目から下の行も 表示させたいのですが、うめくできませんでした。 INDIRECT関数を使ってみましたが、セル範囲が無効という エラーがでてしまいます。↓こんな感じで入力してみたのですが... SUMPRODUCT((INDIRECT($A2&"!$B$2:$Z$3"))=$B$1,(INDIRECT($A2&"!$B$2:$Z$3"))) 1つづつデータを見て手打ちはデータが多く、 どんどんデータが増えていくので できれば関数を使って表示させたいと思っています。 詳しい方いらっしゃいましたら、どうか教えてください よろしくお願いします。

  • VLOOKUP関数で左端より左の表示

    エクセルのデーター表でC列に会社名が入っていてF列に担当名が入っているがあります。 別のシートで会社名を入れると担当名が表示されるようにVLOOKUP関数を使用しています。 また別のシートで担当名を入れると会社名が表示されるようにしたいのですがどうしたら良いでしょうか? VLOOKUPではできなくて困ってます。 F列の担当名は所々空白があります、そのためかLOOKUP関数を使ってみましたがうまくいきません。

  • HLOOKUP関数のコピーについて

    初歩的な質問ですが、教えて下さい。 別シート上に存在するデータを、行ごとに一つのシートに反映したいと考えています。 関数の書式=HLOOKUP(F2,納品数!B$6:AO$300,2,0) などと定義して使用する場合、上記関数を同列下方に、オートフィルにてコピーしたいのです。 そのさい   1列目 関数  =HLOOKUP(F2,納品数!B$6:AO$300,2,0) 2列目 関数  =HLOOKUP(F2,納品数!B$6:AO$300,3,0) のように、「AO$300,2,0 の 2 を 3 へと加算してコピーしたいのですが普通に下方コピーすると 1列目 関数  =HLOOKUP(F2,納品数!B$6:AO$300,2,0) 2列目 関数  =HLOOKUP(F2,納品数!B$6:AO$300,2,0) となってしまい「AO$300,2,0」が「AO$300,2,0」のまま変化せず同じ値しか反映できません。 「AO$300,2,0」を「AO$300,3,0」に加算コピーする方法を教えて頂けないでしょうか。 分かりずらい説明で恐縮です。 宜しくお願い致します。

  • VLOOKUP関数について

    BとC列に抽出表があり検索範囲データがEとF、HとI列の2グループに分かれています。 VLOOKUP関数を使って検索範囲が2つのグループに分かれている場合の計算式を教えてください。 VLOOKUP関数以外でも出来る方法があれば教えてください。

  • VLOOKUP関数について

    現在、Excelで 『検索キーワード』 のランキング表を作成しております。 月ごとに別シートに、1位から順番に検索キーワードと検索回数を並べて表示していますが、 (A列に順位、B列に検索キーワード、C列に検索回数) 数か月分を1つのシートにまとめて表示するための関数を教えていただけますでしょうか。 (A列に順位、B列に検索キーワード、C列に検索回数3月分、D列に検索回数2月分、E列に検索回数1月分) なお検索キーワードの検索回数や順位は、月ごとに異なっております。 どうやらVLOOKUP関数を利用するところまでは分かったのですが、記述方法が不明なため質問させていただきました。 どうぞよろしくお願いいたします。

  • セルの結合がされた表をHLOOKUPで検索する場合について

    Excel初心者です。質問があります。 下記のような表があります       A列   B列   C列   D列 行番号1    12/1       1/1 行番号2  件数   金額  件数   金額    行番号3   2    100   3    200 行番号5   1/1 ここでHlookupを使って下記のように検索します A5に1/1と入力して 件数を検索するには   =HLOOKUP(A5,A1:D3,3) → 3 ここまではいいのですが 金額の「200」を検索するにはどのような関数を使えばよいのでしょうか? ※行番号1の「12/1」と「1/1」はセルの結合をしており 「12/1」のセルはA1、「1/1」のセルはC1になっています。 HLOOKUP関数とVLOOKUP関数又はCOLUMN関数を組み合わせれば出来るのでしょうか よろしくお願いします。

  • VLOOKUP関数についての質問です。

    VLOOKUP関数についての質問です。 例えば、シート1に、 A列    B列  C列 番号  品物  送り先 1   ばなな スーパー 2   ミカン 学校 3   イチゴ ケーキ店  あるとします。 VLOOKUP関数を用いて、 シート2に A列    B列 送り先  品物 ・   ・ ・   ・ ・   ・ とそれぞれ入力したいとして、以下のセルも同様の式を使い入力しますが いちいち式を立てて入力していくと大変です。 セルにVLOOKUP関数をコピーして使うにはどうしたらいいですか?? お願いします。

  • エクセルの関数VLOOKUPについて教えて下さい。

    エクセルの関数VLOOKUPについて教えて下さい。 範囲にあたるデーター部分が3つのかたまりに分かれている時どのような数式で表すことができますか? 具体的には、HIJ KLM OPQの列位置にある3つの表の中から検索したいのです。 作った数式は1つの表から検索するもので =IF(C9="","",IF(ISNA(VLOOKUP(C9,材料一覧!$H$5:$J$54,2,FALSE)),"未登録",VLOOKUP(C9,材料一覧!$H$5:$J$54,2,FALSE))) です。(C9,材料一覧!$H$5:$J$54,2,FALSE)の後に&(同じ数式で列文字を入れ替えて)で繋げてみました。列範囲KLMの表は上手くいったのですが、3つ目のOPQの表は上手くいきませんでした。 原因と正しい数式を教えて下さい。 よろしくお願いいたします。

  • IFとVLOOKUP関数

    VLOOKUP関数を使って検索結果を出そうと思いましたが、 データ量が93000行X8列になりますので、 共通分けして複数のシート(A、B、C、D)に分けました。 あるセルに『A』と入れると『シートA』の表から検索を行う、 あるセルに『B』と入れると『シートB』の表から検索するといった感じにするには、 IFとVLOOKUPを使用するなら、どのような式を入れたらいいのでしょうか? また、他の関数を使う式があるのでしょうか? マクロやVBAも考えましたが、 あまり知識がありません。 データ量から考えると マクロやVBAで行った方がいいのでしょうか?