我在 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() 的检查无法正常运行。
最佳答案
我不认为你可以使用 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
当且仅当所有单元格都是空白/空字符串值。
关于function - VBA:Excel 范围总是显示为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17551817/