在值等于 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 中的 VLOOKUP 问题,#Value

EXCEL 值在前面条件在后的函数引用

Google 表格 - 返回包含特定文本的单元格的列号

vlookup函数基本使用--如何将两个Excel表中的数据匹配;excel表中vlookup函数使用方法将一表引到另一表

Power Query 中的索引匹配或 Vlookup