質問: excel vbaで列を行に変換するには 不特定多数の行数(百列以上)と列数(千列以上)を持ったデータを以下にある結果1を結果2のように列と行を置換したいのですがどうしたらよろしいでしょうか? もしよろしければ、プログラムを教えていただけたら助かります。 よろしくお願いします。 ///////////結果1//////////////////// a1 b1 c1 →不特定の列数 a2 b2 c2 a3 b3 c3 ↓ 不特定の行数 ///////////結果2/////////////////// a2 a2 a3 b1 b2 b3 c1 c2 c3
回答: マクロの記録でできると思いますが、コメント付きコードは以下のとおり。 ctrl+endで、不特定であっても行・列共に最大値(最終)セルを選択できます。 ctrl+shift+endで、最大値(最終)セル「まで」を選択できます。 現在のデータがsheet1にあるとして、行列置換後のデータをsheet2に置くとします。 'コピー元を選択する sheets("sheet1").select range("a1").select range(selection, activecell.specialcells(xllastcell)).select 'クリップボードへコピーする selection.copy 'コピー先を選択する sheets("sheet2").select 'クリップボードからコピー(ペースト)する ’transpose:=trueがミソ。形式を選択して貼り付けの行列入れ替え selection.pastespecial paste:=xlall, operation:=xlnone, skipblanks:=false, transpose:=true