• ベストアンサー

エクセルについて

質問失礼します。 複数のセルに入っているデータを1つのセルにまとめる場合は =とセル番号を&でつなげるか、もしくはCONCATENATEを使うかと思いますが その場合、書式設定は引き継ぎされないかと思います。 A,B,Cのセルに入っているそれぞれの文字を書式情報(文字色)をそのままに Dのセルにまとめることは可能でしょうか? かなり膨大な量をまとめたいので、困っております。 ちなみにAが赤色の●、Bが青色の●、Cが緑色の●で、 それをDに文字色をそのままですべてまとめたいと思っています。 (それが1000行以上あるので…) よろしくお願いいたします。 ※画像は例です。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 御質問の様な処理は、ワークシート関数等のExcelの通常の機能では行う事が出来ませんので、VBA等のマクロを使って行う事になります。  尚、御質問の処理を何行目のセルから始めれば良いのかに関して御説明が無いため、取りあえず仮の話としてD2以下のセルに対してその様な処理を行うものとした場合に関するVBAマクロをお伝えいたします。 Sub QNo9083234_エクセルについて() Dim temp, myColumn(3) As String, i As Long, j As Long, _ c As Range, myStart As Long, myLength As Long, LastRow As Long, _ ReferFont, ReflectFont myColumn(0) = "D" myColumn(1) = "A" myColumn(2) = "B" myColumn(3) = "C" LastRow = 0 For j = 1 To 3 temp = Range(myColumn(j) & Rows.Count).End(xlUp).Row If temp > LastRow Then LastRow = temp Next j With Application .ScreenUpdating = False .Calculation = xlManual End With For i = 2 To LastRow temp = "" For j = 1 To 3 With Range(myColumn(j) & i) temp = temp & Format(.Value, .NumberFormatLocal) End With Next j Range(myColumn(0) & i).Value = temp myStart = 1 For j = 1 To 3 With Range(myColumn(j) & i) myLength = Len(Format(.Value, .NumberFormatLocal)) Set ReferFont = .Font End With Set ReflectFont = Range(myColumn(0) & i).Characters(myStart, myLength).Font ReflectFont.Name = ReferFont.Name ReflectFont.FontStyle = ReferFont.FontStyle ReflectFont.Size = ReferFont.Size ReflectFont.Strikethrough = ReferFont.Strikethrough ReflectFont.Superscript = ReferFont.Superscript ReflectFont.Subscript = ReferFont.Subscript ReflectFont.OutlineFont = ReferFont.OutlineFont ReflectFont.Shadow = ReferFont.Shadow ReflectFont.Underline = ReferFont.Underline ReflectFont.Color = ReferFont.Color ReflectFont.TintAndShade = ReferFont.TintAndShade ReflectFont.ThemeFont = ReferFont.ThemeFont myStart = myStart + myLength Next j Next i With Application .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With ※もし処理を開始する行を変更される場合には、上記の構文の中の For i = 2 To LastRow という箇所の中で2となっている箇所を、処理を開始する実際の行番号に合わせて変更して下さい。

haruka214
質問者

お礼

ご丁寧にありがとうございます!さっそく試してみたいと思います!ありがとうございます!

その他の回答 (2)

  • f272
  • ベストアンサー率46% (8531/18262)
回答No.2

たとえばA9:A11をA15に文字色を引き継いでまとめるならこんな感じ。 Sub test() Set d = Range("A15").Offset(0, 0) d.Value = "" For i = 1 To 3 Set s = Range("A9").Offset(i - 1, 0) d.Value = d.Value & s.Value Next i ls = 1 For i = 1 To 4 Set s = Range("A9").Offset(i - 1, 0) le = ls + Len(s) - 1 d.Characters(ls, le).Font.Color = s.Font.Color ls = le + 1 Next i End Sub

haruka214
質問者

お礼

ありがとうございます!自分でVBAをくめればよかったのですがもう何年も前の話ですっかり忘れて……さっそく試してみたいと思います!ありがとうございます!

回答No.1

  書式設定はセルに対して働きます だから、Aセルが赤、Bセルが青、Cセルが緑としてDセルは何色にしますか? 赤+青+緑ですか?、残念ながらそんな色はありません 何れにしてもDセルは一色しか選べません  

haruka214
質問者

補足

そうすると三つの●の色はそれぞれ手動で文字色を変更しないといけないということですよね。。。 そうです、Dセルに入力してある●(赤色)+●(青色)+●(緑色)にしたいのです。 セルの背景色はいいんですけど、文字色だけ変えたいんです。 ちなみにその●も、if関数である条件を満たすと●になるように設定してある過去のデータを一気にまとめたいという内容でした。

関連するQ&A

専門家に質問してみよう