• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel 2003 で縦横を入れ替えたいのですが)

Excel 2003で縦横を入れ替える方法とは?

このQ&Aのポイント
  • Excel 2003で縦横を入れ替える方法を解説します。表形式のデータをコード別に部品コードを横に並び替える方法をお伝えします。
  • Excel 2003で縦横を入れ替える方法をご紹介します。データ表の構造を変更することで、部品コードを横に並べることができます。
  • Excel 2003で縦横を入れ替える方法についてご説明します。表形式のデータをヨコに並べ替えることで、部品コードを一度に表示することができます。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.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

suekensaku
質問者

お礼

丁寧に回答ありがとうございました。 助かりました。

その他の回答 (5)

noname#204879
noname#204879
回答No.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))

noname#204879
noname#204879
回答No.4

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))

suekensaku
質問者

お礼

回答ありがとうございました。 助かりました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

関数で処理するなら以下のような配列数式を使うことになります。 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行を残してその上のデータ範囲を選択して、右クリック「コピー」、そのままもう一度右クリック「形式を選択して貼り付け」で「値」貼り付けして、順次計算結果を値に変更すると良いと思います。 ちなみに上記の数式は計算結果を文字列で表示していますので、コード番号が例示のように文字列ではなく数字の場合に「数字」として入力した形に変更したいなら、空白セルを選択して右クリック「コピー」、対象範囲を選択して右クリック「形式を選択して貼り付け」で「加算」にチェックしてください。

suekensaku
質問者

お礼

回答ありがとうございました。 参考になりました

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

シート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)))))

suekensaku
質問者

お礼

早々にご対応いただきありがとうございました。 大変助かりました。

  • kybos
  • ベストアンサー率31% (187/591)
回答No.1

(1)入れ替えたい範囲をコピーする。 (2)これを別のセルとかシートに行と列を入れ替えて貼り付ける。  その方法は、入れ替え後の一番左上になるセルを指定して右クリックすると、「形式を選択して貼り付け」と言うのが出てくる。   そこをクリックして、現れたボックスの下の方に「行列を入れ替える」というのがあるから、そこのチェックボックスをチェックして、「OK」をクリック。 以上

関連するQ&A