• 締切済み

VBAで複数列セルに入力されている文字を一行に

こんにちは。VBAにて下記イメージの複数列セルに入力されている文字を一行に変換しメモに出力すると同時に出力された一行の文字列をコピーした状態にしたいです。セルに記載された文字は「,」カンマで区切った状態で範囲はA3セルからA50位となります。また、セルが結合されていたり空白が存在したり様々です。大変申し訳御座いませんがご教授宜しくお願いします。 あああ → あああ,いいい,ううう,えええ,おおお・・・ いいい ううう  えええ おおお ・ ・ ・

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

データは複数列だったのだな。 ーー 第3行の各列にデータがあるとします。 結果をD1セルに入れます。 Join関数が便利です。 標準モジュールに Option Base 1 Sub test03() Dim d() As String lc = ActiveSheet.Cells(3, 256).End(xlToLeft).Column MsgBox lc ReDim d(lc) For j = 1 To lc d(j) = Cells(3, j) Next j x = Join(d, ",") MsgBox x ActiveSheet.Range("D1") = x End Sub ーーー >セルが結合されていたり空白が存在したり・・ の影響は、実際データがないので、影響は測りかねる。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

データのあるブックと同じフォルダーに、Sample.txtを出力し、セルE1に内容を書き出しています。 複数列セルは複数行? 「コピーした状態」が少々不明です。結合セルはテキストを持つ1つのセル、空白セルは無視しています。 Sub csvFile()  Dim wk As String  Dim rg As Range     For Each rg In Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row)   If rg.Value <> "" Then    wk = wk & "," & rg.Value   End If  Next  wk = Mid(wk, 2)  Open ThisWorkbook.Path & "\Sample.txt" For Output As #1   Print #1, wk  Close #1  Range("E1") = "'" & wk  Range("E1").Select End Sub

回答No.4

目的が良くわかりませんが貴条件の範囲で力づくで解決するなら下記で良いと思います。 下記は、「A3~A50」のセルに文字が入っている場合に文字を連結して「B1」に 表示します。空欄は無視します。なお、数字欄があるとエラーになるため文字に読み替えて連結しています。No.1の回答のほうがスマートのような気がします。 Sub Macro1() ' x = "": '連結文字を初期化 For i = 3 To 50: '3~50行を繰り返す y = CStr(Cells(i, 1)): '指定行の文字を読み取り空欄でなければ連結文字に追加する If y <> "" Then x = x + y + "," End If Next i Cells(1, 2) = Left(x, Len(x) - 1): '連結文字の最後の","を取って「B1」セルに表示する End Sub

  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.3

あああ がA3で いいい がA4 とかでA50位まで続くのでしたら 貼り付け用シートを作成して A1からA100までコピーして 貼り付け用シートに「行列を入れ替える」で貼り付けして 名前を付けて保存で(保存時にメッセージが出るので現在選択されたシートを保存)CSV形式で保存する この動作をマクロの記録で記録したら (シート名をBook1とすると) Sub Macro1() Range("A3:A100").Select Selection.Copy Sheets("Book1").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:="保存した場所のフォルダー名\Book1.csv", _ FileFormat:=xlCSV, CreateBackup:=False End Sub といったものができるので、それを実行するようにすればいいのではないでしょうか。コピーするデータのあるシートで実行です。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.2

》 VBAにて…一行の文字列をコピーした状態にしたいです なぜVBAに固執するのか不可解だけど、VBAを使わない別解ということで・・・ 1.簡単な式 =B1&" "&A2 を入力したセル B2 を下方にオートフィル 2.次式を入力したセル C1 を[コピー]&[値の貼り付け]でオシマイ!  ̄ ̄=SUBSTITUTE(TRIM(LOOKUP("黑",B2:B1000))," ",",")

  • Nobu-W
  • ベストアンサー率39% (725/1832)
回答No.1

https://www.shegolab.jp/entry/excel-macro-concat-cells-text 上記サイトのVBAいじれば・・・可能かもですっ

参考URL:
https://www.shegolab.jp/entry/excel-macro-concat-cells-text

