• ベストアンサー

エクセルで一覧作成

エクセルで一覧作成 エクセルで以下のデータを作成したいのですが どのような関数を使用したらよいのでしょうか?    A   B  C  D 1 東京 田中 鈴木 小林 2 東京 鈴木  3 大阪 伊藤 鈴木  4 東京 佐藤 5 三重 小林 田中        ↓    A   B   C   D   E   F   G 1 東京 田中 鈴木 小林 鈴木 佐藤 2 大阪 伊藤 鈴木 3 三重 小林 田中 よろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 参考になるかどうか判りませんが・・・ かなり強引な方法になります。 そして制約も多いです。 ↓の画像で説明させていただくと Sheet1の氏名の列は最大9列までで、行方向は100行目までのデータとしての方法です。 Sheet1に作業用の列(表)を設けています。 まず、Sheet1のK2セルに =IF(COUNTIF($A$2:A2,A2)=1,ROW(A1),"") としてオートフィルで下へコピーします。 (これは都道府県の重複しているものをSheet2に重複なしに表示するためです) 続いて、Sheet1のL2セルに =IF(B2="","",MATCH($A2,Sheet2!$A$2:$A$50,0)*1000+ROW(A1)*10+COLUMN(A1)) Sheet2のA列にまだデータが表示されていない段階ではエラーになると思いますが、無視して数式を入れコピーしてみてください。 (Sheet2のA列に数式を入れオートフィルでコピーした後ならエラー表示にならないと思います。) という数式を入れ、列方向は9列分・行方向は100行目までオートフィルでコピーします。 この数値を元にSheet2に表示させます。 Sheet2のA2セルに =IF(COUNT(Sheet1!$K$2:$K$100)<ROW(A1),"",INDEX(Sheet1!$A$2:$A$100,SMALL(Sheet1!$K$2:$K$100,ROW(A1)))) という数式を入れオートフィルで下へコピーします。 そして、B2セルには =IF(SUMPRODUCT((Sheet1!$L$2:$T$100>=ROW(A1)*1000)*(Sheet1!$L$2:$T$100<ROW(A2)*1000))<COLUMN(A1),"",INDEX(Sheet1!$B$2:$J$100,MOD(INT(SMALL(Sheet1!$L$2:$T$100,COLUMN(A1)+COUNTIF($B$1:$J$1:B1:J1,"?*"))/10),10),MOD(SMALL(Sheet1!$L$2:$T$100,COLUMN(A1)+COUNTIF($B$1:$J$1:B1:J1,"?*")),10))) という長い数式を入れ、列方向と行方向へオートフィルでコピーすると 画像のような感じになります。 以上、長々と書きましたが お役に立てば良いのですが・・・ かなり強引な方法ですので、 他に良い方法があれば読み流してくださいね。m(__)m

taka495
質問者

お礼

どうもありがとうございます。 このやり方でできました。 画像つきで解説していただきとてもわかりやすかったです。

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

関連するQ&A