• ベストアンサー

エクセル 検索結果を別シートで表示する方法

はじめて質問をさせていただきます。 当方基本的な関数が使える程度で、今回の質問する内容を どう処理したらいいか分からなくなっております。 画像添付いたしました表をもとに、別シートで 例えば 1と入力するとaという名前と、○の付いている日付、4月7日、5月8日 を表示させる方法について教えていただけないでしょうか? 日付については同一セルであってもなくても構いません。 初歩的な質問で申し訳ありませんが、どうぞよろしくお願いいたします。

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

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

こんな方法もある、ということで… Sheet1!H2: =TRIM(IF(C2="○",TEXT(C$1,"m/dd"),"")&" "&IF(D2="○",TEXT(D$1,"m/dd"),"")&" "&IF(E2="○",TEXT(E$1,"m/dd"),"")&" "&IF(F2="○",TEXT(F$1,"m/dd"),"")) Sheet2!B2: =IF(ISERROR(MATCH($A2,Sheet1!$A2:$A8,0)),"",INDEX(Sheet1!B2:B8,MATCH($A2,Sheet1!$A2:$A8,0))) Sheet2!C2: =IF(ISERROR(MATCH($A2,Sheet1!$A2:$A8,0)),"",INDEX(Sheet1!H2:H8,MATCH($A2,Sheet1!$A2:$A8,0)))

cowshop120524
質問者

お礼

ご回答ありがとうございました! 色々な方法があり、勉強になります。

その他の回答 (3)

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

#3です。 VBAでやった場合の「感じ」について、20行弱だが、考えの筋道は、関数と違って、エクセルのベテランの思い付き的な方法ではない。 ーー 標準モジュールに Sub test01() k = 2 m = 3 Dim sh1, sh2 Set sh1 = Worksheets("Sheet2") Set sh2 = Worksheets("Sheet3") d = sh1.Range("A65536").End(xlUp).Row For i = 2 To d For j = 3 To 6 sh2.Cells(k, 1) = sh1.Cells(i, "A") If sh1.Cells(i, j) = "○" Then sh2.Cells(k, m) = sh1.Cells(1, j) m = m + 1 End If Next j k = k + 1 m = 3 Next i End Sub ーー 外にも、色々なやりかたが考えられるが。 #3の私の例で 結果 山田 X Z 鈴木 X Z V 小島 Y Z 田中 X V 木村 X Y Z V === >1と入力するとaという名前 の部分はVLOOKUP関数でも使う、常識的な課題ではないかな。 この関数さえも知らないようなら、エクセルの関数の簡単な本を読んで勉強するのが急がれる。

cowshop120524
質問者

お礼

#3のご回答と合わせて、ご丁寧な解説をありがとうございます。 1と入力するとa…については、おっしやるとおりVLOOKUPを使用し、表示できたものの その後の質問内容で行き詰まり、合わせての質問となりました。 正直申しまして、私がまだ知り得ない関数であっさりと解決してしまう 問題なのかと思っており、あのような書き方となりました。 勉強不足を痛感しております… この度はありがとうございました。

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

>初歩的な質問で申し訳ありませんが 質問内容は初歩的ではなく、エクセル関数に対し、「無いものねだりをしている」風の課題なのです。 難しい点は、 (1)丸がどの列にあるか決っていない (2)ある行について、丸が1つだけでなく、複数の列に存在することも在る。 この(2)に関して、1番目より右の○の存在を見つける関数が良いものが無い。 ーー これらはVBA(プログラム)なら繰返しの探索が出来る。だからVBA向きの問題なのだ。 回答をコピーして、うまく行きましたなんていっているが、  ベテランだからこそ、定石に当たることも知っているのであって、エクセル関数でやる場合、どういうタイプの課題がやりにくいかを勉強するほうが大切だ。 結果的には初心者向けの課題ではない。 ーー 毎週数件抜き出し問題の質問が出る。普通は縦に条件に該当するデータが並んでいる場合が多いが、本件は横方向に並ぶ点で特異である。 例データ A1:F  -は空白セル - - X Y Z V 山田 - ○ - ○ 鈴木 - ○ - ○ ○ 小島 - - ○ ○ 田中 - ○ - - ○ 木村 - ○ ○ ○ ○ ーー H列は空白列にしておく H2セルの =G2+MATCH("○",OFFSET($C2:$F2,0,G2,1,12-COLUMN()),0) 右方向に式を複写する。 H2:k2の式を下方向に式を複写する 結果 H2:K6 1 3 #N/A #N/A 1 3 4 #N/A 2 3 #N/A #N/A 1 4 #N/A #N/A 1 2 3 4 丸の在る列が列で左詰で出ている。 #N/Aは表示しないように出来るがここでは略。 ーー L2セルに =INDEX($C$1:$F$1,1,H2) O2まで右方向に式複写。 L2:O2の式を下方向に式複写 結果 l2:O6 X Z X Z V Y Z X V X Y Z V 見出しの一覧が列的に左詰で出る。 ーー 作業列的な列を使う点で、満足ではないが、こういう性格の問題は、作業列でも使わないと式がいっそう複雑になる場合が多い。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

A2セルに1や2や3を記入する B2セルには =IF(A2="","",INDEX(Sheet1!$B$2:$B$8,A2)) C2セルには =IF(COLUMN(A2)>COUNTIF(OFFSET(Sheet1!$C$1:$F$1,$A2,0),"○"),"",INDEX(Sheet1!1:1,SMALL(IF(OFFSET(Sheet1!$C$1:$F$1,$A2,0)="○",COLUMN($C$1:$F$1)),COLUMN(A2)))) と記入してコントロールキーとシフトキーを押しながらEnterで入力, 日付の書式を付けておいてから右にコピー。

cowshop120524
質問者

お礼

早速のご返答、ありがとうございました。 試してみたところ希望通りに動作いたしました。 とっても助かりました(^^) ありがとうございます!

関連するQ&A