• ベストアンサー

Excelで該当する名前を挙げるには?

vlookupは使えるのですが以下のような方法は作りこまないと出来ないでしょうか? 手動でソートして、そのデータから何かを作るような数ステップは手動でも構いません。 出来るだけ簡単な方法がありましたら教えてください。 マクロとかデータベースとか別のソフトとか使うと簡単なのかもしれませんが Excelの基本的な関数で作りたいです。 データ1 A組:1番:太郎 A組:2番:次郎 A組:3番:三郎 B組:以下略 ・・・ 質問:データ1からA組に該当する名前を羅列せよ。 答え: A組:「太郎、次郎、三郎」 「太郎、次郎、三郎」の文字列を取得したいです。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 今仮に、A列の2行目以下にクラスが、B列の2行目以下に番号が、C列の2行目以下に名前が、それぞれ入力されていて、E1セルにクラス名を入力すると、E2以下に、そのクラスの生徒の名前が表示される様にするるものとします。 【方法1】 (注) この【方法1】は、元データがクラス順に並べられている場合にのみ成り立つ方法です。  E2セルに次の数式を入力してからE2セルをコピーして、E3以下に貼り付けて下さい。 =IF(ROWS($2:2)>COUNTIF($A:$A,$E$1),"",INDEX($C:$C,MATCH($E$1,$A:$A,0)+ROWS($2:2)-1)) 【方法2】 (注) この【方法2】は、元データがクラス順に並んでいる必要はありませんが、計算処理に要する負荷が大きいため、人数が何千人にもなる場合には、抽出結果が表示されるまでに時間を要する事もあります。(2000人前後程度までなら大して時間は掛らないと思います)  E2セルに次の数式を入力してからE2セルをコピーして、E3以下に貼り付けて下さい。 =IF(ROWS($2:2)>COUNTIF($A:$A,$E$1),"",INDEX($C:$C,SUMPRODUCT(ROW($A$1:INDEX($A:$A,MATCH("゛",$A:$A,-1)))*($A$1:INDEX($A:$A,MATCH("゛",$A:$A,-1))=$E$1)*(COUNTIF(OFFSET($A$1,,,ROW($A$1:INDEX($A:$A,MATCH("゛",$A:$A,-1)))-ROW($A$1)+1),$E$1)=ROWS($2:2)))))

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

その他の回答 (3)

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

方法1:並べ替えない 添付図上) A2に =IF(B2="A",COUNTIF($B$2:B2,B2),"") 以下コピー E2に =IF(ROW(E1)>MAX(A:A),"",ROW(E1)) F2に =IF(E2="","",VLOOKUP(E2,A:C,3)) 以下コピー G3に =F3&" "&G4 として以下コピー(表示を見えなくしておいて良い) G2に =SUBSTITUTE(TRIM(F2&" "&G3)," ",",") と記入して完成。 方法2:並べ替えても良い場合 添付図下) F2に =IF(ROW(F1)>COUNTIF(A:A,"A"),"",INDEX(B:B,MATCH("A",A:A,0)+ROW(F1)-1)) 以下コピー G列は方法1と同じで完成。

すると、全ての回答が全文表示されます。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

>出来るだけ簡単な方法  ⇒VLOOKUP関数は不可能、複数種類の関数を駆使すれば可能ですが難解な数式になります。   オートフィルタ、又はフィルタオプションの設定で抽出する方法が一番簡単と思います。   使用に際してはデータ1の先頭行には見出し行の設定が必要ですが、簡単な操作で一覧表示が   可能、後は対象の範囲をコピー&貼り付けで如何でしょうか。

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

シート1のA列には組名が、B列には番号が、C列には名前がそれぞれ2行目から下方に並んでいるとします。 D列を作業列としてD2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",A2&COUNTIF(A$2:A2,A2)) その後にシート2にお求めの表を作るとしてA1セルには求めたい組名を例えばA組のように入力します。 A2セルには次の式を入力して右横方向にオートフィルドラッグすればよいでしょう。 =IF(COLUMN(A1)>COUNTIF(Sheet1!$A:$A,$A$1),"",INDEX(Sheet1!$C:$C,MATCH($A$1&COLUMN(A1),Sheet1!$D:$D,0)))

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

関連するQ&A