• 締切済み

エクセルで任意の文字を指定範囲から検索

お世話になります。 エクセルにて特定のセルに入力した文字を指定してある範囲から検索し、指定した位置に表示をさせると言った事は出来るのでしょうか? 例 シート1:A1に検索したい文字を入力 シート2:A1~A50までの行を検索 シート1:上記検索で該当する行をA2~A50に表示 こういった検索は可能なのでしょうか? Ctrl+Fやフィルタではなく、セルに入力した文字を検索するようにしたいのです。 可否のみでも、こうゆうマクロを使えば出来ると言った事でも構いません。 よろしくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

マクロで、一番初歩的にやってみる。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False k = 2 d = Worksheets("Sheet2").Range("a65536").End(xlUp).Row MsgBox d For i = 1 To d If Worksheets("Sheet1").Range("A1") = Worksheets("Sheet2").Cells(i, "A") Then Worksheets("Sheet1").Cells(k, "A") = i k = k + 1 End If Next i Application.EnableEvents = True End Sub イベントという概念の理解が必要で、他シート参照とかもあって 初心者には易しくは無いと思う。 ーーー 関数では作業列を使って、「imogasi方式」で沢山答えている。 Googleで「imogasi方式」で照会のこと。 例データ Sheet2 A2:C11 A列   C列 12 1 23 12 2 34 56 12 3 11 23 11 12 4 C2は =IF(A2=Sheet1!$A$1,MAX($C$1:C1)+1,"") 下方向に式を複写。 ーー Sheet1 A2に =MATCH(ROW()-1,Sheet2!$C$1:$C$100,0) 下方向に式を複写。 結果 A1以下 12 <-条件 2  <-行目 4 7 11 セルの値が文字列でも同じです。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

次のQ.Noに回答した内容の小改造ですが、お役に立てば幸いです。 Sheet1 A列は作業列(質問内容と相違していますが、データの後ろに置くことも可能ですので、ご自分で改造してください) ................A...............B ..1................1.......(株)A ..2...............2...(有)A ..3........................(株)B ..4........................C(株) ..5...............5.......A(株) ..6...............6.....AA(株) A1の式=IF(ISERROR(SEARCH(Sheet2!$A$1,B1,1)),"",ROW()) 以下下方にコピー Sheet2 A1に検索する文字を入れる ................A................. ..1...............A................. ..2.......(株)A................. ..3...(有)A................. ..4.......A(株)................. ..5.....AA(株)................. A2の式=IF(ISERROR(SMALL(Sheet1!$A:$A,ROW(A1))),"",INDEX(Sheet1!$B:$Z,SMALL(Sheet1!$A:$A,ROW(A1)),COLUMN(A1))) 以下下方に複写

  • harapeco7
  • ベストアンサー率54% (33/61)
回答No.3

>こうゆうマクロを使えば出来ると言った事でも構いません。 との事ですので、マクロの貼り付け~実行のやり方を理解していると判断し 与えられた条件通りの動きをするマクロを書いてみました。 ※実行するとSheet1のA2~A50(結果表示スペース)が削除されます。 ※テスト用のbookでテストして下さい。 ※出来るだけ解りやすく(修正しやすく)記述しましたが、不足分がありましたら再度来ます。 Sub 検索() Dim 検索文字列 As String Dim 検索結果 As Range Dim 最初のセル As String 検索文字列 = Worksheets("Sheet1").Range("A1") Set 検索結果 = Worksheets("Sheet2").Range("A1:A50").Find(検索文字列) If Not 検索結果 Is Nothing Then 最初のセル = 検索結果.Address Sheets("Sheet1").Range("A2:A50").Clear Do While Not 検索結果 Is Nothing HIT数 = HIT数 + 1 If HIT数 >= 50 Then MsgBox "検索中断 HIT数が49件を越えました。" Exit Do End If Sheets("Sheet1").Cells(HIT数 + 1, 1).Value = 検索結果.Cells.Row Set 検索結果 = Worksheets("Sheet2").Range("A1:A50").FindNext(検索結果) If 最初のセル = 検索結果.Address Then MsgBox "検索完了 HIT数:" & HIT数 Exit Do End If Loop Else MsgBox "該当セルは見つかりませんでした。" End If End Sub

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

>シート1:A1に検索したい文字を入力 >シート2:A1~A50までの行を検索  >シート1:上記検索で該当する行をA2~A50に表示 A1~A50の結果をA2~A50に表示するのは難しいので、シート2の対象も A2~A50ということで考えてみましたが、以下でいかがでしょうか? シート1のA2に以下の式を記入し、A50までオートフィル  =IF(ISERROR(FIND($A$1,Sheet2!A2)),"",Sheet2!A2) 該当しない場合は、「該当なし」などと表示する場合は、式の""を置き換えればよいです。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

