我想根据一个单元格的值在Excel中对整行进行着色。例如,说我有下面的行:
**File No**
1122
1122
1144
1155
1155
1155
1166
我希望前两行(文件#的值为1122)以颜色1加阴影,下一行(文件#的值为1144)加上颜色2阴影,接下来的3行(其中文件#的值为1155)为阴影颜色1,下一行(文件#的值为1166)为阴影颜色2
答案 0 :(得分:60)
您可以执行的操作是在电子表格的右侧创建一个新列,您可以使用该列来计算可以基于阴影的值。
假设您的新列是D列,您要查看的值位于第2行的第A列。
在单元格D2中:= MOD(IF(ROW()= 2,0,IF(A2 = A1,D1,D1 + 1)),2)
根据需要将其填满(如果需要,则隐藏列)。
现在突出显示您的整个数据集 - 此选择的单元格将在下一步中显示阴影。
在主页标签中,点击条件格式,然后点击新规则。
选择使用公式确定要格式化的单元格。
在“格式化此公式为真的值”中,输入 = $ D2 = 1
点击格式按钮,点击填充标签,然后选择要加阴影的颜色。
这里的例子:
答案 1 :(得分:4)
如果您使用的是MS Excel 2007,则可以使用conditional formatting
标签上的Home
,如下面的屏幕截图所示。您可以像我在此处使用color scales
默认选项一样使用,也可以根据您的数据集创建new rule
。
答案 2 :(得分:4)
以最简单的形式,你说“对于这个单元格,如果它的值是X,则应用格式foo”。但是,如果使用“公式”方法,则可以选择整行,输入公式和关联格式,然后对表格的其余部分使用复制和粘贴(仅限格式)。
您只能在Excel 2003或更早版本中使用3个规则,因此您可能希望为颜色定义模式而不是使用原始值。这样的事情应该有效:
答案 3 :(得分:4)
我找到了Pearson Software Consulting内容绑定的简单解决方案: 假设标题是从A1到B1,表数据是从A2到B5,控制单元格在A列中
答案 4 :(得分:4)
这个让我困惑多年。不喜欢创建额外(不相关)行/列只是为了计算格式。最后提出了以下规则:
=INDIRECT("A"&ROW())<>INDIRECT("A"&(ROW()-1))
这会为第2行创建引用A2<>A1
,为第3行创建A3<>A2
等。
将字母“A”调整为您要比较的列
答案 5 :(得分:3)
我讨厌使用这些in-cell公式并且必须填写一个新列,我终于学会了用自己的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
我的代码在B列中,它假设一个标题行,所以从2开始,我使用Chr(x + 64)方法获取列字母(这不会超过Z列;我没有还没有找到一个简单的方法来解决这个问题。
首先,每当值更改为新值时,布尔变量将交替使用(使用“偏移量”检查上面的单元格),并且对于每次传递,将检查行的True或False并相应地对其进行着色。
答案 6 :(得分:1)
我必须为我的用户做类似的事情,他们希望有一个小变种,他们希望有一个运行编号来分组相似的项目。以为我会在这里分享。
1
放入A2 =IF(B3=B2,A2,A2+1)
=MOD($A1, 2)=1
作为公式
答案 7 :(得分:1)
在MS Excel中,首先将工作簿保存为Macro Enabled文件,然后转到Developper选项卡并单击Visual Basic。将此代码复制并粘贴到&#34; ThisWorkbook&#34; Excel对象。将G =和C =的2个值替换为包含所引用值的列的编号。
在您的情况下,如果列的编号为&#34;文件号&#34;是第一列(即第1列),由G=6
替换G=1
,C=6
替换C-1
。最后点击Macro,选择并运行它。瞧!像魅力一样。
Sub color()
Dim g As Long
Dim c As Integer
Dim colorIt As Boolean
g = 6
c = 6
colorIt = True
Do While Cells(g, c) <> ""
test_value = Cells(g, c)
Do While Cells(g, c) = test_value
If colorIt Then
Cells(g, c).EntireRow.Select
Selection.Interior.ColorIndex = 15
Else
Cells(g, c).EntireRow.Select
Selection.Interior.ColorIndex = x1None
End If
g = g + 1
Loop
colorIt = Not (colorIt)
Loop
End Sub
答案 8 :(得分:1)
至少在这里至少有一个其他贡献者,我也从未喜欢过添加额外的&#34;帮助&#34;专栏,可以在各种情况下造成一些麻烦。我终于找到了解决方案。根据需要和列中的内容,是否有空白值等,您可以使用几种不同的公式。对于我的大多数需求,我已经使用以下简单公式进行条件格式化(CF)式:
=MOD(Fixed(SUMPRODUCT(1/COUNTIF(CurrentRange,CurrentRange))),2)=0
我创建一个名为&#34; CurrentRange&#34;使用以下公式,其中[Sheet]
是您的数据生成的工作表,[DC]
是包含您要为其分配数据的值的列,[FR]
是第一行数据在:
=[Sheet]!$[DC]$[FR]:INDIRECT("$[DC]$" & ROW())
工作表引用和列引用将基于具有您正在评估的值的列。注意:您必须在公式中使用命名范围,因为如果您尝试直接在CF规则公式中使用范围引用,则会引发错误。
基本上,该公式的工作原理是为每一行计算该行及其上方所有唯一值的计数。每行的该值实质上为每个新唯一值提供了升序唯一ID。然后它在标准CF MOD函数公式中使用该值代替Row()函数,用于简单的交替行颜色(即= Mod(Row(),2)= 0)。
请参阅以下示例,该示例分解公式以在列中显示结果组件以显示其在幕后执行的操作。
在此示例中,CurrentRange
命名范围定义为:
=Sheet1$A$2:INDIRECT("$A$" & ROW())
唯一ID列包含CF公式的以下部分:
=Fixed(SUMPRODUCT(1/COUNTIF(CurrentRange,CurrentRange)))
从第3行开始,您可以看到&#34; Color&#34;中该行及以上的唯一值的计数。如果公式最终遇到第3个唯一值,则列为2并且在每个后续行中保持2,直到第6行为止。
Band列使用公式的其余部分引用B列=MOD(B2,2)
中的结果,以显示它如何将您带到可以用于CF的1和0。
最后,重点是,您不需要额外的列。整个公式可以在CF规则+命名范围中使用。对我来说,这意味着我可以将基本公式放在我用来删除数据的模板中,而不必担心一旦数据被丢入就会搞乱额外的列。它只是默认工作。此外,如果您需要考虑空白或其他复杂性或大型数据集,您可以使用频率和匹配函数使用其他更复杂的公式。
希望这可以帮助别人避免多年来的挫败感!
答案 9 :(得分:0)
您可以使用此公式来完成工作 - &gt;通过键入以下内容获取特定行的CellValue: =间接(“$ A&amp; Cell()),具体取决于您需要检查的列,您必须更改 $ A
例如 - &gt;您可以在后台使用自定义的VBA功能:
Public Function IstDatum(Zelle)As Boolean IstDatum =假 如果IsDate(Zelle)那么IstDatum = True 结束功能
我需要它来检查A列中的日期条目:
= IstDatum(INDIREKT( “$ A” &安培; ZEILE()))
答案 10 :(得分:0)
A simpler version of one of the above answers. Column A is the key.
Yes, it needs a helper column. That's column K.
1) Set first cell in table to TRUE (K8)
2) On second row at K9, and to end of table (K99), paste: =IF(A8=A9,K8,NOT(K8))
This gives a pattern of TRUE...TRUE, FALSE...FALSE,...
3) Select key column A1:A99, or whole table A1:K99
4) Set Home/Conditional/New Rule/Formula =K8
5) Format as you wish for the TRUE cells
6) Select the range from (3) and Right-click Format White (or whatever
background color you want) for the FALSE cells
Note that this solution (and the others) have a major flaw, in that this
highlighting doesn't work properly when you have filters active in your
table. I want that fix :)