VBA根据另一列中的值检查列中的空白单元格

特定

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

我正在寻找VBA代码来validation,当列A包含一个值,其余列也包含值,并且当它不包含值时,列2&5也包含值,但3&4不包含值。

我已经简化了这个例子,在一个真正的工作表中会有更多的列和行来检查。

我已经考虑了COUNTIF和INDEX / MATCH和数组论坛,但是从我理解的这些所有工作在单列上一次。

我想做一些事情,比如当A1:一个<>“”那么COUNTBLANK(B:E)否则COUNTA(C:D)

在A中使用空格使用自动筛选器,然后使用countblank,然后在A中使用第二个自动筛选器是最好的方法。

谢谢

你可以使用几个嵌套的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")) 

走下VBA路线的原因是,我想要一个通用的可重用函数,而不是在单元格和表单之间进行复制的公式。

所以需要一个列进行testing,并用一个值来testing它。 第三个参数是一个要validation的列的范围,第四个参数是validation。

我不希望任何解决scheme,以硬编码的列,我不希望中间总计在行的末尾。 这在Excel本身很容易实现…

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

经过大量的search,我发现了这个(列与原来的例子不匹配)

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

不错吧? 我只需要将其转换成VBA。

谢谢