Exelのマクロで
ご教授お願いします。
AABB 2012 0219 1111
2222 3333 4444 5555
AABB 2012 0220 1111
2222 3333 4444 5555
6666 7777
AABB 2012 0221 1111
2222
このような、空欄1行を挟んだデータが数十件あります。すべてA列です。
これを・・・
AABB 2012 0219 1111 2222 3333 4444 5555 END
AABB 2012 0220 1111 2222 3333 4444 5555 6666 7777 END
AABB 2012 0221 1111 2222 END
このようにマクロで一行にまとめ,末尾に”END”を追加したいのです。
1つのデータの行数は2行だったり、6行だったりと変則です。
よろしくお願いします。m(__)m
No.1ベストアンサー
- 回答日時:
作ってみました。
Sub test()
Dim shSrc As Worksheet, shDst As Worksheet
Set shSrc = Sheets("sheet1") ' 元データのあるシート名
Set shDst = Sheets("sheet2") ' 連結データを作るシート名
yDst = 1
For ySrc = 1 To 10000
' 空行の場合
If shSrc.Cells(ySrc, 1).Text = "" Then
' 2行続けて空行だったら終了
If shDst.Cells(yDst, 1).Text = "" Then End
' 末尾に END を追加
shDst.Cells(yDst, 1).Value = shDst.Cells(yDst, 1).Text & " END"
yDst = yDst + 2
Else ' データがある場合
' 1つ目ならそのまま、2つ目以降ならスペースをはさんで結合
If shDst.Cells(yDst, 1).Text = "" Then
shDst.Cells(yDst, 1).Value = shSrc.Cells(ySrc, 1).Text
Else
shDst.Cells(yDst, 1).Value = shDst.Cells(yDst, 1).Text & " " & shSrc.Cells(ySrc, 1).Text
End If
End If
Next
End Sub
No.3
- 回答日時:
No.2です!
たびたびごめんなさい。
>すべてA列です。
の部分を見逃していました。
前回のコードは無視してください。
もう一度コードを載せておきます。
Sheet1のデータは1行目からあるとします。
Sub test()
Dim i As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("sheet1")
Set ws2 = Worksheets("sheet2")
Application.ScreenUpdating = False
ws1.Cells.Copy Destination:=ws2.Cells(1, 1)
For i = ws2.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If ws2.Cells(i, 1) <> "" And ws2.Cells(i - 1, 1) <> "" Then
ws2.Cells(i - 1, 1) = ws2.Cells(i - 1, 1) & ws2.Cells(i, 1)
ws2.Cells(i, 1).Delete (xlUp)
End If
Next i
For i = 1 To ws2.Cells(Rows.Count, 1).End(xlUp).Row
If ws2.Cells(i, 1) <> "" Then
ws2.Cells(i, 1) = ws2.Cells(i, 1) & "END"
End If
Next i
ws2.Columns(1).AutoFit
Application.ScreenUpdating = True
End Sub
何度も失礼しました。m(_ _)m
No.2
- 回答日時:
こんばんは!
一例です。
Sheet1のデータをSheet2に表示するようにしてみました。
標準モジュールにコピー&ペーストしてマクロを試してみてください。
Sub test()
Dim i, j As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Application.ScreenUpdating = False
ws1.Cells.Copy Destination:=ws2.Cells(1, 1)
For i = ws2.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If ws2.Cells(i, 1) <> "" And ws2.Cells(i - 1, 1) <> "" Then
j = ws2.Cells(i, Columns.Count).End(xlToLeft).Column
Range(ws2.Cells(i, 1), ws2.Cells(i, j)).Copy Destination:= _
ws2.Cells(i - 1, Columns.Count).End(xlToLeft).Offset(, 1)
ws2.Rows(i).Delete
End If
Next i
For i = 1 To ws2.Cells(Rows.Count, 1).End(xlUp).Row
If ws2.Cells(i, 1) <> "" Then
ws2.Cells(i, Columns.Count).End(xlToLeft).Offset(, 1) = "END"
End If
Next i
ws2.Columns.AutoFit
Application.ScreenUpdating = True
End Sub
こんな感じではどうでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBA】A列にある連続したデータの1番下に文字列を入力したい 1 2023/01/28 04:40
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのVBAで最終行の下にコピ...
-
EXCEL マクロ データが転記さ...
-
(Excel2003)すぐ左の最後の行...
-
Excelで同じシートのコピーを一...
-
エクセルVBAでパスの¥マークに...
-
エクセルの複数シートの保護を...
-
EXCEL:同じセルへどんどん足し...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
VBAで条件によりフォントサイズ...
-
Excelで連続印刷をするマクロ
-
VBAでシートコピー後、シート名...
-
条件に応じて特定の行を非表示...
-
複数シートの特定の位置に連番...
-
エクセルでファイル保存時に複...
-
シート名ではなく、相対位置で...
-
エクセルでシート名を自動入力...
-
前の(左隣の)シートを連続参...
-
エクセルで複数設定したハイパーリンク先...
-
エクセルで前のシートを連続参...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL マクロ データが転記さ...
-
VBA繰り返し ワイルドカード
-
Excelで同じシートのコピーを一...
-
条件に応じて特定の行を非表示...
-
エクセルの複数シートの保護を...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルでファイルを開いたと...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルVBAでパスの¥マークに...
-
EXCEL:同じセルへどんどん足し...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
エクセルで前のシートを連続参...
-
前の(左隣の)シートを連続参...
-
EXCELで同一フォーマットのシー...
-
VBAでシートコピー後、シート名...
-
Excel 連番を入力する方法
-
エクセル 計算式も入っていない...
-
エクセルで前シートを参照して...
-
エクセルでシート名を自動入力...
おすすめ情報