我有NFL统计信息,我在其中登录表格以创建条件格式的热图。
我的数据从E列开始,到P列结束,但是我需要它从a2开始并转到该列的最后一行,然后对每一列都执行相同操作,因此条件不会重叠,并且创建一个大的热图。我只希望每个单独的列都有一个热图,以便我可以进行这种分析。 (并非所有的列都包含数字,并且它们已经扩散,所以有条件的格式无论如何都不应选择文本列)
如何在不显式引用它们的情况下循环这些列?我在一个职位上的状态不会包含与另一职位相同的列数。
我需要使它尽可能动态。另外,有人可以帮助我清理条件格式片段吗?我只是复制了宏记录的代码,因为我自己不知道如何编译它。
我在想这样的事情:
Dim Overall_Stats As Workbook
Dim RB_stats As Worksheet
Set RB_stats = Overall_Stats.Sheets(RB)
LastRow = Range("A" & Rows.Count).End(xlUp).Row
with RB_stats
.Range("A2:A" & LastRow)
.FormatConditions.AddColorScale ColorScaleType:=3
.FormatConditions(.FormatConditions.Count).SetFirstPriority
.FormatConditions(1).ColorScaleCriteria(1).Type = _
xlConditionValueLowestValue
With .FormatConditions(1).ColorScaleCriteria (1).FormatColor
.Color = 8109667
.TintAndShade = 0
End With
.FormatConditions(1).ColorScaleCriteria(2).Type = _
xlConditionValuePercentile
.FormatConditions(1).ColorScaleCriteria(2).Value = 50
With .FormatConditions(1).ColorScaleCriteria(2).FormatColor
.Color = 8711167
.TintAndShade = 0
End With
.FormatConditions(1).ColorScaleCriteria(3).Type = _
xlConditionValueHighestValue
With .FormatConditions(1).ColorScaleCriteria(3).FormatColor
.Color = 7039480
.TintAndShade = 0
End With
End With
For i = 1 to 100
Columns(i).Select
next I
答案 0 :(得分:1)
我不能为您提供条件格式设置,但是您可以通过逐步运行代码并检查每个步骤的效果来轻松地(尽管不是很快)对其进行配置。
要在动态变化的工作表中查找有趣的列,需要做三件事。
找到最右边的列
Dim lastcol as long
lastcol=RB_stats.usedrange.columns.count
注意:此方法简单且可靠性不高,但在最后一列数据不正确的情况下可以使用。准确找到最右边的列是另一门科学,请参见here
确定一列是否包含数字:假设第二行包含数据,则可以测试单元格中的值是否为类型:
If Typename(Cells(2, col))="Double" Then
... this is a column of numbers, do formatting
Typename为数字返回Double
,其他值为String
,Date
,Empty
。
在所选列上应用格式
For col=1 to lastcol
If Typename(Cells(2, col))="Double" Then
' this is a column of numbers, select range for formatting
LastRow = Cells(Rows.Count, col).End(xlUp).Row
with RB_stats.Range(Cells(2, col), Cells(LastRow, Col)
... do formatting here
end with
End If
Next