繁体   English   中英

比较 Excel 表中的两列

[英]Compare two columns in a table in Excel

有没有办法比较动态表中长度不同的列并突出显示不匹配的列?

我需要检查 B 列中的值是否在 A 列的某处匹配,如果没有,则突出显示该单元格,但如果单元格为空,我不想突出显示它。 我还需要一个变量,如果 B 列(除了空单元格)中的所有值在 A 列中都匹配以触发如下所示的刷新,则该变量变为 True:

Private Sub Worksheet_Change(ByVal Target As Range)

   ThisWorkbook.RefreshAll

End Sub

考库姆斯

提前致谢!

编辑:

我现在已经尝试过了,我很接近,但它与我想要的完全相反,代码突出显示了 B 中存在于 A 中的单元格。我不知道如何更改它。 我试图反转 function。

Sub CompareAndHighlight()

    Dim rng1 As Range, rng2 As Range, i As Long, j As Long
    For i = 1 To Sheets("Mätplan").Range("A" & Rows.Count).End(xlUp).Row
        Set rng1 = Sheets("Mätplan").Range("A" & i)
            For j = 1 To Sheets("Mätplan").Range("B" & Rows.Count).End(xlUp).Row
                Set rng2 = Sheets("Mätplan").Range("B" & j)
                If (StrComp(Trim(rng1.Text), Trim(rng2.Text), vbTextCompare) = 0) Then
                   rng2.Interior.Color = RGB(255, 255, 0)
                   'rng2.Interior.ColorIndex = xlNone
                Else
                   'rng2.Interior.Color = RGB(255, 255, 0)
                   'rng2.Interior.ColorIndex = xlNone
                End If
                Set rng2 = Nothing
            Next j
        Set rng1 = Nothing
    Next i

End Sub

使用条件格式突出显示匹配项:

=IFERROR(IF(AND(LEN(B2)>0,(MATCH(B2, A$2:A$1000, 0)>0)),TRUE),FALSE)

使用条件格式突出显示失败的匹配:

=IFERROR(IF(LEN(B2)>0,IF(MATCH(B2,$A$2:$A$1000,0)>0,FALSE),FALSE),TRUE)

应用于范围: =$B$2:$B$1000并分配您希望单元格在值为TRUE时显示的格式

请注意使用美元符号来指定值是否为绝对值。

如果空格存在问题,您可能还需要添加 TRIM function。

对于第二部分,function 应该可以工作:

=IF(SUMPRODUCT(COUNTIF(B2:B1000,A2:A1000))+COUNTBLANK(B2:B1000)=ROWS(A2:A1000),TRUE,FALSE)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM