• ベストアンサー

excelで検索用シートを作りたい。

お世話になります。 excelでわからない事があり、困っています。 検索用シート      データシート    A  B      A    B   C 1 部署名 (空欄)  1 部署名 担当者 書類名 2 担当者 (空欄) 2 総務部 鈴木  新人用の書類 3 書類名 (空欄) 3 人事部 田中  部長の書類 上図の様に検索用シートとデータ用シートが同じBook内にあります。 検索用シートのB列は空欄になっており、例えば(1-B)に検索したい部署名の一部、又は全てを入れると、(2-B)及び(3-B)にその部署名に対応した、担当者、書類名が表示 される。 また、検索結果が複数ある場合には、上のものから順々に検索用シートの空欄に表示される。 部署名での検索以外にも、同様に担当者、書類名でも検索できる。 この様な仕様にしたいのですが、どのすれば良いでしょうか? どうぞよろしくお願い致します。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

No1です。 >検索用シートの形式は変更せずにおきたいのですが 関数の配置は自由にできますよ。 総務部を検索した際に対象が1個だけなのでしょうか。 >検索結果が複数ある場合には、上のものから順々に検索用シートの空欄に表示される。 先の回答は複数あっても一覧表で表示する方法です。 もし、ひとつでよければ B2セルには =VLOOKUP(B1,データ!A:C,2,FALSE) B3セルには =VLOOKUP(B1,データ!A:C,3,FALSE) で十分です。 >部署名での検索以外にも、同様に担当者、書類名でも検索できる。 これも対象がひとつであれば、INDEX関数とMATCH関数で検索する方法もあります。 http://oshiete1.goo.ne.jp/qa4424865.html ここで詳しく説明しておきましたの参考にしてください。 先にご紹介した印刷時にオートフィルターのVBAで印刷しない方法で絞込みでも十分ではないでしょうか? 自由な検索と言われるとオートフィルターの操作を覚えてください が良いと思います。 VBAで操作するにも、どういう検索を行いたいのか設定して検索とか操作の機能を追加していくことになるので、作業が少なくなる効果はあまり期待できないと思います。 最も頻繁に使用する検索に絞り込んだ方が便利ではないでしょうか?

akito-1
質問者

お礼

ありがとうございました。 教えて頂いた方法でなんとかなりました。

その他の回答 (2)

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

VBAだけでやる方法を考えたいが、質問者はそれを望んでいないのだろう。だから私としては始めての、折衷案のタイプの回答を挙げてみる。色々検証して見てください。 質問者の望むシートの体裁を出来るだけ尊重したため、こうなったの部分はある。 マクロが出てくるが、マクロの記録なので恐れることは無い。 ーーー Sheet1 原本シート A列ーーーB列ーーーC列   部署名 担当者 書類名 総務部 鈴木 新人用の書類 人事部 田中 部長の書類 業務部 井上 日報 事務部 市川 手引き Sheet2 A1:A3 A列 部署名 担当者 書類名 J1:L2 部署名 担当者 書類名 田中 <-A2に田中を入れた場合の例 J2は =IF(B1="","",B1) K2は =IF(B2="","",B2) L2は =IF(B3="","",B3) 縦のものA1:A3を横にしただけ(フィルタオプション利用のためこうせざるを得ない) ーー Sheet2の D1:F1に D列  E列   F列 部署名 担当者 書類名 項目見出しを用意<ーSheet1からコピー (フィルタオプション利用のためこうせざるを得ない) ーーー Sheet2(ここが肝心)で、データーフィルターフィルタオプションの設定を操作し、マクロの記録をとる すると Sub Macro2() Sheets("Sheet1").Range("A1:C100").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("J1:L2"), CopyToRange:=Range("D1:F100"), Unique:=False End Sub Sheets("Sheet1").Range("A1:C100").の100と CopyToRange:=Range("D1:F100"), の100は行を増やしすため変更した結果です ^--- Sheet2にコマンドボタンを1つ貼り付け。 クリックイベントに Private Sub CommandButton1_Click() Macro2 End Sub またはmacro2をボタンに登録するのも同じ。<-初めてならWEBで「マクロ ボタン 登録」で照会のこと。 ーー Sheet2のA1:A3に検索データ(条件)をいれ、ボタンをクリック。 D2:F○に結果データが出る。 結果例 部署名 事務部 部署名 担当者 書類名 担当者 山田 事務部 山田 事務引継ぎ 書類名 ーー データでは事務部は2人いるが、山田の方を引いてきている。 2条件が効いているということ。