関連するQ&A

  • 複数列セルの文字を一行に変換しコピー

    こんにちは。下記イメージの複数列セルに入力されている文字を一行に変換しメモに出力すると同時に出力された一行の文字列をコピーした状態にしたいです。セルに記載された文字は「,」カンマで区切った状態で範囲はA3セルからA50位となります。また、セルが結合されていたり空白が存在したり様々です。大変申し訳御座いませんがご教授宜しくお願いします。 あああ → あああ,いいい,ううう,えええ,おおお・・・ いいい ううう  えええ おおお ・ ・ ・

  • VBAでセル内の文字列を一行にする方法

    ExcelのVBAで、セル内に折り返しで3行に書かれている文字列を、各文字列間に空白を1つ入れて、1行につなげるにはどうしたらいいですか

  • セル内文字を切り取りその列の空白セルに貼付け

    B列3行目から添付のようにセル内にカンマを含む文字がありカンマで区切った文字ごとに切り取り矢印右のように同B列の次の空白行に順に貼り付けたく、その際カンマは削除したいのですが行数が多くてできればVBAコードがお分かりなる方宜しくお願いします。 環境はwindows7 office2013です。

  • VBA 文字が入力されているセルを表示させたい

    ExcelのVBAで 列番号"A列"に文字を適当に打った時 文字が入っている最終セル(行番号)と その最終セルに入っている文字を "C1"のセルに表示させる というVBAを作成したいのですガ… どなたかわかる方教えて下さい 自分が考えたものはVBAが妙に長くなってしまい; Excelのバージョンが2000と古いので 古いのでも動くVBAだと助かります; 宜しくお願いします

  • セル内文字を切取りその行範囲の列の空白セルに貼付

    B列3行目から添付のようにセル内にカンマを含む文字がありカンマで区切った文字ごとに切り取り矢印右のように同B列の次の空白行に順に貼り付けたく、その際カンマは削除したいです。また等間隔の名前の行がある中で枠内の空白に文字を張付けたく等間隔行数枠が多くてできればVBAコードがお分かりなる方宜しくお願いします。 環境はwindows7 office2013です。

  • エクセルVBAのヒントをください

    エクセルのある列に、文字列が入っているとします。 たとえば、Aであったり、Cであったり、A,C,Fとカンマ区切りで複数の文字列(個数は不定) が入っていたりします。 このとき、一行に一つの文字列しか含まないように、カンマで区切られた文字列を展開し、 複数行に分けて格納したいと思っています。 たとえば、一番上の行のセルにA、二番目の行に「C,D,A」、三番目の行にB、四番目の行に 「E,A」と入っていたら、各行に一文字列のみ入るように、上からA、C、D、A、B、E、Aという行を 作りたいと思います。各セルに含まれる文字列の個数は不定で、規則性はありません。 基本的に、 (1)各セルに含まれているカンマの数を調べる (2)カンマの数だけ次の処理を繰り返す  ・行挿入   ・最初のカンマの位置を調べる   ・先頭からカンマまでを切り取る   ・上記の値をセルに入力  ・行挿入   ・2番目のカンマの位置を調べる   ・1番目のカンマの位置+1から2番目のカンマの位置まで切り取る   ・上記の値をセルに入力 上記をカンマの数だけ繰り返す。 といった具合にしていくのだと思いますが、このような処理をするのに はどの程度のVBAのスキルが必要ですか? 上記のヒントや、参考になるサイト、書籍があればご教授ください。

  • エクセルの一つのセルに複数行の文字を入れる方法

    エクセルの一つのセルに複数行の文字を入れる方法を教えてください。 メモ帳などで入力したこのような文章をエクセルに挿入したいのです。 1.あいうえお   あいうえお   あいうえお そのままコピーしてエクセルに貼り付けたら 一つのセルには入らず3行分にまたがってはいりました。 セルの結合をするのかしら?と思って結合したら1行目の「1.あいうえお」が真ん中に残って 2,3行目の文字が消えてしまいました。 このような文章をこのままの状態で一つの列の一つの行(A列1行目など)に入れるには どのようにすればできるのでしょうか?

  • Excel VBAでセルの整列

    Excel VBAでセルの整列 現在、VBAを勉強中の者です。 最近、勉強を始めたばかりですが、この前何とかVBAを用いてセルの塗り潰しが出来る様になりました。 そこで、今度は色が塗り潰されたセルを添付した画像のように整列したいと考えていますが、どんな風にすれば良いのか見当がつきません。 誰か、教えてください。 やりたい事は、A列に結合されているセルがいくつか存在していて、B列を挟んでC列にA列に関連する文字が入力されています。 そして、C列には予めセルが塗り潰されている箇所がありますが、今回、C列において塗り潰されているセルのみを、結合されているセルの最終行に移動させたいのです。

  • エクセルのセル内の文字の移動

    いつもお世話になります。 教えてください。 A列に入力されてる文字とB列に入力されてる文字をすべてA列に表示するにはどうすればいいのでしょう。セルの結合ではなく文字の移動が可能でしょうか。200行位を一発で変換したいのですが。よろしくお願いします。   

  • セルの結合

    VBAの勉強を始めたばかりの初心者です。 A1、A5 A9・・・・A25までのセルに、それぞれデータが入っていて、データが入っている各セルの下にはデータが入っていない空白の三行を作っています。隣のB列にもデーターはありません。 それをA1からB4、A5からB8・・・A25からB29までのセルを、手作業で結合をしているのですが、今後データが増えていくのでどうしてもVBAで行いたいのです。 ネットで調べてもありそうでなかなかないのでどなたか教えていただければ助かります。 わかりにくい説明ですが宜しくお願いします。   A列  B列 1 ああ  空白 2 空白  空白 3 空白  空白 4 空白  空白 5 ああ  空白 6 空白  空白 7 空白  空白 8 空白  空白 9 ああ  空白 ・ ・

専門家に質問してみよう