「一気に最後まで読んだ」本、教えて下さい!

A列とB列に以下のような感じでデータが入ってます。

A列
A1  1
A2  あ
A3  い
A4  う
A5  え
A6  2
A7  お
A8  か
A9  3
A10  さ
A11  し
A11  す

B列
B1   1
B2   a
B2  2
B3  b
B4  c
B5  3
B6  d
B7  e

両列に共通しているのは数字の1から始まり、1の後に何らかのデータが続いた後に2がきて、また何らかのデータが続いた後に3がきます。
そんな感じで数値が増えて両列とも500(行ではなく数値が)まであります。
この二つの列のデータを合わせたものをC列に表したいのですが。
その規則ですが。まず1がきて、その後にB列の1から下のデータ(2の前まで)がきて、次にA列の1から下のデータ(2の前まで)がきます。2以下も同様になります。

C1  1
C2  a
C3  あ
C4  い
C5  う
C6  え
C7  2
C8  b
C9  c
C10  お
C11  か
C12  3
C13  d
C14  e
C15  さ
C16  し
C17  す

C列のデータを求めるマクロを教えてもらいたいのですが。
よろしくお願いします。

A 回答 (3件)

こんな感じでどうでしょうか。



Sub test()
Dim Rng As Range
Dim RngB As Range
Dim B As Range
Dim Rw As Long
Dim N As Long
Set RngB = Range("B1", Range("B65536").End(xlUp))
Rw = 1
For Each Rng In Range("A1", Range("A65536").End(xlUp))
  If IsNumeric(Rng) Then
    Range("C" & Rw) = Rng.Value
    Rw = Rw + 1
    Set B = RngB.Find(Rng.Value, lookat:=xlWhole)
    If Not B Is Nothing Then
      N = 1
      Do Until IsNumeric(B.Offset(N).Value)
        Range("C" & Rw).Value = B.Offset(N).Value
        N = N + 1
        Rw = Rw + 1
      Loop
    End If
  Else
    Range("C" & Rw) = Rng.Value
    Rw = Rw + 1
  End If
Next Rng
Set RngB = Nothing
End Sub
 
    • good
    • 0

No.2 ですが、ちょっと補足です。



B列のデータ条件が、はっきりしない点がありますので、取り敢えず、
次の条件でコーディングしてあります。

B列には、Aの数値が無い場合も想定してあり、その場合は、A列のデータのみを列記する
ようにしています。

これにより、B列のデータを挿入する部分は、同じ数字があった場合は、次の行から、
数値データになる手前までにしています。

数字がない場合も想定していますから、「プラス1の数字があるまで」とはしていません。
幾つでも数値データ、または空白になる手前までを挿入します。

ですから、例で示したB列の文字列データの所に数字だけで表示されているデータのセルが
あればその手前までより挿入されません。

希望するものと相違する場合は、適当に直してください。
    • good
    • 0
この回答へのお礼

ありがとうございました。
うまくいきました!

お礼日時:2003/09/14 02:02

こんにちは



1つ質問しますが、途中に空行は含まれますか?
また含まれた場合、空行も表示しますか?

この回答への補足

空行は含まれません。
よろしくお願いします。

補足日時:2003/09/13 15:00
    • good
    • 0

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