akito-1
質問者

補足

回答ありがとうございます。 参考になりました。 しかし、検索用シートの形はできる事なら崩したく無いので、他に何か方法は無いでしょうか? VBAは初心者ですが、それだけでやる方法でも構いません。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

作業列使用した方法ですが   データシート  A   B   C  D 1   部署名 担当者 書類名 2   総務部 鈴木  新人用の書類 3   人事部 田中  部長の書類 検索用シート    A  B 1 部署名 (総務部)  2 担当者 書類名 3 と仮定して、データシートにA列を挿入 =IF(B2=検索!B$1,ROW(),"") といれて下までコピィすれば、総務部の行にその行番号が表示されます。 検索シートの A3セルに =IF(ISERROR(SMALL(データ!$A:$A,ROW(A1))),"",INDEX(データ!C:C,SMALL(データ!$A:$A,ROW(A1)))) といれて。右へコピィ、下へコピィします。 検索シートのB1と一致するデータの一覧になります。 作業列のIF文変更すれば、一部合致でも可能でしょう。 データシートの作業列は目障りなら非表示(或いは文字色を白)にしてください。

akito-1
質問者

補足

回答ありがとうございます。 検索用シートの形式は変更せずにおきたいのですが、VBAを使用いたものでも構わないので、他に方法は無いでしょうか??

