1

Given

O    1    2    3   A
A    4    5    6   B
B    7    8    9   D
     O             3
     C            15
     T            18

I'm looking for VBA code to validate that when column A contains a value that the remaining columns also contain values and when it doesn't contain a value, that columns 2 & 5 also contain values but 3 & 4 don't.

I've simplified the example, in a real sheet there will be many more columns and rows to check.

I've considered COUNTIF and INDEX/MATCH and array forumlas but from my understanding these all work on single columns at a time.

I want to do something like WHEN A1:An<>"" THEN COUNTBLANK(B:E) ELSE COUNTA (C:D)

Is the best way to use autofilter using blanks in A and then countblank and then a second autofilter for values in A.

Thanks

4

2 回答 2

0

您可以使用几个嵌套的 IF 公式来做到这一点,如下所示:

=IF(A1<>"",
    "A not empty, "&IF(COUNTBLANK(B1:E1)=0,
                       "B:E not blank",
                       "B:E have blanks"),
    "A blank, "&IF(AND(COUNTBLANK(B1)+COUNTBLANK(E1)=0,
                       COUNTBLANK(C1)+COUNTBLANK(D1)=2),
                   "Columns 2&5 have values and Columns 3&4 don't",
                   "but condition not met"))
于 2013-09-15T17:43:13.770 回答
0

走 VBA 路线的原因是我想要一个通用的可重用函数,而不是我在单元格和工作表之间复制的公式,沿途更改列等,最终导致大量重复代码。

所以需要一个列来测试和一个值来测试它。第三个参数是要验证的列范围,第四个参数是验证。

我不希望任何解决方案对列进行硬编码,也不希望在行尾出现中间总计。这在 Excel 本身中很容易实现......

尝试使用 countblank 的原因是我可以将它应用于一个范围。

经过大量搜索后,我发现了这一点(列与原始示例不匹配)

=SUMPRODUCT((A2:A19<>"")*(B2:D19=""))
=SUMPRODUCT((A2:A19="")*(D2:D19=""))
=SUMPRODUCT((A2:A19="")*(B2:C19<>""))

不错吧?我现在只需要将其转换为 VBA。

谢谢

于 2013-09-15T19:01:21.213 回答