arrays - 删除数组中的空单元格

标签 arrays excel vba

我在列中粘贴了一个数组,问题是它使列中的一些单元格为空。如何删除列中的那些单元格?

这就是我所拥有的:

Private Sub Worksheet_Change(ByVal Target As Range)

    Worksheets("Info").Range("A1").Select
    Dim i As Integer
    Dim iLastRow As Long
    iLastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
    Dim arrmatrix() As String

     ReDim arrmatrix(1 To iLastRow, 1 To 1)
    For i = 1 To iLastRow
    Range("A2").Cells(i, 1).Select
    If Selection.Offset(0, 11) = "Pi emitida" Then
    arrmatrix(i, 1) = Range("A2").Cells(i, 1).Value
    End If
    Next i
    Worksheets("Inicio").Range("G4:G1000000").ClearContents

    Worksheets("Inicio").Range("G4").Resize(UBound(arrmatrix, 1)).Value =     arrmatrix()

end sub

最佳答案

您的示例代码存在一些问题。

  • 希望这是在 信息 工作表的代码表。您不应该尝试 .Activate Worksheet_Change 中的另一个工作表事件宏。
  • 不清楚为什么您需要在 Worksheet_Change 中使用它。事件宏。照原样,只要添加/修改/删除工作表中任何位置的值,它就会运行。这听起来有点矫枉过正,因为确定结果的仅有两列是 A 列和 L 列。
  • ReDim statement可以与 Preserve 一起使用来扩展数组,但它只能重新调整最后一个等级。

  • 此修改不依赖于在处理它们之前选择或激活工作表。 arrmatrix 数组会根据需要进行扩展,因此您最终不会在数组中得到空白值。
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Range("A:A, L:L")) Is Nothing Then
            On Error GoTo Fìn
            Application.EnableEvents = False
            Dim i As Long, n As Long
            Dim arrmatrix As Variant
            ReDim arrmatrix(1 To 1, 1 To 1)
            For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
                If Cells(i, 12).Value = "Pi emitida" Then
                    n = n + 1
                    ReDim Preserve arrmatrix(1 To 1, 1 To n)
                    arrmatrix(1, n) = Cells(i, 1).Value
                End If
            Next i
            With Worksheets("Inicio")
                .Range("G4:G" & Rows.Count).ClearContents
                .Range("G4").Resize(UBound(arrmatrix, 2), 1) = Application.Transpose(arrmatrix)
            End With
        End If
    
    Fìn:
        Application.EnableEvents = True
    End Sub
    

    这只会在 A 列或 L 列中的值被添加/更改/删除时运行。

    由于我一直在扩展和填充最后一个等级,因此我使用了 Application.Transpose在我将数据塞回 之前重新定向数据初始 工作表。

    关于arrays - 删除数组中的空单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930523/

    相关文章:

    javascript - 如何使用angularjs将html文件转换为字节数组

    javascript - 如果与大小写不匹配,则搜索不会返回数组元素

    c# - 接口(interface)应该使用 IEnumerable<MyObject> 而不是 MyObject[]

    具有大数据的 PhpSpreadsheet

    VBA:如何按定义的名称显示单元格值?

    C++ 数组结构

    excel - 在 excel 中组合两个数字,同时确保第二个数字有两位数

    c# - asp.net 中的 Excel 下载库?

    vba - 使用 VBA 以编程方式删除 Access 宏

    vba - 有没有工具可以跟踪Excel单元格和VBA代码的依赖关系?