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 関数を少し学ぶ良い機会になります。まずは、予想されるアクションを段階的に分割することから始めてください。
幸運を。