関連するQ&A

  • 【エクセル】一覧の値を複数シートの決まったセルに表示させたい。

    いつもお世話になっております。 [Sheet1]の一覧の値を、複数シートの決まったセルに表示させたいと思っております。 [Sheet2]から[Sheet1]のデータを引っ張ってくるような 数式などありましたら教えて下さい。 ex)[Sheet2]の(B1)に鈴木、(B2)総務部と表示させたい。 ex)[Sheet3]の(B1)に佐藤、(B2)人事部と表示させたい。 ()内の文字はセルの名前です。 宜しくお願いします。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ [Sheet1] (A1)シート名 (B1)名前 (C1)部署名 (A2)Sheet2  (B2)鈴木 (C2)総務部 (A3)Sheet3  (B3)佐藤 (C3)人事部 [Sheet2] (A1)名前  (B1)鈴木 (A2)部署名 (B2)総務部 [Sheet3] (A1)名前  (B1)佐藤 (A2)部署名 (B2)人事部

  • エクセルVBAのテキストボックスの番号をシートから検索することはできるのでしょうか?

    はじめまして。「FAX送信案内」という書類の雛形を作っているのですが、FAX番号を入力すると企業名や部署、担当者の名前が自動で出たらいいと思い、現在エクセルVBAに挑戦しています。本やインターネットで、検索してみたのですがわからないので質問させて頂きます。(正直私は頭悪いです;;) UserFormの構成は下の4つのテキストボックスからなっており 「Fax番号」 「企業名」 「担当部署」 「担当者名」 等 検索用のデータシートは 「Fax番号」「企業名」「担当部署」「担当者名」 という構成です。  私が目指しているのは、UserFormの「Fax番号」部分に番号を入力すると、UserFormに各項目に対応した、企業名などのデータが表示され(UserForm上)、上記の4つのデータ以外の項目を入力し終えたら、登録ボタンを押し、定型のFAX送信案内シートに転写するというものです。  検索の条件がシートにある場合のものは沢山見つかったのですが、UserFormのテキストボックスに入力したものを検索することは可能なのでしょうか? 宜しくお願い致します。

  • Excel 重複値を検索し全て表示させる関数

    Sheet1の1行目には見出しがあり、A列とB列の2行目から下にデータが入っています。(約200行) A列     B列 田中    13 山本     8 谷口    11 鈴木    6 田中    10 佐々木    9 奥村     15 佐々木   15 佐々木   20 ・ ・ ・ Sheet2のA列1行目から下には別のデータが入っています。(約600行) A列 太田川 山村 田中 多賀先 鈴木 奥村 幸田 ・ ・ ・ Sheet2のA列のデータと完全一致するデータ(名前)をSheet1のA列から探して、同じ名前があれば、その隣のB列にある数値をSheet2のB列に貼り付ける(B列が重複の場合、下に張り付ける。但し、A列の名前は1行目は表示、2行目からは表示、空欄でも構いません)。 見つからない場合はSheet2のB列は空欄のままです。 Sheet2 A列      B列 太田川      山村 田中    13        10 多賀先 鈴木     6 奥村    15 佐々木   9       15       20 幸田 ・ ・ ・ 何卒、ご指導の程宜しくお願い致します。

  • Excel 他シートのデータを抽出

    お世話になっております。 さっそく質問失礼いたします。 全売上が記載されたシートのデータを抽出し、営業担当者名で割り振られた各シートに該当するデータを抽出する方法を教えてください。 具体的には下記のようなものを作成したく思います。 シート1(月度売上表) 日付 担当 商品 台数 1日 田中  A1  1台 1日 山田  B1  2台 1日 佐藤  B1  5台 2日 田中  B1  3台 2日 佐藤  A1  2台 2日 佐藤  B1  4台 シート2(田中) 日付 担当 商品 台数 1日 田中  A1  1台 2日 田中  B1  3台 シート3(佐藤) 日付 担当 商品 台数 1日 佐藤  B1  5台 2日 佐藤  A1  2台 2日 佐藤  B1  4台 以下続く 以上のような表を一覧として作成したいと思っております。 シート1に内容が記載されたら自動的にリンクされるようにしたいので、ご質問いたしました。 よろしくおねがいいたします。

  • Excel2010でシートAとシートBとの比較

    よろしくお願いします。 Excel2010を使用しています。 シートA(マスターデータ)とシートB(ランダムデータ)のリストを比較して シートAのデータからシートBのデータを取り除いたデータを抽出したいです。 シートA(マスターデータ) A列   B列 111111 田中一郎 222222 田中二郎 333333 田中三郎 444444 田中四郎 シートB(ランダムデータ) A列   B列 222222 田中二郎 444444 田中四郎 この場合、抽出したいのは 111111 田中一郎 333333 田中三郎 の2名です。 いろいろネットで調べてトライしてみたのですがなかなかうまくいきませんでした。 Excelは少し苦手ですががんばりますのでよろしくお願いします。

  • 【エクセル】特定の文字以外を返す計算式

    申し訳ありません。どなたか助けてください。 【Sheet1】    A     B     C     D 1 実績月 部署等  氏名  金額 2 4月  事業部  佐藤  100 3 4月  実績なし 田中   0 4 4月  実績なし 鈴木   0 5 5月  事業部  佐藤   40 6 5月  営業部  田中   50 7 5月  販売部  鈴木  200 8 6月  実績なし 佐藤   0 9 6月  営業部  田中   70 9 6月  販売部  鈴木   30 ※【Sheet1】の情報を【Sheet2】のようにまとめたいのです。 ※C、D、E列にはSUMPRODUCT関数を使用して集計しています。 【Sheet2】   A    B   C   D   E 1 氏名 部署等 4月 5月 6月 2 鈴木 販売部  0  200  30 3 佐藤 事業部 100  40   0 4 田中 営業部  0  50  70 ※B列(B2)に以下のような計算式を埋め込みました。  INDEX(Sheet1!$B:$B,MATCH($A2,Sheet1!$C:$C,0)) ※すると以下のようになってしまい、部署名が正しく表示されません。 ※B列が「実績なし」になっている場合はその値は返さず、  「実績なし」以外の部署名を表示させたいのです。   【Sheet2】   A     B      C     D    E 1 氏名  部署等  4月  5月  6月 2 鈴木  実績なし  0   200   30 3 佐藤  事業部  100    40   0 4 田中  実績なし   0    50  70 ※どなたかお力をお貸しください。 ※そもそも部署等欄に、「実績なし」という文字を表示させなければいいのかもしれませんが、訳あってこのようになっています。 ※「実績なし」以外の部署名を表示させる関数を教えてください。

  • エクセル2000でのデータ作成で・・

    顧客管理のデータを入力しています。  月日 顧客名   数量 累計 担当者 コード    欄外  2/14 ○○○    1    1  田中   A       1  2/14 ○○○    1    2  田中   B      2  2/14 ○○○    2   4  鈴木          1  2/15 ○○○    2   6  鈴木   C      2  こんな感じだとします。 累計にはIF(ISBLANK(C3),"",D2+C3)のような式が入ってます。  コードAと空欄のものと、BとCとの2つの表に分けたいと します。シート1には全体の表を、シート2にAと空欄、シート3に BとCを表示したい時はどうしたらいいでしょうか?  新しいデータはシート1にどんどん入力したいのです。 シート2とシート3それぞれの累計と通番号も付けたい場合、 どうやるのが一番でしょうか・・。  今はシート1の欄外に1と2と入力してシート2に =IF(シート1!H1=1,シート1!A1,"") と入れています。  そうするとどうしても空白の行ができてしまい、 累計の演算式もエラーが出ます。行削除して、 通番号を付け直していますが、他に一発で隙間なく シート2,3へ転記され、各シートごとの累計を出す方法が ありましたらおしえてください。

  • エクセル関数について

    下記のようなエクセルのデータを作りたいのですが、どのような関数を使えばいいかわかりません。 シート1           シート11           シート12            A    B         A    B            A    B  1  田中 500円    1 田中  500       1 田中  500 2               2 シート2    A    B         A   B             A    B  1  伊藤 300円     3 伊藤 300         2 伊藤  300 2  佐藤 400円     4 佐藤 400         3 佐藤  400 このようにシート1から10まで2行入力する欄を作ります その中から大事なデータだけを集計するため一度シート11に反映させます この時2行目が空欄の場合はシート11も空欄になっています。 そしてこのシート11から空白部分を除いて順番に並べるシート12を作りたいです。 シート11は=Sheet1!A1のように単純に反映ができるのかと思うのですが シート12へ空白を除いて反映させる方法がわかりません。 わかりづらい質問でも申し訳ありませんが  何卒よろしくお願い致します。  

  • エクセルで検索して別シートに抽出したい

    エクセル2003で顧客リストを作成しています。 そのリストの中から特定の文字列を検索し(あいまい検索)、その項目が含まれる行ごと 別シートに抽出をしたいです。 ほかの方のご質問も参考に試してみたのですが、上手くいきません。 1行目に各項目名 A日付 B担当1 C担当2 D管理番号 E顧客名 2行目からデータです。 ほぼ担当1か顧客名で検索し、検索結果は複数になることがほとんどです。 どなたかよろしくお願いいたします。

  • エクセルのsheet間コピー(空間あり)について

    エクセルのsheetをまたいでのコピーに苦戦しています。 ●例 sheet1 A,1に「1111」 B,1に「あいお」     A,2に「2222」 B,2に「空欄」     A,3に「空欄」 B,3に「かいこ」     A,4に「3333」 B,4に「空欄」 とあったデータを sheet2 A,1に「1111」、B,1に「あいお」、C,1に「2222」、D,1に「空欄」と、     A,2に「空欄」、B,2に「かいこ」、C,2に「3333」、D,2に「空欄」と コピー(自動転記)させ、それを下部へ「+」規則性をもってコピーさせたいのです。 ご指導のほどよろしくお願いします。

専門家に質問してみよう