我在解决数组问题时遇到了一些麻烦。
我从工作表收集数据并将其存储到数组中。 xData(0)将完成并且不能丢失数据。但是在那里存储的值的xData(1)可能会遗漏一个值,因此我想将空单元格替换为0。我不打算使用for loops
在工作表中添加0,而是考虑使用数组由于我找不到在不降低速度的情况下直接将0添加到工作表的原因。我在15种不同的工作簿中大约有10张纸,因此我需要找到一种更快的方法。
我的代码段如下。
Dim xData(1) As Variant
'Collect the data from the sheets ()
xData(0) = xData(1) = Application.Transpose(Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Value2)
xData(1) = xData(1) = Application.Transpose(Range(Cells(1, 2), Cells(1, 2).End(xlDown)).Value2)
这将产生一个2D数组,但如果任何单元为空(丢失数据),则xData(1)的大小将与xData(0)的大小不同。有没有一种方法可以更改xData(1)的大小以适合xData(0)的大小,然后将0添加到剩余长度。还有其他方法吗,因为如果中间缺少1值,那么以后也可能会引起问题。
答案 0 :(得分:1)
如果您的目标是将容器替换为零,则这是该方法的核心:
说我们在 A 列中的数据是从 A1 到 A1000 的范围内的一些空白。正在运行:
Sub ChangeEmpty2Zero()
Dim rng As Range, rngE As Range
Set rng = Range("A1:A1000")
On Error Resume Next
Set rngE = rng.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not rngE Is Nothing Then rngE = 0
End Sub
将用零填充这些空容器。
注意:
如果列的底部位于UsedRange
之外,则该“底部”将不会更改。
您可以对其进行调整以在所需的任何工作表中的任意范围内运行。