- ベストアンサー
エクセル 表の列を行に移行したい
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- KURUMITO
- ベストアンサー率42% (1835/4283)
お示しの表がシート1にあるとして、答えの表をシート2に作るとします。 シート1のD3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A3<>"",COUNTA(A$3:A3)&"/"&A3&"a"&B3,IF(AND(A3="",B3<>""),LEFT(D2,FIND("a",D2))&B3,"")) シート2では1行目にはB1セルから右横方向に商品名のA,B,C,D・・・のように入力をします。 A2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$D:$D,ROW(A1)&"*")=0,"",IF(COLUMN(A1)=1,INDEX(Sheet1!$A:$A,MATCH(ROW(A1)&"*",Sheet1!$D:$D,0)),IF(COUNTIF(Sheet1!$D:$D,ROW(A1)&"/"&$A2&"a"&A$1)=0,"",INDEX(Sheet1!$C:$C,MATCH(ROW(A1)&"/"&$A2&"a"&A$1,Sheet1!$D:$D,0)))))
お礼
ご回答ありがとうございます。 ご提示いただいた関数で上手くいきました。 私にとっては非常に複雑な関数の組み合わせなので、じっくりと検証してみます。
- tom04
- ベストアンサー率49% (2537/5117)
おはようございます! 色々方法はあるかと思いますが・・・ 一例です。 参考になるかどうか判りませんが、 ↓の画像のような感じで表を作ってみました。 Sheet1のデータをSheet2にまとめるようにしています。 ここで作業用の列をSheet1に3列使わせてもらっています。 県名の列に空白がなければ県名用のF列は必要なくなります。 まず、Sheet1の作業列D2セルに =IF(COUNTIF(A$2:A2,A2)=1,ROW(A1),"") として、オートフィルでE2セルまでコピーします。 F2セルに =IF(B2="","",IF(A2="",F1,A2)) そして、D2~F2セルを範囲指定し、F2セルのフィルハンドルで 下へずぃ~~~!とコピーします。 (Sheet2の数式が1000行まで対応できるようにしていますので、そのくらいまでコピーしても構いません) 次にSheet2の方ですが、商品名のB1セルに =IF(COUNT(Sheet1!$E$2:$E$1000)<COLUMN(A1),"",INDEX(Sheet1!$B$2:$B$1000,SMALL(Sheet1!$E$2:$E$1000,COLUMN(A1)))) として、列方向にコピーします。 県名のA2セルに =IF(COUNT(Sheet1!$D$2:$D$1000)<ROW(A1),"",INDEX(Sheet1!$A$2:$A$1000,SMALL(Sheet1!$D$2:$D$1000,ROW(A1)))) とし、下へコピーします。 最後にB2セルに =IF(OR($A2="",B$1=""),"",SUMPRODUCT((Sheet1!$F$2:$F$1000=Sheet2!$A2)*(Sheet1!$B$2:$B$1000=Sheet2!B$1),Sheet1!$C$2:$C$1000)) とし、行方向と列方向にコピーすると画像のような感じになります。 尚、データがない部分に関しては「0」と表示されますので 目障りであれば、メニュー → ツール → オプション → 表示タブで 「ゼロ値」のチェックを外せばOKかと思います。 以上、長々と書きましたが 参考になれば幸いです。 他に良い方法があれば読み流してくださいね。m(__)m
お礼
ご丁寧な解説ありがとうございます。 わからない関数もあるので自分で検証してみます。
お礼
ご回答ありがとうございます。 ご提示いただいた関数は私でも理解できます。 お世話様でした。