dポイントプレゼントキャンペーン実施中!

書式そのままで複数行を1列にまとめるにはどうしたらいいでしょうか?

できれば空白を取り除いて1行にしたいのです

質問者からの補足コメント

  • 複数行→複数列でした。すみません。

    画像のように書式をつけた列A~Rがあり、列Tに全ての列をまとめたいのです

    「エクセルで複数列を1列にまとめるマクロ」の補足画像1
      補足日時:2022/09/07 16:07
  • HAPPY

    沢山考えて下さってありがとうございます!
    参考になるコードもあり、とても勉強になりました

    今回の件については以下のコードで自己解決しました
    親身になって考えてくださりありがとうございました!

      補足日時:2022/09/07 19:29
  • HAPPY

    Dim Last_Row As Long
    Dim i As Long
    Dim Target_Row As Long

    '転記開始行
    Target_Row = 1

    '18列分ループ
    For i = 1 To 18

    '最終行を取得
    Last_Row = Cells(Rows.Count, i).End(xlUp).Row

    'コピーして貼り付け
    Range(Cells(1, i), Cells(Last_Row, i)).Copy Cells(Target_Row, 20)

    '転記開始行
    Target_Row = Cells(Rows.Count, 20).End(xlUp).Row + 1

    Next i

    End Sub

      補足日時:2022/09/07 19:30

A 回答 (6件)

こんばんは


>まとめる
>空白を取り除いて1行にしたいのです
複数の列の値を繋げて1行にすると言う事・・改行とか要らない

各セルには改行コードが無いと仮定すると
4行目だけの例ですと

Dim r As Range, rng As Range
Dim st As String
Set rng = Range("A4:R4")
For Each r In rng
st = st & r.Text
Next
Dim trg As Range
Set trg = Range("T4")
trg = Replace(Replace(st, " ", ""), " ", "")
こんな感じで良いのかな・・・

書式とは?フォントの色だけですか・・
例えば
Dim n As Long, i As Long
n = 1
For Each r In rng
For i = 1 To Len(r.Text)
With trg.Characters(n, 1)
If .Text = " " Or .Text = " " Then n = n + 1
.Font.Color = r.Characters(i, 1).Font.Color
End With
n = n + 1
Next
Next
End Sub
文字数、範囲が大き(多)いと 処理時間かかりそう
    • good
    • 1
この回答へのお礼

おおお...
こういうやりかたもあるんだとすごく勉強になります
今回、別のやり方で解決しましたが
このやりかたは他の作業に流用できそうだし、とても参考になりました!
ありがとうございます!

お礼日時:2022/09/07 19:26

#4 >書式とは?フォントの色だけですか・・例えば


確かめてみたら、でたらめでした。すみません

Dim r As Range, rng As Range
Dim st As String
Set rng = Range("A4:R4")
For Each r In rng
st = st & r.Text
Next
Dim trg As Range
Set trg = Range("T4")
trg.Clear
trg = Replace(Replace(st, " ", ""), " ", "")
Dim n As Long, i As Long
n = 1
For Each r In rng
For i = 1 To Len(r.Text)
If r.Characters(i, 1).Text = " " Or r.Characters(i, 1).Text = " " Then
n = n - 1
Else
trg.Characters(n, 1).Font.Color = r.Characters(i, 1).Font.Color
End If
n = n + 1
Next
Next
    • good
    • 1
この回答へのお礼

書式はフォントサイズとB(太字)です
作って頂いてありがとうございます!すごい!
そういう風に書式も指定できるんですね
初めて知りました
ありがとうございます!

お礼日時:2022/09/07 19:22

>空白を取り除いて1行にしたいのです



もうちょい画像のセル範囲を少なくした例題があると良かったのですが。
老眼で見る限りでは、列単位でコピーし目的の列に順次書式変更なしで貼り付けていって最後に空白セルは消すって感じなのですかね?
    • good
    • 1
この回答へのお礼

すみません、急いでいたので元のデータを張ってしまいました
分かりやすいのを作ればよかったですね...
おっしゃる通りです

お礼日時:2022/09/07 19:23

単に、A~R列のセルにある文字を繋げたいのなら、concatenate関数で結合できますが、書式(文字色)は引き継がれません。


3行目のようにセル全体の文字色を赤にするのなら、その部分だけ選択して文字色を変える方が簡単です。

おそらく、意図しているのはA~Rのセルのいずれかまたは部分的に赤文字の部分の色を継承したいということでしょうか。
それができるとするなら、文字色を変える前後にマーカーになりうる記号をつけて、そのマーカーに囲まれた部分の文字色のパラメータを赤に変えるといったマクロを組むことになるのでしょうが、個別にやる方がカンタンではないかと(労多くして益なし)。
    • good
    • 1
この回答へのお礼

つらい・・・

ありがとうございます
ネットには書式をコピーできるが毎回列の指定が必要なものと
指定は必要ないが、書式をコピーできないものがありました
大変ですが前者を使うしかないでしょうか、うむむ

お礼日時:2022/09/07 16:46

意味不明なのですよ。


タイトルには、「複数列を1列にまとめる」
とあり、本文には、「複数行を1列にまとめる」とある。
そして「できれば空白を取り除いて1行にしたい」。
列と行の区別をしっかりしてください。

サンプル画像を添付してくださいな。
    • good
    • 0
この回答へのお礼

失礼しました
複数行→複数列でした
補足で画像を添付させて頂きました!

お礼日時:2022/09/07 16:09

「書式そのままで複数行を1列にまとめる」とは、添付のようなことですか?



「書式そのまま」という趣旨をもう少し明確にしたほうが良いと思います。
「エクセルで複数列を1列にまとめるマクロ」の回答画像1
    • good
    • 0
この回答へのお礼

ありがとうございます
補足させて頂きました!

お礼日時:2022/09/07 16:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A