【发布时间】:2013-09-15 17:20:10
【问题描述】:
给定
O 1 2 3 A
A 4 5 6 B
B 7 8 9 D
O 3
C 15
T 18
我正在寻找 VBA 代码来验证当 A 列包含一个值时,其余列也包含值,而当它不包含值时,第 2 列和第 5 列也包含值,但第 3 列和第 4 列不包含值t.
我已经简化了这个例子,在一个真实的工作表中会有更多的列和行需要检查。
我考虑过 COUNTIF 和 INDEX/MATCH 以及数组论坛,但据我了解,这些都一次只在单个列上工作。
我想做类似 WHEN A1:An"" THEN COUNTBLANK(B:E) ELSE COUNTA (C:D)
使用自动过滤器的最佳方式是在 A 中使用空格,然后使用 countblank,然后对 A 中的值使用第二个自动过滤器。
谢谢
【问题讨论】:
-
你真的不需要 vba。尝试将
=IF(LEN(A1)>0,COUNTA(B1:E1)=4,AND(COUNTA(B1,E1)=2,COUNTA(C1:D1)=0))复制到每一行。如果行有效则返回 true,否则返回 false。 -
或者对于一个告诉您是否有任何行未验证的一次性公式,然后尝试
=(COUNTIFS(A1:A4,"",B1:B4,"<>",E1:E4,"<>",C1:C4,"",D1:D4,"")+COUNTIFS(A1:A4,"<>",B1:B4,"<>",C1:C4,"<>",D1:D4,"<>",E1:E4,"<>"))=ROWS(A1:A4)