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

时间:2013-09-15 17:20:10

标签: excel vba excel-vba

鉴于

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不要。

我已经简化了示例,在实际工作表中会有更多的列和行要检查。

我已经考虑过COUNTIF和INDEX / MATCH以及数组论坛,但据我所知,这些都是一次只对单列进行的。

我想做的事情就像什么时候A1:一个<>“”那么COUNTBLANK(B:E)ELSE COUNTA(C:D)

使用自动过滤器的最佳方法是在A中使用空白然后使用countblank,然后使用第二个自动过滤器获取A中的值。

由于

2 个答案:

答案 0 :(得分: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"))

答案 1 :(得分:0)

降低VBA路线的原因是我想要一个通用的可重复使用的功能,而不是一个公式我在单元格和工作表之间复制更改列等,最后是大量的重复代码。

因此需要使用列进行测试以及使用其进行测试的值。第三个参数是要验证的列范围,第四个参数是验证。

我不希望任何解决方案将列硬编码,并且我不希望在行的末尾有中间总计。这在Excel本身很容易实现......

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

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

=SUMPRODUCT((A2:A19<>"")*(B2:D19=""))
=SUMPRODUCT((A2:A19="")*(D2:D19=""))
=SUMPRODUCT((A2:A19="")*(B2:C19<>""))
好吧,好吧?我现在只需要将其转换为VBA。

由于