ここから質問投稿すると、最大4000ポイント当たる!!!! >>

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

このQ&Aに関連する最新のQ&A

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/07/24 17:12

ANo.1です。


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

例 作業列を使った数式で並べ替える方法


F1:F5にA1,B1,C1,D1,E1 と5行入力
G1に=INDIRECT(F1) と入力してG5までコピー
F1:G5を選択して下方に有効分コピーした結果を
「形式を選択して貼り付け」で値とする。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/07/24 17:11

次の方法は如何でしょうか。


(1)F1に=OFFSET($A$1,(ROW(A1)-1)/5,MOD(ROW(A1)-1,5))設定、下方向にコピー
(2)F列をコピー→別列を選択→形式を選択して貼り付け→「値」にチェック→OK
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/07/24 17:10

一番簡単なのは、CSVに書き出して、テキストエディタでカンマを改


行に置換して、Excelで読み直すこと。2分かかりません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/07/24 17:10

マクロで良ければ、


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
こんな感じでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/07/24 17:09

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング