【问题标题】:VBA: Excel range always coming up as Empty?VBA:Excel 范围总是显示为空?
【发布时间】:2013-07-09 23:44:52
【问题描述】:

我在 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() 的检查无法正常工作。

【问题讨论】:

    标签: function vba excel excel-2007


    【解决方案1】:

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

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

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

    修订

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

    你或许可以使用COUNTIF函数:

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

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

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

    【讨论】:

    • 你总是在这些答案上打败我
    • @chancea 我现在应该回去工作了 :) 我会让你有几个!
    • 这很奇怪。我已经分别检查了J13K13 的值(显示为空),但是当我运行CountA(Range("J13:K13")) 时,值总是显示为“1”。 ://
    • @AnalyticLunatic 这意味着在该范围内的某处有一个值
    • 最后一段代码很重要。我们要检查的是包含空白/空字符串值的单元格数是否等于该范围内的单元格数。这近似于IsEmpty
    猜你喜欢
    • 1970-01-01
    • 2012-12-06
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多