- ベストアンサー
(A1/B1/C1…→A1/A2/A3)X複数 の変換方法について
エクセルで .|A|B|C|D|E 1|あ|い|う|え|お 2|か|き|く|け|こ 3|さ|し|す|せ|そ 4|・|・| 5|・| 6 7 ・ ・ という行・列を下のように書き換える(A列に集約する)簡単な方法がありましたら教えて下さい。 .|A|B|C|D|E 1|あ| 2|い| 3|う| 4|え| 5|お| 6|か| 7|き| 8|く| 9|・| 10|・ ・|・ ・|・ 使用しているバージョンはexcel2003です。 今まではあまりデータが多くなかったので 「コピー→形式を選択して貼り付け→行列を入れ替えるにチェック」 で行っていたのですが、今回は2000行ぐらいあるので今までのやり方では厳しいと思い相談させていただきました。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
VBAで K列に縦に並べます Sub test01() d = Range("A65536").End(xlUp).Row For i = 1 To d Range(Cells(i, "A"), Cells(i, "E")).Copy Range("K65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True Next i End Sub ーーー とか Sub test02() K = 1 d = Range("A65536").End(xlUp).Row For i = 1 To d For j = 1 To 5 Cells(K, "K") = Cells(i, j) K = K + 1 Next j Next i End Sub
その他の回答 (5)
- n-jun
- ベストアンサー率33% (959/2873)
ANo.1です。 >うまく変換は出来たのですが何故か途中までしかデータが反映されませんでした(150行まで出ます)。 >もし教えていただけるならA1~F1の値をA1~A6にする方法も一緒に教えていただけると助かります。 >一部のセルに付いているリンクも一緒に動かさなければならないので 私はデータの移動だけで考えてましたので、移動できないのはリンクの ところではないですか? であれば、ANO.5さんの方法が良いと思います。 横を縦に入替えるのも、Transpose:=True が行なってますので。
- mshr1962
- ベストアンサー率39% (7417/18945)
例 作業列を使った数式で並べ替える方法 F1:F5にA1,B1,C1,D1,E1 と5行入力 G1に=INDIRECT(F1) と入力してG5までコピー F1:G5を選択して下方に有効分コピーした結果を 「形式を選択して貼り付け」で値とする。
お礼
回答ありがとうございます。 重要なことを伝え忘れておりすみません。 一部のセルに付いているリンクも一緒に動かさなければならないので、せっかくですがこの方法ではうまくいかないようです。
- mu2011
- ベストアンサー率38% (1910/4994)
次の方法は如何でしょうか。 (1)F1に=OFFSET($A$1,(ROW(A1)-1)/5,MOD(ROW(A1)-1,5))設定、下方向にコピー (2)F列をコピー→別列を選択→形式を選択して貼り付け→「値」にチェック→OK
お礼
回答ありがとうございます。 重要なことを伝え忘れておりすみません。 一部のセルに付いているリンクも一緒に動かさなければならないので、せっかくですがこの方法ではうまくいかないようです。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
一番簡単なのは、CSVに書き出して、テキストエディタでカンマを改 行に置換して、Excelで読み直すこと。2分かかりません。
お礼
回答ありがとうございます。 重要なことを伝え忘れておりすみません。 一部のセルに付いているリンクも一緒に動かさなければならないので、せっかくですがこの方法ではうまくいかないようです。
- n-jun
- ベストアンサー率33% (959/2873)
マクロで良ければ、 Sub try() Dim i As Long, j As Long Dim k As Long Dim v, vv With ActiveSheet v = .Range("A1").CurrentRegion.Value ReDim vv(1 To UBound(v, 1) * UBound(v, 2)) .Cells.ClearContents For i = 1 To UBound(v, 1) For j = 1 To UBound(v, 2) k = k + 1 vv(k) = v(i, j) Next Next .Range("A1").Resize(k, 1).Value = Application.Transpose(vv) End With Erase v, vv End Sub こんな感じでしょうか?
お礼
わざわざマクロを作っていただいてありがとうございます。 一瞬で入れ替わってビックリしました!! うまく変換は出来たのですが何故か途中までしかデータが反映されませんでした(150行まで出ます)。 私の知識ではどこをどういじればその先が出るかわからないので、どの値を変えれば良いかご教示いただけると助かります。 もし教えていただけるならA1~F1の値をA1~A6にする方法も一緒に教えていただけると助かります。
お礼
わざわざマクロを作っていただいてありがとうございます。 Kに値が作られていくのを完動しながら見ていました! どちらの方法でもOKでした!これで作業効率が格段に上がります。 非常に助かりました。