Excel 宏通过验证或比较不同工作表中的单元格值来为单元格着色

问题描述 投票:0回答:1

此数据基本上可以识别正确的选择(A、B、C D)

我有两张表(Sheet1 和 Sheet2)中的数据如下。我需要比较或验证两个工作表中的单元格值,如果根据条件这些值相同,则为 Sheet1 中的单元格着色。条件是,在Sheet2中,获取A1(即1)的单元格值,然后获取单元格A1、B1(即A)旁边的相邻单元格值。现在,如果 1=A,则在 Sheet1 中,在 colA 中查找 1 和 A,然后为值为 A 的单元格着色。对sheet2 中的所有单元格值同样重复。

如下所示数据,基于Sheet2,1=B,2=D,3=C。然后在 Sheet1 的 ColC 中,对于 1,单元格值 B 必须用绿色着色,对于 2,单元格值 D 必须用绿色着色,对于 3,单元格值 C 必须用绿色着色,

数据如下图:

Sheet1    Sheet2
ColC      ColA  ColB
1         1     B
A         2     D
B         3     C
C
D

2
A
B
C
D

3
A
B
C
D
excel vba
1个回答
0
投票

是否需要是VBA,还是条件格式就足够了?

基本上,您的问题有 2 个步骤:“获取此单元格上方的第一个数字”,然后……执行

VLOOKUP
。相反的顺序:

要检查值是否匹配,只需执行

=IFERROR(A1=VLOOKUP(some_value, Sheet2!$A:$B, 2, FALSE), FALSE)

现在您需要做的就是弄清楚

some_value
应该是什么。对于that,我建议查看上面的所有单元格(包括其本身),并取值为数字的最大行:

MAX(Row(A$1:A1)*--ISNUMBER(A$1:A1))

(请注意,非常重要的是,每个范围中的 second

A1
not
$
符号 - 这意味着“从当前列的顶部,向下到当前单元格)

然后,您想要获取值(而不是行),因此使用

INDEX
:

INDEX($A:$A, MAX(Row(A$1:A1)*--ISNUMBER(A$1:A1)))

并将其插入您的

VLOOKUP

=IFERROR(A1=VLOOKUP(Index(A:A, MAX(Row(A$1:A1)*--ISNUMBER(A$1:A1))), Sheet2!$A:$B, 2, FALSE), FALSE)

这将为您提供

TRUE
FALSE
结果,用作条件格式公式!

© www.soinside.com 2019 - 2024. All rights reserved.