- ベストアンサー
Excel 2003で縦横を入れ替える方法とは?
- Excel 2003で縦横を入れ替える方法を解説します。表形式のデータをコード別に部品コードを横に並び替える方法をお伝えします。
- Excel 2003で縦横を入れ替える方法をご紹介します。データ表の構造を変更することで、部品コードを横に並べることができます。
- Excel 2003で縦横を入れ替える方法についてご説明します。表形式のデータをヨコに並べ替えることで、部品コードを一度に表示することができます。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 一例です。 ↓の画像で説明させていただきます。 Sheet1に作業用の列を設けています。 作業列D2セルに =IF(COUNTIF($A$2:A2,A2)=1,ROW(),"") という数式を入れ、フィルハンドルの(+)マークでダブルクリック、 又はオートフィルで下へコピーします。 そしてSheet2の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セルまでオートフィルでコピーします。 C2セルには =IF($A2="","",IF(COUNTIF(Sheet1!$A$2:$A$1000,$A2)<COLUMN(A1),"",INDEX(Sheet1!$C$2:$C$1000,SMALL(IF(Sheet1!$A$2:$A$1000=$A2,ROW(Sheet1!$A$1:$A$999)),COLUMN(A1))))) このC2セルは配列数式になってしまいますので、 この画面からC2セルに貼り付けただけではエラーになると思います。 貼り付け後、C2セルをダブルクリック、又はF2キーを押す、又は数式バー内で一度クリックします。 編集可能になりますので Shift+Ctrl+Enterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 このC2セルを列(右)方向へオートフィルでずぃ~~~!っとコピーします。 最後にA2~今列方向にコピーした最後の列まで範囲指定し、 最後の列のフィルハンドルで下へコピーすると 画像のような感じになります。 尚、数式はSheet1の1000行目まで対応できるようにしていますが データ量によって範囲指定の領域はアレンジしてみてください。 以上、長々と書きましたが 参考になれば幸いです。 他に良い方法があれば読み流してくださいね。m(__)m
その他の回答 (5)
Sheet1 A B C 1 コード 品名 品コード 2 101 テレビ 80000001 3 101 テレビ 90000001 4 101 テレビ 70000001 5 101 テレビ 50000001 6 201 パソコン 30000001 7 201 パソコン 40000001 8 201 パソコン 42000001 9 201 パソコン 50000001 10 301 モニタ 10000001 11 301 モニタ 20000001 12 Sheet2 (添付図) C2: =IF(COLUMN(Sheet1!A1)>COUNTIF(Sheet1!$A$1:$A$3000,$A2),"",OFFSET(Sheet1!$A$1,MATCH($A2,Sheet1!$A$1:$A$3000,0)-1+COLUMN(A1)-1,2))
Sheet1 A B C 1 コード 品名 品コード 2 101 テレビ 80000001 3 101 テレビ 90000001 4 101 テレビ 70000001 5 101 テレビ 50000001 6 201 パソコン 30000001 7 201 パソコン 40000001 8 201 パソコン 42000001 9 201 パソコン 50000001 10 301 モニタ 10000001 11 301 モニタ 20000001 12 Sheet2 (添付図) C2: =IF(COLUMN(Sheet1!A1)>COUNTIF(Sheet1!$A$1:$A$3000,$A2),"",OFFSET(Sheet1!$A$1,MATCH($A2,Sheet1!$A$1:$A$3000,0)-1+COLUMN(A1)-1,2))
お礼
回答ありがとうございました。 助かりました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
関数で処理するなら以下のような配列数式を使うことになります。 E2セルに以下の式を入力し、右方向(F2セル)に1つオートフィルコピー =INDEX(A:A,SMALL(INDEX((MATCH($A$2:$A$1000&"",$A$2:$A$1000&"",)<>ROW($A$2:$A$1000)-1)*1000+ROW($A$2:$A$1000),),ROW(A1)))&"" G2セルに以下の式を入力し、右方向に最大部品数分(20)だけオートフィルコピー。 =INDEX($C:$C,SMALL(INDEX(($F2<>$B$2:$B$1000)*1000+ROW($B$2:$B$1000),),COLUMN(A1)))&"" 最後に上記の数式の行範囲を選択して下方向にオートフィルコピーすれば完成ですが、表示データ数が多くなると動きが重くなりますので、たとえば100行分位をオートフィルしたら、最後の数式1行を残してその上のデータ範囲を選択して、右クリック「コピー」、そのままもう一度右クリック「形式を選択して貼り付け」で「値」貼り付けして、順次計算結果を値に変更すると良いと思います。 ちなみに上記の数式は計算結果を文字列で表示していますので、コード番号が例示のように文字列ではなく数字の場合に「数字」として入力した形に変更したいなら、空白セルを選択して右クリック「コピー」、対象範囲を選択して右クリック「形式を選択して貼り付け」で「加算」にチェックしてください。
お礼
回答ありがとうございました。 参考になりました
- KURUMITO
- ベストアンサー率42% (1835/4283)
シート1に元のデータがあるとしてD列およびE列は作業列とします。 D2セルには次の式を入力します。 =IF(COUNTIF(A$2:A2,A2)=1,MAX(D$1:D1)+1,"") E2セルには次の式を入力します。 =IF(A2="","",A2&"a"&COUNTIF(A$2:A2,A2)) D2およびE2セルを選択いしてそれらの式を下方にオートフィルドラッグします。 お求めの表をシート2に作ることにして1行目にはお示しのような項目を並べます。 A2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$D:$D,ROW(A1))=0,"",IF(COLUMN(A1)<=2,INDEX(Sheet1!$A:$B,MATCH(ROW(A1),Sheet1!$D:$D,0),COLUMN(A1)),IF(COUNTIF(Sheet1!$E:$E,$A2&"a"&COLUMN(A1)-2)=0,"",INDEX(Sheet1!$C:$C,MATCH($A2&"a"&COLUMN(A1)-2,Sheet1!$E:$E,0)))))
お礼
早々にご対応いただきありがとうございました。 大変助かりました。
- kybos
- ベストアンサー率31% (187/591)
(1)入れ替えたい範囲をコピーする。 (2)これを別のセルとかシートに行と列を入れ替えて貼り付ける。 その方法は、入れ替え後の一番左上になるセルを指定して右クリックすると、「形式を選択して貼り付け」と言うのが出てくる。 そこをクリックして、現れたボックスの下の方に「行列を入れ替える」というのがあるから、そこのチェックボックスをチェックして、「OK」をクリック。 以上
お礼
丁寧に回答ありがとうございました。 助かりました。