• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VB】バラバラの行数の文字を結合+追加)

マクロを使用して複数行の文字を結合+追加する方法

このQ&Aのポイント
  • Excelのマクロを使用して、複数行の文字を結合して追加する方法をご教授ください。
  • セルに格納された複数行の文字を一行にまとめ、末尾に指定のテキストを追加する方法をExcelのマクロで実現したいです。
  • 行数が異なる複数のデータを結合し、一行にまとめて末尾に指定のテキストを追加するExcelのマクロの作成方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • luka3
  • ベストアンサー率72% (434/598)
回答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

indocom
質問者

お礼

試してみたところ希望通りでした。 回答の速さに驚きました、ありがとうございましたm(__)m

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答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

indocom
質問者

お礼

ありがとうございます。 大変勉強になりましたm(__)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答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

専門家に質問してみよう