2017-10-09 113 views
0

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

我读另一个论坛,使用

[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 

会给我一个错误,由于具有范围空白吧。

+0

尝试改变'xlDown'到'xlUp' –

+0

同样的问题,假设我开始在F55 –

回答

0

这是一些解决方法,以使一个范围仅细胞,被对应于特定条件的:

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

+0

我不能以此来实现什么。必须有一个更简单的方法? –

+0

你的意见是什么?它应该工作,如果范围中没有值,它将返回一个带有值或错误的范围 – Vityata

0

我得出的结论是使用一个用CountIf值编译的偏移量。 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