• ベストアンサー

シート間の検索したデータの受け渡しについて

シート1に日付、名前、その他の項目があり、シート2に日付を入力すると、シート1から検索された行を全てシート2に表示したいのですが、そのようなことは可能でしょうか? 1行だけだと、わかるのですが、何行もある場合はどのように表示したらいいのかわかりません。 どなたかご教授お願いします。 また、このような処理はエクセルだけでは厳しいのでしょうか? やはり、マクロを使用したほうがよいのでしょうか?

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

  • ベストアンサー
  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.3

一例です。 Findメッソドを使わない方法です。 標準モジュールに登録して実行してください。 <前提>  Sheet1:元データ  Sheet1のA列:日付  Sheet2のA1セル:検索する日付  Sheet2の2行目以下に結果出力 '<マクロ> Sub test()  Dim r1 As Long  Dim r2 As Long  Dim Ws1 As Worksheet  Dim Ws2 As Worksheet  Set Ws1 = Worksheets("Sheet1")  Set Ws2 = Worksheets("Sheet2")  r2 = 2  Ws2.Range("A2:IV65536").ClearContents  For r1 = 1 To Ws1.Range("A65536").End(xlUp).Row   If Ws1.Cells(r1, "A").Value = Ws2.Range("A1").Value Then    Ws2.Rows(r2).Value = Ws1.Rows(r1).Value    r2 = r2 + 1   End If  Next r1 End Sub

aiurai54
質問者

補足

上記テストでやってみます。 ご連絡ありがとうございます。

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

その他の回答 (2)

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

(1)>はエクセルだけでは厳しいのでしょうか エクセルを関数と、捉えていると、#1のご回答のように難しい式になります。作業列もつかわず、その点は良いのですが。 エクセルは抜き出し問題は苦手です。数の計算などが関数のメインで データを好きなように抜き出す、並べるのは、やればやっとできる、傍流の処理です。 この類の質問は毎日載っているが。 (2)作業列を使う方法はimogasi方式で沢山私が回答してます。 (3)>マクロを使用したほうがよいのでしょうか マクロもFindメソッドなど使う方法は、WEB上で、諸所に例が載っているが、やや難しい。マクロはエクセル、アクセス、ワード他それぞれあって、質問者が言っているのは、エクセルのVBAのことになります。 (4)ユーザー関数を使って式を少し判りやすく aのセル範囲で、bと等しくて、c番目の行数を探す関数。 標準モジュールに貼り付ける。 Function fn(a, b, c) Dim cl As Range i = 0 k = 0 For Each cl In Range(a) i = i + 1 If cl = b Then k = k + 1 If k = c Then fn = i Exit Function End If End If Next fn = "" End Function を定義する。 ロジックは幼稚な総なめ法のままにしてある。 ーー 例データ A2:A14 2007/7/1 山田 2007/7/5 鈴木 2007/7/1 大賀 2007/6/2 大川 2006/12/1 小野 2007/7/1 星野 2007/7/2 近藤 2007/7/3 千葉 2007/7/4 神田 2007/4/1 上野 2007/5/23 庄司 2007/7/1 木村 2007/3/31 米原 ーー D2に =INDEX($A$1:$B$20,fn("$A$1:$A$20",DATE(2007,7,1),ROW()-1),COLUMN()-3) これをE2に複写し、 d2:E2をD5:E5まで式を複写する。 結果 2007/7/1 山田 2007/7/1 大賀 2007/7/1 星野 2007/7/1 木村 行を下へ複写しすぎると、#VALUE!出るが、2007/7/1をContIFした数より行数-1が多ければ空白とする式を入れるが、長くなるので今回略。

aiurai54
質問者

補足

デバックしながら確認したのですが、どうも値が入りません。 標準モジュールに上記のコードを貼り付けるだけで問題ないと思うのですが・・。 シート1のA4列に日付、B4列に名前、C4列からデータがあり、 シート2のC3に日付が入力されているとする。 そして、シート2のD3に下記の計算式を入力しても値が表示されなかったのですが。。他におかしなところありますか? 何かありましたら教えてください。 =INDEX(シート1!$A$1:$C$1000,(fn("シート1!$A$1:$A$1000",$C$3,ROW()-3)),1)

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

具体的なシートの構成が分からないので的確な回答はできないかもしれませんが、Sheet1のA列に日付があるとします。別シートのA1セルにも検索したい日付を入力しておき、そのシートの適当なセルに以下の式を貼り付けて、右方向、および下方向にコピーしてみてください =INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$A$1:$A$100=$A$1)*ROW(Sheet1!$A$1:$A$100),),COUNTIF(Sheet1!$A:$A,$A$1)-ROW(A1)+1)) ただしこの式だと、表示すべき行数以上ではエラーになります。 エラーを回避するよう条件判定を追加したのが下の式になります。 =IF(COUNTIF(Sheet1!$A:$A,$A$1)-ROW(A1)>=0,INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$A$1:$A$100=$A$1)*ROW(Sheet1!$A$1:$A$100),),COUNTIF(Sheet1!$A:$A,$A$1)-ROW(A1)+1)),"")

