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列のデータを求めるマクロを教えてもらいたいのですが。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんな感じでどうでしょうか。
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
No.3
- 回答日時:
No.2 ですが、ちょっと補足です。
B列のデータ条件が、はっきりしない点がありますので、取り敢えず、
次の条件でコーディングしてあります。
B列には、Aの数値が無い場合も想定してあり、その場合は、A列のデータのみを列記する
ようにしています。
これにより、B列のデータを挿入する部分は、同じ数字があった場合は、次の行から、
数値データになる手前までにしています。
数字がない場合も想定していますから、「プラス1の数字があるまで」とはしていません。
幾つでも数値データ、または空白になる手前までを挿入します。
ですから、例で示したB列の文字列データの所に数字だけで表示されているデータのセルが
あればその手前までより挿入されません。
希望するものと相違する場合は、適当に直してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
VLOOKUPの列番号の最大は?
-
列方向、行方向の定義
-
エクセルで最初の行や列を開け...
-
エクセルマクロでオートフィル...
-
エクセルで離れた列を選択して...
-
VBA
-
エクセルマクロPrivate Subを複...
-
エクセルマクロ 並び替え 手動...
-
マクロで日付範囲指定してデー...
-
結合セルを含んだ並べ替え VBA
-
Excelの行数、列数を増やしたい...
-
エクセルで複数列の検索をマク...
-
Accessのレポートで繰り返し表...
-
VBAで結合セルを転記する法を教...
-
条件付きの標準偏差をVBAを用い...
-
エクセルで飛び飛びのセルの計算
-
Excel VBAでvlookup関数を使っ...
-
EXCEL VBA 文字列から電話番号...
-
エクセルのシートの大きさを変える
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
Excelの行数、列数を増やしたい...
-
列方向、行方向の定義
-
VBA 指定した列にある日時デー...
-
エクセルマクロPrivate Subを複...
-
Excel文字列一括変換
-
エクセル マクロ 範囲指定で...
-
Alt+Shift+↑を一括で行うには、...
-
CSVファイルの「0落ち」にVBA
-
VBAで結合セルを転記する法を教...
-
エクセルで複数列の検索をマク...
-
リストからデータを紐付けしたい
-
横軸を日付・時間とするグラフ化
-
エクセルで最初の行や列を開け...
-
エクセルのソートで、数字より...
-
エクセルマクロの組み方
-
☆Excel VBAでAVERAGE関数を使う...
おすすめ情報