0

データ:

次の表があります。

160  89  85 116 161
147 117 133 148 191
 93  91  94  92 107
147 148 177 133 205
116 147 117 190 148

問題:

データを単一の列に結合したい。

ボタンを介して実行される単一行のコード。

コード:

Sub mergeStuff()
    Range("M3").Value = CStr(Range("H3").Value) + "," + CStr(Range("I3").Value) + "," + CStr(Range("J3").Value) + "," + CStr(Range("K3").Value) + "," + CStr(Range("L3").Value)
End Sub

出力例:

    160,89,85,116,161
    147,117,133,148,191
     93,91,94,92,107
    147,148,177,133,205
    116,147,117,190,148

質問:

数値がフォーマットされます。色が異なります。1 つのセルに結合し、色の書式を維持するにはどうすればよいですか?

4

2 に答える 2

1

.Characters メソッドを使用して、セル内またはセルの文字列値内の文字を書式設定できます。

例は次のとおりです。

Cells(1, 1).Characters(1, 3).Font.Color = RGB(0, 255, 0)
于 2013-09-04T15:31:54.243 に答える
1

このコードは、色の値を保存し、セルを連結してから、保存された色の値に基づいて文字列に色を付けます。1 to 5連結する列の数を反映するように変更する必要があります。あなたの例では、5 つの列があります。その1 to 3部分はそのままにしておくことができます。

Sub mergeStuff()

    Dim arrColors(1 To 5, 1 To 3) As Long
    Dim rIndex As Long
    Dim cIndex As Long
    Dim StartColor As Long
    Dim strOutput As String
    Dim i As Long

    For rIndex = 3 To Cells(Rows.Count, "H").End(xlUp).Row
        StartColor = 1
        strOutput = vbNullString
        For cIndex = Columns("H").Column To Columns("L").Column
            strOutput = strOutput & "," & Cells(rIndex, cIndex).Value
            arrColors(cIndex - Columns("H").Column + 1, 1) = StartColor
            arrColors(cIndex - Columns("H").Column + 1, 2) = Len(Cells(rIndex, cIndex).Value)
            arrColors(cIndex - Columns("H").Column + 1, 3) = Cells(rIndex, cIndex).Font.Color
            StartColor = StartColor + Len(Cells(rIndex, cIndex).Value) + 1
        Next cIndex

        With Cells(rIndex, "M")
            .Value = Mid(strOutput, 2) 'Remove beginning comma
            For i = 1 To UBound(arrColors, 1)
                .Characters(arrColors(i, 1), arrColors(i, 2)).Font.Color = arrColors(i, 3)
            Next i
        End With
    Next rIndex

End Sub
于 2013-09-04T15:46:48.613 に答える