我想根据一个单元格的值在Excel中对整行进行着色.例如,说我有下面的行:
**File No**
1122
1122
1144
1155
1155
1155
1166
Run Code Online (Sandbox Code Playgroud)
我希望前两行(文件#的值是1122)用颜色1加阴影,下一行(文件#的值是1144)用彩色2加阴影,接下来的3行(文件#的值为1155)为阴影颜色1,下一行(文件#的值为1166)为阴影颜色2
小智 65
您可以执行的操作是在电子表格的右侧创建一个新列,您可以使用该列来计算可以基于阴影的值.
假设您的新列是D列,您要查看的值位于从第2行开始的A列中.
在单元格D2中:= MOD(IF(ROW()= 2,0,IF(A2 = A1,D1,D1 + 1)),2)
根据需要填写,然后(如果需要,隐藏列).
现在突出显示您的整个数据集 - 这些单元格选择将在下一步中被遮挡.
在" 主页"选项卡中,单击" 条件格式",然后单击" 新建规则".
选择" 使用公式"确定要格式化的单元格.
在"此公式为真的格式值"中,put = $ D2 = 1
单击" 格式"按钮,单击" 填充"选项卡,然后选择要用其着色的颜色.
这里的例子:
我在Pearson Software Consulting处找到了一种按内容分类的简单解决方案:假设标题从A1到B1,表数据从A2到B5,控制单元在A列中
小智 5
这个问题困扰了我多年。不喜欢创建一个额外的(不相关的)行/列来计算格式的想法。最后得出以下规则:
=INDIRECT("A"&ROW())<>INDIRECT("A"&(ROW()-1))
Run Code Online (Sandbox Code Playgroud)
这将创建A2<>A1
第 2 行、A3<>A2
第 3 行等的参考。将字母“A”调整为要比较的列
小智 5
我讨厌使用这些单元内公式,并且不得不填写新的专栏,最后我了解到足够多的知识,可以通过自己的VBA宏来实现此效果。
从逻辑上来说,这可能与其他答案没有什么不同,但是我认为代码看起来要好得多:
Dim Switch As Boolean
For Each Cell In Range("B2:B" & ActiveSheet.UsedRange.Rows.Count)
If Not Cell.Value = Cell.Offset(-1, 0).Value Then Switch = Not (Switch)
If Switch Then Range("A" & Cell.Row & ":" & Chr(ActiveSheet.UsedRange.Columns.Count + 64) & Cell.Row).Interior.Pattern = xlNone
If Not Switch Then Range("A" & Cell.Row & ":" & Chr(ActiveSheet.UsedRange.Columns.Count + 64) & Cell.Row).Interior.Color = 14869218
Next
Run Code Online (Sandbox Code Playgroud)
我的代码在B列中进行,它假设有一个标题行,所以它从2开始,并且我使用Chr(x + 64)方法获取列字母(它将无法通过Z列;我还没有找到了一种足够简单的方法来解决这个问题)。
首先,布尔变量将在值更改为新值时交替使用(使用“偏移量”检查上面的单元格),并且对于每个遍,都将检查该行的True或False并相应地为其着色。
如果您使用的是 MS Excel 2007,您可以使用选项卡conditional formatting
上的Home
,如下面的屏幕截图所示。您可以color scales
像我在这里所做的那样使用默认选项,也可以继续new rule
根据您的数据集创建一个。