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

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

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

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

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

  • 【VB】指定行に文字の追加

    Exelのマクロで ご教授お願いします。 AABB 2012 0219 1111 2222 3333 4444 5555 AABB 2012 0220 1111 2222 3333 4444 5555 6666 7777 AABB 2012 0221 1111 2222 A列にこのような、空欄1行を挟んだデータが数十件あります。これを、 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 このように、マクロで形はそのままに空欄行の1行前の末尾に”END”を追加するという内容です。 よろしくお願いします。m(__)m

  • エクセル マクロ 文字列からの行数の取得

    エクセルでマクロ初心者です。よろしくお願いします。例えば1列目にデータ名が入力されていてその個数が可変である場合(小計は末尾ではありません)小計行の1列目から数式をいれたいのですが、行数が固定でないため小計と書かれたセルの行数を取得したいのですが、わかりません。いい方法をお願いします。    A B C D データ aa bb cc 小計 ・ ・

  • Excel VBA : 追加でコピペする方法

    ExcelのVBAでマクロを作成したので教えて下さい。 sheet(1)C3からC列にDATAが入力済みです。 (同じく、D3からD列にもC列と同じ行数DATAが入力済みです。) DATAは、途中で空白セルは無く、全て埋められた状態です。 (つまり、C列とD列の使用されている行数は全く同じです。) それぞれのDATA(C列、D列)をコピーして Sheet(2)のB3(B列)とC3(C列)から下方にペーストするのですが、 Sheet(2)のB列とC列には既に旧DATAが入力済みなので 旧DATAは消去せず下側に追加する形式でコピペしたいのです。 (旧DATAの直下の行に新規にDATAを追加) 利用済みの行数を取得してコピーは下記で良さそうですが ?   Cells(3,3).end(xlDown).Row.copy 書き込み(ペース)で思考が停止状態です。 どのようにすれば良いでしょうか ?

  • 【マクロ】特定の文字を追加

    こんにちは。 エクセルで管理している一覧表があり、2万行程になります。 そこへ特定の列に文字を追加したいのですが、 行数も沢山あり、気が遠くなりそうです。 添付します画像で、C列は各メーカーが入力されており、 D列(型番)に特定文字で【有り】をC列(メーカー)がA社とB社以外という 条件で追加したいです。 何かいい方法が有りましたら、ご教授頂きたいです。 宜しくお願い致します。

  • 指定の行数に沿ってデータを抜き出すには?

    画像のように、A列にデータが3000くらい入力されており、 C列にランダムに行数が入力されています。 そのC列の行数番号の後に続くA列の10個分のをマクロで連続的に抜き出す方法はありますでしょうか。

  • VB6 MSFlexGrid行数指定について

    はじめまして VB初心者です。 いまさらですが、VB6.0 MSFlexGridの行数指定で悩んでいます。 過去の質問等私なりに調べたのですが、うまく検索することができなかったため、質問させていただきます。 現在、MSFlexGridに5万件程度のデータを表示しようと思っています。 その際、行数を指定するための「Rows」プロパティに行数を設定したいのですが、32767件を超えると、設定できなくなってしまいます。 ヘルプを見る限りではRowsの値はLONGと記載されていますので、設定可能では?っと思っています。 何かお気づきの点がございましたら教えていただけると助かります。 以下大した内容ではありませんが、行数設定部分の記述です。 Dim nCnt As Long nCnt = ReadDataSheet(txtFileName.Text) With flxDataSheet .Cols = 5 .Rows = nCnt + 1 End With

  • EXCEL2007マクロ/オートフィルについて

    VBA初心者です。 EXCEL2007でオートフィルのマクロを作ったのですが、下記のケースで困っています。 A列のデータが入っている行までB列のデータをオートフィルで入力したく、 A列の最終行からデータが入っている行までを求めてB列のデータをオートフィルで入れるため、下記のマクロを設定しました。 Sub test()   Range("B1").AutoFill Destination:=Range("B1", Range("A1048576").End(xlUp).Offset(, 1)) End Sub ところが、A列のデータが2行以上ある場合はうまくいくのですが、一行のみだった場合オートフィルができなくてマクロがとまってしまいます。 一行なので当然なのですが、このような処理をしたい場合、他に方法はないものでしょうか? お知恵を拝借できますと大変助かります。 どうぞよろしくお願いいたします。

  • エクセル、行数をカウントしたい。

    エクセル初心者です。 よろしくお願いいたします。 エクセルでこのような表を作っています。   A  B  C 1 10 15 2 20 3    10 4    15 5 10 6 10 10 7 8 この時、データの入っている行数をカウントしたいのです。 上の例では 「6」 です。 途中に空白の行はありません。 A列、B列にはどちらにも数字が入る場合と、どちらかにしか 入らない場合があります。 なので COUNT は使えないですよね? 今まではデータを入力後、下の空白の行を削除し、C列で COUNTBLANK として求めていたのですが、表の長さ(行数)が一定でないため、 体裁が悪くなってしまっていました。 希望としては。 最終行のC列に「終了」などと入れると、その文字列を判別 してくれて、それより上の行数をカウントしてくれる。 または 例えば OR を使って、A列B列どちらかにデータがある 場合のみ、カウントしてくれる。 こんなワガママなことができたら、と思っております。 補足が必要ならばいたします。 それと、遅くなるかもしれませんが、お礼は必ずさせていただきます。

  • EXCELで分かれたシート間の同一データ行を自動削除して結合したい

    EXCELで、シート1、シート2に分かれたデータがあります。 それぞれのシート間でC列~F列の値が重複している行、シート1側のG列の数値がマイナス になっている行を自動で削除してからデータを1つのシートに結合する方法を探しています。 条件は、シート1側の重複データ行のみを削除し、シート2側のデータが必ず残る方法であ る必要があります。G列のマイナス行を削除するのはシート1側のみです。 シート1がA列~I列、約3万行、シート2がA列~K列、約1千行くらいです。 シート2側のみJ列~K列(数値データが入っています)が存在しますが、シート1側は空欄です。 列の数は変わりませんが、行数が都度変動しますのでマクロでコピー先のセル位置を決め打ちする 事が出来ません。 1つのシート上で重複するデータを削除する方法は見つける事が出来たのですが、残す方のデータ が指定出来ないのと、複数のシート上の重複データを削除する方法が見つかりませんでした。 何か良い方法がありましたら、ご教授下さい。

  • マクロを追加したら保存時間が異常に長くなってしまい、困っています。。

    office2003のエクセルにマクロを追加したところ、保存時間が異常に長くなってしまい困っています。 現在の状況は以下の通りです。 エクセルのファイルの大きさは271KB マクロ追加前の保存時間=約3秒 マクロ追加後の保存時間=約12秒 追加したマクロ=シートの指定の場所を表示させるための簡単なマクロを5つ追加しました。それぞれのマクロの行数は注釈行も入れて10~15行程度の小さなものです。下に一つだけ例を示します。 Sub データ入力() ' ' データ入力 Macro ' マクロ記録日 : 2008/6/11 ユーザー名 : *** ' データ入力部を画面の左上に表示する。 Range("データ入力用セル:U41").Select ActiveWindow.Zoom = True ActiveWindow.Zoom = 82 ' End Sub その他:outlook等はインストールしていません。 対策を御存知の方がいらっしゃったら御教示下さい。 以上