在值等于 Yes 的工作表中使用 VLOOKUP 进行条件格式设置
Posted
技术标签:
【中文标题】在值等于 Yes 的工作表中使用 VLOOKUP 进行条件格式设置【英文标题】:Conditional formatting with VLOOKUP across sheets where value equals Yes 【发布时间】:2018-11-23 03:42:53 【问题描述】:我正在尝试根据不同工作表中的表格突出显示一些单元格。
我在表格 1 上的单元格 A1、A2、A3 等中有一行名称。 在工作表 2 上,我有一个表,其中有一列 (A) 的名称相同,另一列 (B) 的值为“是”或“否”。
如果工作表 2 上等效名称旁边的值旁边有一个是,我正在尝试让工作表 1 上的名称突出显示。
我试过了:
=VLOOKUP(A$1,'Sheet2'!$A$1:$B$26,2,0)="Yes"
但由于某种原因它不喜欢它。没有错误,只是不起作用。 任何想法都会很有帮助!
感谢您的宝贵时间!
【问题讨论】:
【参考方案1】:在条件格式 > 新规则 > 使用公式确定...中试试这个:
=VLOOKUP($A1,'Sheet2'!$A$1:$B$26,2,0)="Yes"
然后下拉以仅复制格式或更改条件格式菜单中的“适用于”。
问题是您修复了行,而不是列。
【讨论】:
【参考方案2】:您不能根据公式突出显示单元格。 (从技术上讲,您可以创建一个带有隐藏列的规则,但仍然......)。
使用 vba 可能更容易做到这一点
Private Sub highlight_names()
Dim ws As Worksheet: Set ws1 = Sheets("Sheet1")
Dim ws2 As Worksheet: Set ws2 = Sheets("Sheet2")
Dim lr As Long, lr2 As Long
lr = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
lr2 = ws2.Cells(ws2.Rows.Count, 1).End(xlUp).Row
Dim rng As Range: Set rng = ws.Range(Cells(1, 1), Cells(lr, 1))
Dim rng2 As Range: Set rng2 = ws2.Range(Cells(1, 1), Cells(lr2, 1))
For Each cell In rng
For Each Name In rng2
If (cell = Name And Name.Offset(0, 1) = "Yes") Then
cell.Interior.Color = vbYellow
End If
Next Name
Next cell
End Sub
【讨论】:
你绝对可以用一个公式来做到这一点。 条件格式 > 新规则 > 使用公式确定要格式化的单元格 如果可以的话,我宁愿不使用 VBA。我制作这张表格的人可能会移动单元格,我不太明白它是如何引用它们的。我很确定您可以像 urdearboy 所说的那样使用条件格式的公式,但我的显然不起作用。有没有人对基于公式的方法提出建议,或者有人可以解释上面的 vba 是如何工作的?谢谢。 @udearboy 好吧,我想我应该更好地措辞自己。我的意思是说不可能通过直接公式突出显示单元格(但是我确实提到过可以通过规则来突出显示)。虽然是的,但现在我想起来了,在这种情况下,它实际上可能是使用条件格式的更好选择。以上是关于在值等于 Yes 的工作表中使用 VLOOKUP 进行条件格式设置的主要内容,如果未能解决你的问题,请参考以下文章
vlookup函数基本使用--如何将两个Excel表中的数据匹配;excel表中vlookup函数使用方法将一表引到另一表