検索結果をA2~A50に表示する方法は分かりませんが、 検索結果のみを表示させることは↓の方法で可能ですだと思います。 編集 → 検索 → オプション この画面でどこのセルに存在するかだけは確認できると思います。 こんな回答ではご期待に添えないような気がしますが・・・ 

関連するQ&A

  • 1000行のエクセルデータから、指定文字を含む行を検索するには

    エクセルで作成した英和辞書の文字検索を、簡単にできる方法を探しています。 データの総数としては、列は日本語・英語の2列なんですが、行数が1000行近くあります。 やりたいことは、検索者が検索したい日本語を入力すると、それに該当する行(日本語・英語両方)のみがピックアップされて表示される、というものです。 オートフィルタ→オプションで指定をかけるのが最も簡単と思われますが、検索者にはこういった指定を知らない人もいる為、検索文字を入力するだけで簡単に該当行がヒットする、といった仕組みを作れれば、と考えています。 このような仕組みは、マクロを使用しないと難しいでしょうか? マクロ初心者のため、マクロ以外の方法、もしくは、マクロの設定方法についてご存知の方、分かりやすく教えていただけると助かります。

  • EXCEL 行と列を指定して、範囲指定する方法

    EXCELの使い方を教えてください。 関数で試みているのですが、以下のような操作を行うことは可能でしょうか? (マクロ(VBA?)は使用したことがないため、抵抗があります。それでも、マクロを組むしかないというのであればその方法も教えてください。) 「表示シート」にて行と列を指定することで、 結合された5行×5列の表を表示させたいのです。 指定するセルも結合させており(「入力シート」)、 結合されたセル(行/列)を指定して、表示する範囲を決めてやりたいのです。 結合を解いて、たくさんの文字を指定する形にしてしまえば楽かもしれないのですが、この2文字だけで他にもたくさん処理させているため、 指定する文字はこの2文字のみで処理させたいです。 自分なりには、「表示シート」のD10セル(F10まで結合されている)に =INDEX(SUMPRODUCT((入力!B3:B27=表示!D4)*(入力!C2:Z2=表示!D3)),1,2) というような関数を組んでみたのですが、うまく表示されません。 なにか、うまく表示させる方法はあるのでしょうか? ちなみに、表内の犬など狐などは便宜的に書いているだけで、 数字が入るセルか、日付が入るセルか、文字列が入るセルかということだけが汲み取っていただければと思います。 入力するセルと表示させるセルの大きさも異なるようにしたいので、 良い方法があれば教えてください。 よろしくお願いいたします。

  • [ExcelVBA]検索文字で検索し文字入力する

    いつもお世話になっております。 以前に投稿をさせていただきましたgitmykと申します。 http://okwave.jp/qa/q7563274.html 前回はご回答くださり誠にありがとうございます。 この場で感謝申し上げます。 内容を精査させていただきましたので、再度投稿させていただきます。 問題(1) Sheet2のA列に[範囲指定文字]、B列に[検索文字]、C列に[入力文字]が複数入っている。 Sheet1を[範囲指定文字]で検索しCurrentRegionで範囲指定する。 範囲指定した全てのセルに対し、[検索文字]の上から順に検索していく。 該当セルがあれば、右4セルoffsetし、対応する[入力文字]を入力する。 ([検索文字]と[入力文字]は1対1で対応している) 問題(2) Sheet2のA列に[範囲指定文字]、B列に[検索文字1]、C列に[検索文字2]、D列に[入力文字]が複数入っている。 Sheet1を[範囲指定文字]で検索しCurrentRegionで範囲指定する。 範囲指定した全てのセルに対し、[検索文字1]の上から順に検索していく。 該当セルがあれば、右2セル上1セルoffsetしたセルを対応する[検索文字2]で検索し、双方が一致した場合のみ[検索文字1]で検索した該当セルから、右に4セルoffsetしたセルに、対応する[入力文字]を入力する。 ([検索文字1]と[検索文字2]、[入力文字]は対応している) 問題(3) Sheet1を[範囲指定文字]で検索し下に1セルoffsetした位置をCurrentRegionで範囲指定した場合。 上記内容をExcelVBAでどのように記載すればよいか、ご教授くださいませんでしょうか。 VBA学習中です。 何卒宜しくお願いいたします。

  • 検索した文字のセルを基準に範囲指定コピーのマクロ

    表題のマクロを教えてください。 検索範囲 シート1のA1:K100 検索する文字 ” 成績 ” コピーする範囲 見つかったセルの下の行から5行~10列まで全部。 貼り付ける場所 シート2のB1 宜しくお願いします。

  • エクセルで絞込み検索をしたいのですが。

    エクセルで絞込み検索ができないものかと頑張っているのですが知識が足りずできません。 具体的にどういった動作をさせたいかというと、画像を参照していただき、、 ”お客様登録シート”側にそれぞれ情報を登録して、そのデータを”入力シート”側の赤く塗りつぶしたセルそれぞれに検索結果を表示させたいのです。 黄色く塗りつぶしたセルに検索ワードを入力して検索。 登録年月日、又はフレームNo、もしくはその両方に該当する行の情報を出したい、ということです。 そのような、絞込み検索かつ指定した複数のセルにそれぞれの結果を表示させることは可能なのでしょうか? できれば関数でしたいのですが、マクロでないとできないということであればその方法を教えていただきたいです。 関数は少々かじっている程度。 マクロについてはほぼ初心者です。 文才もなく伝わりにくい説明かと思いますが、わかりやすいご回答をよろしくお願いします。

  • エクセルで指定した数字を含む検索について

    初歩的な質問で申し訳ございません。 添付のような表があり、現在はA列にオートフィルタをかけて数字下二桁を入力後、ソートがかかった商品表示され、日付の 列に個数の入力を行っています。(A列の番号は20桁位あるので、実際は下4桁で検索しています。) 【現在の作業】 A列にオートフィルタから下4桁入力後に検索→日付の列に個数を入力→また検索 【理想の作業】 ある程度、検索する商品の番号の下4桁をどこかに候補として挙げ、その数字を含む行だけ表示→一気に個数だけ入力 VBAでもマクロの記録でも何かよい方法はございませんでしょうか? イメージとしては、1行目から5行目にあるオレンジのボックスの中に検索したい商品の番号4桁をいくつか入力し、それに該当する商品だけを7行目のA列から検索し、その枠ごとに記載された数字を含む行のみソートされ表示されるようにできると助かります。 どうぞよろしく御願いいたします!初歩的な質問で申し訳ございません。 添付のような表があり、現在はA列にオートフィルタをかけて数字下二桁を入力後、ソートがかかった商品表示され、日付の 列に個数の入力を行っています。(A列の番号は20桁位あるので、実際は下4桁で検索しています。) 【現在の作業】 A列にオートフィルタから下4桁入力後に検索→日付の列に個数を入力→また検索 【理想の作業】 ある程度、検索する商品の番号の下4桁をどこかに候補として挙げ、その数字を含む行だけ表示→一気に個数だけ入力 VBAでもマクロの記録でも何かよい方法はございませんでしょうか? イメージとしては、1行目から5行目にあるオレンジのボックスの中に検索したい商品の番号4桁をいくつか入力し、それに該当する商品だけを7行目のA列から検索し、その枠ごとに記載された数字を含む行のみソートされ表示されるようにできると助かります。 どうぞよろしく御願いいたします!

  • エクセルで入力した文字を別シートで検索して・・・出た結果を・・・

    先日、質問で下記の答えをご教授頂いたのですが、 シート1のA1に入力した文字を シート2の1行目から検索 検索された文字の同列の2行目の数値を シート1のB1に表示させるにはどのようにしたらよろしいでしょうか? 「 =IF(OR(A1="",COUNTIF(Sheet2!1:1,A1)=0),"",INDEX(Sheet2!A:Z,2,MATCH(A1,Sheet2!1:1,0))) 」 シート2の1行目から検索をして、そこに該当するものがなかった「シート1のA1に入力した文字がなかった」場合 「シート1のB1」に0を表示させる事はできるのでしょうか? 初心者でして、式の内容を理解できてなくすみません。 ご教授の程を、宜しくお願い致します。

  • EXCEL VBAで文字列の検索とコピー

    検索したい文字をinputboxで入力して、A列を検索して、検索文字を含むセルをコピーして、そのコピーしたデータを、別のシートに貼り付ける、次に該当したセルをさっきコピーしたデータの次の行に貼り付けて・・・。とデータが入力してある最終行までの繰り返し、をやりたいのですが、ご指導の程、説明が下手ですが宜しくお願いします!

  • エクセルVBAで指定範囲をしたい

    今、シート上である文字列を検索してそれを別のシートに転記させる簡単なツールを作っています。 そこでシート丸ごと 検索するのは大変なので、行と列を指定範囲するように入力するようにしました。 例: [列]→ A [行]→ 10 入力した列の値を数値に変換したいのですが、どうすればよいのでしょうか? 例えば Aであれば1, Bであれば2・・・ Zであれば25 のようにしたいのです。

  • エクセル2003、範囲指定のことで

    エクセルあるシートのA1~L1に項目名が設定してあります。 他の時に使用したシートをコピーして項目名を利用してA2 からは再入力して使っていこうと考えています。 A2セルにカーソルを置いて、Ctrl+ShiftとEndを押して旧の データーが入っている部分を指定し編集→クリヤー→すべてで クリヤーします。 ところが、再度A2セルにカーソルを置き再びCtrl+ShiftとEnd を押すとまた同じ範囲が指定されてしまいます。 何故でしょう? どなたか教えてください。 宜しくお願いします。

専門家に質問してみよう