• ベストアンサー

重複データーの呼び出し エクセル関数

いつもお世話になっています。    A  B   C 1 NO.1 中村 りんご 2 NO.2 田中 みかん 3 NO.3 吉田 いちご 4 NO.4 大野 りんご 5 NO.6 清水 りんご ・ ・ ・ ・ E1に“りんご”と入力すれば、F1に“NO.1” F2に“NO.4” F3に“NO.6”に表示させるには、どうすればいいか教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

関数でも実現できますが、少し難しいですよ。(過去の質問にもたくさんの類似例があります) データが1行目~30行目まであるとして、F1の式は以下になります。 下方向にコピーしてください。  =INDEX($A$1:$A$30,LARGE(INDEX(($C$1:$C$30=$E$1)*ROW($C$1:$C$30),),COUNTIF(C:C,$E$1)-ROW(A1)+1)) ただしこの式では「りんご」の個数以上の行で#NUM!エラーとなります。エラーを表示したくないなら以下のように条件判定を追加します  =IF(COUNTIF(C:C,$E$1)>=ROW(A1),INDEX($A$1:$A$30,LARGE(INDEX(($C$1:$C$30=$E$1)*ROW($C$1:$C$30),),COUNTIF(C:C,$E$1)-ROW(A1)+1)),"") 上記関数式の欠点はシートが重くなることです。データが何千行もある場合は使い物にならないでしょう。そんなときは「データが変更されたときリアルタイムで表示が更新できない」という制約はありますが「データ」→「フィルタオプション」で抽出するのが良いと思います。 以下にサンプルのURLをひとつ掲載しますが「エクセル フィルタオプション」で検索すればたくさんの事例があります http://www11.plala.or.jp/koma_Excel/contents6/mame6042/mame604201.html

totorapa
質問者

お礼

たいへんありがとうございます。 上記の方法で、処理できました。 お返事が遅くなり大変失礼しました。

その他の回答 (4)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.5

一例です。 F1に=IF(COUNTIF(C:C,$E$1)>ROW(A1)-1,INDEX(A:A,SMALL(IF($C$1:$C$100=$E$1,ROW($A$1:$A$100),99999),ROW(A1))),"")を設定、下方向に必要分コピーして下さい。 尚、配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。

  • kanitako
  • ベストアンサー率0% (0/7)
回答No.4

僕ならこうします。 A列の左に列を挿入して、まず下のようにします    A  B   C  D 1    NO.1 中村 りんご 2    NO.2 田中 みかん 3    NO.3 吉田 いちご 4    NO.4 大野 りんご 5    NO.6 清水 りんご 次にA列に=D1&COUNTIF($D$1:D1,D1) として、下までドラッグすると次の様になります。    A    B   C   D   E   F   G 1 りんご1 NO.1 中村 りんご    りんご 1 2 みかん1 NO.2 田中 みかん        2 3 いちご1 NO.3 吉田 いちご        3 4 りんご2 NO.4 大野 りんご        4 5 りんご3 NO.6 清水 りんご ここで、F列にりんごと代入し G列に1 2 3 4 …と入れておくと H列に=VLOOKUP($F$1&G1,$A$1:$D$100,2,FALSE) として下に引っ張れば、ご希望の形で出てきます。 $A$1:$D$100の100は100列までデータがあった時の場合なので、 もっと増やしたければ、その数字を増やせばできます。

noname#204879
noname#204879
回答No.3

F1: {=INDEX(A$1:A$100,SMALL(IF(C$1:C$100=E$1,ROW(A$1:A$100),""),ROW(A1)))} ← 配列数式 お好みでセル F1 を[条件付き書式]で次のように設定   数式が   =ISERROR(F1)   フォント色 白 セル F1 を下方にズズーッとドラッグ&ペースト

回答No.2

タイトル行は無いのかなあ と思いつつ作業列案 D1セル =1+(C1=E1) D2セル =(C2=$E$1)+D1 下へオートフィル F1セル =IF(C1=E1,A1,INDEX(A:A,MATCH(ROW(),D:D)+1)) F2セル =IF($D$5<=ROW(),"",INDEX(A:A,MATCH(ROW(),D:D)+1))  下へオートフィル

関連するQ&A