2017-10-09 145 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