代码之家  ›  专栏  ›  技术社区  ›  Fredrik

vba防止工作表或数组中的空单元格/数据

  •  1
  • Fredrik  · 技术社区  · 6 年前

    我在解决阵列问题时遇到了一些麻烦。 我从一张工作表中收集数据并将其存储到一个数组中。扩展数据(0)将完成,不能错过数据。但是这里的扩展数据(1)存储的值可能会丢失一个值,所以我想用0替换空单元格。而不是使用 for loops 为了将0添加到工作表中,我考虑使用数组,因为我找不到一种方法可以在不降低速度的情况下直接将0添加到工作表中。我有大约10张纸,15个不同的工作簿,因此我需要找到一个更快的方法来做到这一点。

    我的代码段如下。

    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)
    

    这将生成一个二维数组,但如果任何单元格为空(缺少数据),则扩展数据(1)的大小将与扩展数据(0)的大小不同。是否有方法更改扩展数据(1)的大小以适合扩展数据(0)的大小,然后将0添加到剩余长度。是否有其他的方式,因为这可能会导致后来的问题,因为如果1的价值在中间丢失。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gary's Student    6 年前

    • 避免循环

    假设列中有数据 通过 在那个范围内有一些空的。正在运行:

    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
    您可以对其进行调整,以便在需要的工作表中的任何范围内运行。