Excelで行を列に変換するのを自動化するにはどうすればよいですか

Excelで行を列に変換するのを自動化するにはどうすればよいですか

2000行の構造を持つテーブルがあります

company   product   targetJan   targetFeb   targetMarch   targetApril ...
Google    Docs      10          20          30            40
Google    Mail      13          25          45            70

私が変換したいのは

Company  product  Date  Target
Google   Docs     Jan   10
Google   Docs     Feb   20
...
Google   Mail     Jan   13
...

この問題にどう対処したらよいか全くわかりません。マクロや VBA にも詳しくありません。どうすればこの問題に対処できるでしょうか?

編集: 目的のマクロを記録しましたが、指定した最初の行のみに適用されます。次に、ドキュメント全体の 12 行ごとにマクロを適用する方法を見つける必要があります。https://pastebin.com/D9yUHxZk

答え1

これはマクロを使用せずに実行できます。以下の数式は、既存のデータの右側に新しいテーブルを埋め込みます。

ここに画像の説明を入力してください

これらの式は、それぞれ O2:R2 から順に記入され、示されている結果をもたらします。

 =OFFSET($A$2,TRUNC((ROW()-2)/12),0)
 =OFFSET($B$2,TRUNC((ROW()-2)/12),0)
 =RIGHT(OFFSET($C$1,0,MOD((ROW()-2),12)),3)
 =OFFSET($C$2,TRUNC((ROW()-2)/12),MOD((ROW()-2),12))

簡単にするために、ターゲット ヘッダーを変更して、月の部分を 3 文字の略語にしていることに注意してください。より長い月の名前を抽出したい場合は、MID() および LEN() テキスト関数を使用して実行できます。

新しいデータをすべて入力したら、必要に応じて古いデータを含む列を削除できます。ただし、最初に新しいデータをすべて選択してコピーし、[形式を選択して貼り付け] > [値...] を選択して、そのデータが派生した列を削除してもデータが失われないようにします。

答え2

行を列に変換するには(転置):

  • 範囲をコピーする
  • ペースト
  • 貼り付けオプションをクリックします(貼り付けた配列の右下隅)
  • 転置(T)をクリック

そうでない場合、転置の例は明確ではありませんが、よりカスタマイズしたい場合は、VBA/Excel 関数を少し学ぶ良い機会になります。まずは、予想されるアクションを段階的に分割することから始めてください。

幸運を。

関連情報