仅将VBA宏应用于已过滤的单元格

时间:2017-06-05 15:24:44

标签: excel vba excel-vba

有点问题。审计人员要求我们整个分类帐的整个Excel转储,这是大规模的(为什么?他们为什么要这样?)。它。最终设法通过几个工作簿为我导出它,但似乎有些行是重复的。似乎没有关于哪些模式的模式。我有一些代码可以删除完全重复的行,但是每个电子表格都非常庞大,我无法在整个数据集上运行它。

我已经确定了受影响的分类账,虽然我可以过滤然后将代码应用于这些代码。它仍然需要很长时间,但不会像通过眼睛'通过搜索所有这些一样年龄。会。

是否有办法将代码应用于我已过滤的单元格?我已经尝试过SpecialCells(xlCellTypeVisible),但我认为我将它添加到错误的位置,因为我的宏仍在搜索整个工作簿。

我添加SpecialCells之前的原始代码如下:

Dim ColN As Long
Dim MyS As Worksheet: Set MyS = ActiveSheet
Dim MyR As Range: Set MyR = MyS.Cells(1, 1).CurrentRegion
Dim NumCol As Long: NumCol = MyR.Columns.Count
Dim MyArray As Variant: ReDim MyArray(0 To NumCol - 1)


For ColN = 1 To NumCol
    MyArray(ColN - 1) = ColN
Next
MyR.RemoveDuplicates Columns:=(MyArray), Header:=xlYes
Dim rowcount As Long, i As Long, j As Long, k As Boolean
rowcount = MyR.Rows.Count
For i = rowcount To 1 Step -1
    k = 0
    For j = 1 To NumCol
        If MyR.Value2(i, j) <> "" Then
            k = 1
            Exit For
        End If
    Next j
    If k = 0 Then
        MyR.Rows(i).Delete Shift:=xlUp
    End If
Next I
Application.ScreenUpdating = True

非常感谢。

1 个答案:

答案 0 :(得分:1)

For i = rowcount To 1 Step -1 
    k = 0 
      For j = 1 To NumCol 
        If MyR.Value2(i, j) <> ""  and Rows(I, j).Hidden = false Then 

我在打电话,所以我无法测试。