重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

調べたのですが、見つからないので教えてください。
次のように2列あるデータを1列にしたい。
数字の1がアクティブセルになっているとして、
数字データがある限り続けるものとします。
よろしくお願いいたします。

1 あ
2 い
3 う
・ え
・ お











A 回答 (2件)

そんなにしゃかりきにならなくても淡々と終わりまで、右から下に持っていくというのを繰り返すだけです。



前提:
>数字の1がアクティブセルになっているとして、
>数字データがある限り続けるものとします。


sub macro1()
 do until activecell.value = ""
 with activecell
  .offset(1).entirerow.insert
  .offset(0, 1).cut .offset(1)
  .offset(2).select
 end with
 loop
end sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にさせていただきます。

お礼日時:2012/09/21 12:09

こんばんは!


関数でも可能のような気がしますが・・・
VBAをご希望だというコトなので、一例です。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。

尚、データはA・B列にあるとします。

Sub test()
Dim i As Long, k As Long
k = ActiveCell.Row
For i = Cells(Rows.Count, 1).End(xlUp).Row To k + 1 Step -1
Rows(i).Insert
Next i
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) = "" Then
Cells(i, 1) = Cells(i - 1, 2)
End If
Next i
Range(Cells(k, 2), Cells(Cells(Rows.Count, 2).End(xlUp).Row, 2)).ClearContents
End Sub

※ For~Next でLoopさせていますので、極端にデータ量が多い場合は結構時間がかかると思います。
データ量が多い場合は他の方法を考える必要があると思います。m(_ _)m
    • good
    • 0
この回答へのお礼

回答ありがとうごさいました。

コードはひとつのやり方として参考にさせていただきます。

お礼日時:2012/09/21 12:06

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