我有一个非常格式化的数据集,它们都在一行上。他们对其进行了格式化,以便每行的第一列中的信息都具有绿色文本,该行的以下列具有红色文本。问题是每行可能有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 等
答案 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打开立即窗口。