Игнорировать пробелы формулы в диапазоне

Мне нужен способ установить диапазон для всех ячеек со значениями, однако в моих «пустых» ячейках у меня действительно есть формулы, которые делают ячейку пустой.

Я прочитал другой форум, который использовал

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

Как решение игнорировать формулу Blanks, но я не вижу, как включить это в свой код, поскольку он ищет диапазон.

 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 

даст мне ошибку из-за наличия пробелов в диапазоне.

Это – некоторое обходное решение, чтобы сделать диапазон только ячеек, которые соответствуют определенному условию:

 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 .

То, что я сделал, заключается в использовании смещения, скомпилированного с использованием значения 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 
Давайте будем гением компьютера.