aiurai54
質問者

補足

早速ご回答頂き、ありがとうございます。 やってみたのですが。。。 4件表示しなければいけないところ、2件ほどしか検索にひっかけることができませんでした。 また、検索項目を2個指定した場合は同じようにさらにややこしい式になりますよね。。 エクセルの関数って難しいです。

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

関連するQ&A

  • エクセルでの検索について

    初めて質問させていただきます。 エクセルシートに1万個程度の番号が 縦(行)に並んでいます。なお、番号はそれぞれ異なります。 あるフォームに日付と10個の異なる番号を入力すると、 エクセルシートから合致する番号を検索し、 エクセルシートの一行目に日付が自動的に入力され、 その行を色塗りしたいと考えております。 これをVBA(マクロ)にて作成したいのですが、 初心者なのでどのようにやればよい分かりません。 どうか教えていただけないでしょうか。 よろしくお願いします。

  • ブック全体(シートは毎月増えます)を検索するには

    VBAを勉強中です。 B列に入力された日付から、 例えば2012年3月1日~31日を指定して該当があれば、 行全体をコピーして実行したページにある表に貼りつけるマクロを組みたいと思っています。 (さらに不必要な項目は削除したい!&自動集計も) 検索は実行シートより前にあるシート全体で、 かつ、シートは毎月増えるので、具体的な指定はできません。 このような状況であれば、どんな関数を使用するのが良いですか? 検索する日付を指定するのにメッセージボックスを使用するなど、 手間があることは構いません。 どうとりかかるか、ヒントをいただければと思います。 よろしくお願いします。 Excel2007 /Windows Vistaを使用しています。

  • 【EXCEL】検索機能を追加したい

    EXCELの顧客管理表に検索機能を追加したいと思っています。 概要は以下の通りです。 ・Sheet1を顧客データ一覧、Sheet2を検索用シートとし、Sheet2の上段に検索したい 単語又は日付を入れ検索ボタンを押すと、Sheet1のリストからデータを抽出しSheet2中段以降に 表示、が理想です。 ・Sheet1の顧客データは、毎日数行ずつ追加します。 項目は「日付」「顧客名」などB1~M1まで入っています。 似た質問を調べ、↓の状態までは設定できました。 ・Sheet2のB1~M1にSheet1同様の項目を作っておき、抽出したい項目の2行目に 検索対象文字を入れる。 (例 B1の項目が日付の場合、B2に”2007/01/16”) Sheet2に作った「検索ボタン」を押すと、Sheet2の4行目 以降に検索対象文字を含むデータが抽出される。 (4行目にもSheet1同様の項目を入れています。) ちなみに、検索ボタンのマクロの内容は以下の通りです。 Private Sub 検索_Click() Worksheets("顧客入力").Range("顧客データ").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("B4:M5"), CopyToRange:=Range("B8:M1063"), Unique:=False End Sub ※顧客データ・・・Sheet1の顧客リストに定義している名前 ※顧客入力・・・Sheet1の名前 これで基本的な検索はできるようになったのですが、日付指定に関して足りない部分があります。 特定の日付指定は可能なのですが、2007/01/01~2007/01/31のような範囲の指定ができません。 また、文字列の検索で「~から始まる」検索は出来るのですが「~を含む」検索が出来ません。 マクロ初心者なのでどこをどう変えればいいのかが分からず困っています。ご教授いただければ助かります。

  • エクセル2013マクロで全て検索後、別シートに・・

    頑張ったのですが、残念な結果でした・・・ 分かる方教えて頂けますか? エクセルのシート1 A:Cにデータが入っています。 シート2のA4に検索したい文字を入れ、検索ボタンをクリック。 シート1のA:Cを全て検索し、見つかったらシート1のA:C1行をシート2のA6に書き出したいのです。 シート2のA5~C5には、タイトルが事前に入力されています。 どなたか、助けて頂けますか? 私が頑張った所、1行しか検索できず・・・ LOOPで回した所、同じ行が何行もLOOPされ・・・ マクロ初心者には難しい処理のようです。。。

  • 二つのシートから名前で検索して抽出するには

    ある条件の項目以外は同じようなデータが入っているシートが二つあります。 その二つのシートからある項目(たとえば名前)を検索条件にして一致する行全体を抜き出したいのですがどうすればいいのでしょうか。 添付の図はオープンオフィスですが、使用したいのはエクセルの2013です。

  • [VBA]エクセルシートから読み取り、全入力する

    いつも大変お世話になっております。 図のような2つのエクセルブック(統計.xlsx)(マクロ.xlsx)があります。 統計ブックのデータをマクロブックに自動的に入力できるVBAがわかりません。 [条件] http://infovivra.s100.xrea.com/1.jpg (統計.xlsx) http://infovivra.s100.xrea.com/toukei.xlsx http://infovivra.s100.xrea.com/2.jpg (マクロ.xlsx) http://infovivra.s100.xrea.com/makuro.xlsx  ・マクロ.xlsxには、4/15~4/21までの日付が記入されている ・マクロ.xlsxには10のシートがあり、同じ内容である ・県庁所在地が入っているセルはM3です(わかりにくいため) ・固有文字は、固有文字と固定で入力する [作成マクロ] (1)統計.xlsxのシート名で検索する。 (2)マクロ.xlsxのシート内で、統計.xlsxの日付で検索する。 (3)それぞれ連番を振り、日付で検索した所定の位置にデータを全て入力する。 (4)大項目ごとに行が移るが、同じ大項目で日付が異なる場合は同じ行に記入する。 (日付が重なった場合は、次の行に記入) (5)K2セルの日付は(2012/4/16)といった形式で記入され、可変する、統計データも同じ。 といった内容になっております。 [追記] [VBA] 年度を指定し、以降の日付を表示する というご質問もさせていただいておりますので、 もしお時間がございましたら、宜しくお願いいたします。 何卒宜しくお願いします。 gitmyk

  • エクセル シートを指定した条件検索

    エクセルの条件検索について,よろしくお願いいたします。 社員のスケジュール管理を行います。 4月~3月のシート名のシートと,検索結果用のシートがあります。 4月のシートは添付画像のような構成となっています。 検索結果用のシートの2行目に検索条件を入力し,4行目以降に結果を抽出したいです。   A      B       C 1 シート名  業務1    業務2 2 4月     会議     係 4 日付    2013/4/1  2013/4/3 5 参加者1  AA      KK 6 参加者2  DS      KA 7 参加者3  BB 8 参加者4  CC 9 参加者5  AS 日付順に,該当する結果を全て表示したいのですが,VBAは使えません。 検索条件は,「会議」のみで検索する場合もあります。 良い方法がわかりませんでした。ご教授よろしくお願いいたします。

  • EXCEL 複数シートからデータを抽出する方法

    シート1~12が「4月…3月」の名前になっています。 各シートの ・A列は日付 ・B列はメモ ・C列はジャンル が、それぞれ入力されています。 それを、新たなシートで、ジャンルごとに検索して日付順に並べたいです。 各シートでフィルターをかければ、そのシート(月)の中で該当する行を表示しますが、それを複数シート(複数月)のものをまとめた形で、新しいシートに表示したいのです。 イメージとしては、新しいシート(1)に同一ジャンルのものが4月から時系列に並ぶような感じです。 マクロボタンを押すとジャンルごとに自動検索して表示するようなものでも構いませんし、新しいシート(1)にジャンル(1)、新しいシート(2)にジャンル(2)というようなものでも構いません。 よろしくお願いします!

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

    エクセル初心者です。既にご質問、ご回答がありましたらすみませんがご教授願います。 シート1のA1に入力した文字を シート2の1行目から検索 検索された文字の同列の2行目の数値を シート1のB1に表示させるにはどのようにしたらよろしいでしょうか? また、シート1のA1に入力した文字を シート2のA列から検索 検索された文字の同行のB列の数値を シート1のB1に表示させる場合はどのようにしたらよろしいでしょうか? 説明がヘタでわかりづらいかもしれませんが、2通りのご教授を宜しくお願い致します。

  • エクセルシートから検索

    カテゴリー違いかもしれませんが エクセルVBAのユーザーフォームを使用して テキストボックスへ入力したデータを指定のシートから検索し、 同じユーザーフォームへ希望のデータ(検索値の同行)を表示させるということはできるのでしょうか。 また、入力した文字と一致したもの全てをということも出来るでしょうか。 例 Aのテキストボックスに、検索したい文字を入れる 一致したデータ全ての行の情報を B以降のフォームへ表示させる 説明がわかりにくいとは思いますが 宜しくお願い致します。

このQ&Aのポイント
  • パソコンから無線LANでつないでいる【DCPJ926N】が急に印刷できなくなった問題について、解決方法やトラブル原因についてまとめました。
  • Windows10で無線LAN接続している【DCPJ926N】が突然印刷できなくなった原因を解説し、対処方法をご紹介します。
  • ブラザー製品の【DCPJ926N】がパソコンからの無線LAN接続で印刷できないトラブルの原因と解決策についてまとめました。
回答を見る

専門家に質問してみよう