当文本是特定颜色时,将数据移动到底行

时间:2014-10-06 19:08:59

标签: excel excel-vba vba

我有一个非常格式化的数据集,它们都在一行上。他们对其进行了格式化,以便每行的第一列中的信息都具有绿色文本,该行的以下列具有红色文本。问题是每行可能有1-5列,所以基于此我不能这样做。

每次到达带有绿色文本的单元格时,我都需要将数据移动到新行。我有使用C ++和一点点javascript的经验,但我对Visual Basic几乎一无所知。我正在使用excel 2013,如果有帮助我可以上传文件。这是我想要完成的逗号分隔演示。

现在的样子:

G1,R1,R2,R3,G2,R4,G4,R5,R6,R7,R8,等等。

我需要它看起来像:

G1,R1,R2,R3

G2,R4

G4,R5,R6,R7,R8 等

1 个答案:

答案 0 :(得分:0)

此宏代码将重组您的数据行,将每个单元格中的绿色字体放在A列中。当前正在识别的绿色阴影为5296274。

Sub Collect_by_Color()
    Dim lRowWithData As Long, lColor As Long, c As Long, lc As Long

    lColor = 5296274
    lRowWithData = 3

    With ActiveSheet
        lc = .Cells(lRowWithData, Columns.Count).End(xlToLeft).Column
        For c = lc To 2 Step -1 'assumes that the cell in column A is already in place
            Debug.Print .Cells(lRowWithData, c).Font.Color
            If .Cells(lRowWithData, c).Font.Color = lColor Then
                .Cells(lRowWithData, c).Resize(1, lc).Copy _
                  Destination:=.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
                .Cells(lRowWithData, c).Resize(1, lc).ClearContents
            End If
        Next c
    End With
End Sub

lRowWithData号码更改为包含数据的行。如果您尚未确定颜色标识符,则会将它找到的字体颜色报告给VBE中的立即窗口。使用Alt + F11进入VBE,然后按Ctrl + G打开立即窗口。