• ベストアンサー

(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行ぐらいあるので今までのやり方では厳しいと思い相談させていただきました。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

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

katsu009
質問者

お礼

わざわざマクロを作っていただいてありがとうございます。 Kに値が作られていくのを完動しながら見ていました! どちらの方法でもOKでした!これで作業効率が格段に上がります。 非常に助かりました。

その他の回答 (5)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.6

ANo.1です。 >うまく変換は出来たのですが何故か途中までしかデータが反映されませんでした(150行まで出ます)。 >もし教えていただけるならA1~F1の値をA1~A6にする方法も一緒に教えていただけると助かります。 >一部のセルに付いているリンクも一緒に動かさなければならないので 私はデータの移動だけで考えてましたので、移動できないのはリンクの ところではないですか? であれば、ANO.5さんの方法が良いと思います。 横を縦に入替えるのも、Transpose:=True が行なってますので。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

例 作業列を使った数式で並べ替える方法 F1:F5にA1,B1,C1,D1,E1 と5行入力 G1に=INDIRECT(F1) と入力してG5までコピー F1:G5を選択して下方に有効分コピーした結果を 「形式を選択して貼り付け」で値とする。

katsu009
質問者

お礼

回答ありがとうございます。 重要なことを伝え忘れておりすみません。 一部のセルに付いているリンクも一緒に動かさなければならないので、せっかくですがこの方法ではうまくいかないようです。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

次の方法は如何でしょうか。 (1)F1に=OFFSET($A$1,(ROW(A1)-1)/5,MOD(ROW(A1)-1,5))設定、下方向にコピー (2)F列をコピー→別列を選択→形式を選択して貼り付け→「値」にチェック→OK

katsu009
質問者

お礼

回答ありがとうございます。 重要なことを伝え忘れておりすみません。 一部のセルに付いているリンクも一緒に動かさなければならないので、せっかくですがこの方法ではうまくいかないようです。

回答No.2

一番簡単なのは、CSVに書き出して、テキストエディタでカンマを改 行に置換して、Excelで読み直すこと。2分かかりません。

katsu009
質問者

お礼

回答ありがとうございます。 重要なことを伝え忘れておりすみません。 一部のセルに付いているリンクも一緒に動かさなければならないので、せっかくですがこの方法ではうまくいかないようです。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

マクロで良ければ、 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 こんな感じでしょうか?

katsu009
質問者

お礼

わざわざマクロを作っていただいてありがとうございます。 一瞬で入れ替わってビックリしました!! うまく変換は出来たのですが何故か途中までしかデータが反映されませんでした(150行まで出ます)。 私の知識ではどこをどういじればその先が出るかわからないので、どの値を変えれば良いかご教示いただけると助かります。 もし教えていただけるならA1~F1の値をA1~A6にする方法も一緒に教えていただけると助かります。

関連するQ&A