【问题标题】:Ignore formula blanks in range忽略范围内的公式空白
【发布时间】:2017-10-09 12:41:12
【问题描述】:

我需要一种方法将我的范围设置为所有具有值的单元格,但是在我的“空白”单元格中,我实际上有使单元格空白的公式。

我阅读了另一个论坛使用

[match(2,1/(F6:F55<>""))]

作为忽略公式空白的解决方案,但我不知道如何将其合并到我的代码中,因为它正在寻找一个范围。

Sub Macro1()
' Macro1 Macro
     Application.Run "ATPVBAEN.XLAM!Regress", Worksheets("analysis 1").[match(2,1/(F6:F55<>""))], _
        Worksheets("analysis 1").[match(2,1/(F6:F55<>""))], False, False, 90, Worksheets("Regression").Range("$A$1") _
        , False, False, False, False, , False
    Range("K1").Select
End Sub

使用

Range(Range("F6"), Range("F55").End(xlDown)).Select

由于范围内有空格,会给我一个错误。

【问题讨论】:

  • 尝试将xlDown 更改为xlUp
  • 同样的问题,假设我从 F55 开始

标签: excel vba


【解决方案1】:

这是一些解决方法,可以只制作与特定条件相对应的单元格范围:

Option Explicit

Function makeRangeWithoutBlanks(rngInput As Range) As Range

    Dim rngCell As Range

    For Each rngCell In rngInput

        If Len(rngCell) Then
            If makeRangeWithoutBlanks Is Nothing Then
                Set makeRangeWithoutBlanks = rngCell
            Else
                Set makeRangeWithoutBlanks = Union(rngCell, makeRangeWithoutBlanks)
            End If
        End If

    Next rngCell

    If makeRangeWithoutBlanks Is Nothing Then Err.Raise 999, Description:="No value!"

End Function

Public Sub TestMe()

    Dim k As Range
    Set k = makeRangeWithoutBlanks(Range("A1:A100"))
    Debug.Print k.Address

End Sub

运行TestMe 以查看具有A1:A100 值的单元格。

【讨论】:

  • 我无法使用它实现任何目标。一定有更简单的方法吗?
  • 您的意见是什么?它应该可以工作,如果范围内没有值,它会返回一个带有值的范围或错误
【解决方案2】:

我的结论是使用使用 CountIf 值编译的 Offset。 CountIf 将输出我范围内的值的数量。将它与 OffSet 一起使用将有效地选择具有值的范围。

Sub Macro1()
' Macro1 Macro
    Dim n As Range
' D67 is a CountIf in order to find the number I plan to OffSet
    Set n = Worksheets("Data Input & Summary").Range("D67")
     Application.Run "ATPVBAEN.XLAM!Regress", Worksheets("analysis 1").Range(Range("F6"), Range("F6").End(xlDown).Offset(-n)), _
        Worksheets("analysis 1").Range(Range("G6"), Range("G6").End(xlDown).Offset(-n)), False, False, 90, Worksheets("Regression").Range("$A$1") _
        , False, False, False, False, , False
    Range("K1").Select
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    相关资源
    最近更新 更多