1

我在 Excel 工作簿中有 2 个字段:

1. MED - 范围(“J13:K13”)

公式:=IF(D5=1,"X","")

2. 非 MED - 范围(“L13:M13”)

公式:=IF(D5=2,"X","")

使用以下代码时,字段始终显示为非空,因此保存值为“1”:

    '1. Med
    If Not IsEmpty(range("J13:K13").value) Then
        Worksheets("FeedSamples").range("AK" & newRow).value = 1
    Else
        Worksheets("FeedSamples").range("AK" & newRow).value = 0
    End If
    '2. Non-Med
    If Not IsEmpty(range("L13:M13").value) Then
        Worksheets("FeedSamples").range("AL" & newRow).value = 1
    Else
        Worksheets("FeedSamples").range("AL" & newRow).value = 0
    End If

我尝试在我的 IF 语句中使用以下内容,但计数始终为“1”:

    '1. Med
    If WorksheetFunction.CountA(range("J13:K13")) = 0 Then

有人有想法么?如果该字段的值(或长度计数为 1)有一个“X”,那么我需要在我的另一个工作表中保存“1”。如果该字段为空(或长度计数为 0),那么我需要在我的其他工作表中保存“0”。

我不知道为什么我对 IsEmpty() 的检查无法正常工作。

4

1 回答 1

5

我认为您不能IsEmpty在一系列单元格上使用。我可以复制这种行为,只要我传递了 2+ 个单元格的范围,IsEmpty函数就会返回False.

尝试使用If Application.WorksheetFunction.CountA(Range("J13:K13")) = 0

这将检查范围内是否存在任何值,并且0仅当所有单元格不包含值(范围为空)时才返回值,否则将返回非零值,表示范围不为空。

修订

该范围内是否存在公式,即使是返回空字符串 ( "") 值的公式也会被COUNTA函数计算在内。

您也许可以使用以下COUNTIF功能:

If Application.WorksheetFunction.CountIF(Range("J13:K13"),"") = Range("J13:K13").Cells.Count

这将避免计算返回空字符串的公式。

此语句评估True当且仅当所有单元格都是空白/空字符串值。

于 2013-07-09T15:17:54.870 回答