在excel范围中-忽略空单元格
我正在使用excel范围连接:在excel范围中-忽略空单元格,excel,vba,Excel,Vba,我正在使用excel范围连接: 设置rng=范围(“A1:A8”) 如果区域中的一个单元格为空,则会添加一个空格 如何阻止添加此空格?假设这些非空单元格中有常量: Set rng = Range("A1:A8").SpecialCells(2) 不幸的是,非连续范围使我们无法将rng放入数组或在Join操作中使用它。您必须循环范围内的每个单元格 但是,我会使用Application.Trim而不是设置范围。这样,我们可以通过内存(数组)而不是更缓慢的范围对象引用: Sub Test() Di
设置rng=范围(“A1:A8”)
如果区域中的一个单元格为空,则会添加一个空格
如何阻止添加此空格?假设这些非空单元格中有常量:
Set rng = Range("A1:A8").SpecialCells(2)
不幸的是,非连续范围使我们无法将rng
放入数组或在Join
操作中使用它。您必须循环范围内的每个单元格
但是,我会使用Application.Trim
而不是设置范围。这样,我们可以通过内存(数组)而不是更缓慢的范围
对象引用:
Sub Test()
Dim arr As Variant: arr = [TRANSPOSE(A1:A8)]
Debug.Print Application.Trim(Join(arr, " "))
End Sub
或者,如果您不想利用。请评估:
Sub Test()
Dim arr As Variant: arr = Range("A1:A8")
With Application
Debug.Print .Trim(Join(.Transpose(.Index(arr, 0, 1)), " "))
End With
End Sub
注意-1:我们需要转置
来返回1D数组,以便能够在连接中使用
注意-2:如果一个人已经访问了TEXTJOIN
函数,则不需要所有这些,但您可以在数组形式中使用该函数。如果您要连接范围,则简单的循环可能会有所帮助:
Dim rng As range, cell As range
For Each cell In range("A1:A8") ' looking through the desired range
If Not cell = "" Then ' if the cell is not empty we have to add it to range
If Not rng Is Nothing Then ' if the range already has some cells in it
Set rng = Union(rng, cell) ' we have to add the cell to an existing range
Else ' if the range does not yet exists
Set rng = cell ' create it and add the first cell
End If
End If
Next
你能发布你的全部代码吗?这是一种非常迂回的描述特殊单元格的方法(是的:)但是无论如何,它是有效的,它很简单,人们可以添加任何条件来过滤所需的单元格。