我有一小段代码,可以为零值过滤一列并返回行数。 我试图循环遍历不同的列。此宏在较小的输入下效果很好。 但是我有一个具有160106行的Excel工作表。 我想在此运行我的宏。 我遇到了运行1004错误。我找到了以下链接,该链接解释了该问题, 网址为http://support.microsoft.com/kb/210684

但是我无法解决它。 谁能帮我。 我在下面粘贴我的宏

我的样本文件位于http://rapidshare.com/files/457005707/data1.xlsx,它是一个96mb的文件

Option Explicit
Sub findrcn()
Dim wsStart As Worksheet
Dim sWord As String
Dim RowCount As Integer
Dim i As Long
Dim j As Long
Dim l As Long
Dim k As String
Dim Final As Integer
Dim lastrow As Integer
Dim rng As Range
Dim oBook As Workbook





Set wsStart = ActiveSheet
'this loop is to check if a sheet exists
    For j = 1 To Worksheets.Count
    k = Worksheets(j).Name
    If UCase(k) = UCase("Analysis") Then
        lastrow = ((Sheets("Analysis").Range("A" & Rows.Count).End(xlUp).Row) + 1)
    Else
        lastrow = 0
    End If

    Next j
    MsgBox "finished checking the sheets"
i = 1
For Each rng In Range("A1:B1").Columns
        sWord = Replace(rng.Address(RowAbsolute:=False), "$", "")   ''Now I am trying to loop over all the columns

    If lastrow = 0 Then
            Sheets.Add After:=Sheets(Sheets.Count) 'Adding a new sheet
            Sheets(Sheets.Count).Name = "Analysis"
            wsStart.AutoFilterMode = False

                With wsStart
                    .Range(sWord).AutoFilter Field:=i, Criteria1:="=0" 'if my column contains a 0 in it filter that

                        With .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible)
                        Final = .Count 'get the count of the number of rows after the filter
                        RowCount = Final - 1
                        End With

                       Sheets("Analysis").Range("A") = RowCount 'paste it in the analysis tab
                       Sheets("Analysis").Range("B") = (Range(sWord))

                End With
                wsStart.AutoFilterMode = False
                MsgBox "Trust in the Lord with all your heart and lean not on your own understanding; In all your ways acknowledge Him, and He will make your paths straight." & vbCrLf & "Proverbs 3:5" & vbCrLf & "                        SUCCESSFULLY     COMPLETED!!!"

    Else

        wsStart.AutoFilterMode = False

                lastrow = ((Sheets("Analysis").Range("A" & Rows.Count).End(xlUp).Row) + 1)
                With wsStart
                    .Range(sWord).AutoFilter Field:=i, Criteria1:="=0" 'if my column contains a 0 in it filter that
                        With .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible)
                        Final = .Count
                        RowCount = Final - 1 ' to account for column name
                        End With

                       Sheets("Analysis").Range("A" & lastrow) = RowCount 'paste it in the analysis tab
                       Sheets("Analysis").Range("B" & lastrow) = (Range(sWord))

                End With
                wsStart.AutoFilterMode = False


    End If
i = i + 1
Next rng

#1楼 票数:0

尽管该知识库文章讨论的是复制工作表,而您正在复制单元格,但是您可以遵循其建议并定期保存和关闭工作表。

#2楼 票数:0

乍一看,似乎有一个简单得多的解决方案:使用CountIf函数

例如,假设您的数据在Sheet2上,则在分析表上的单元格中=COUNTIF(Sheet2!A:A,0)
这给出了列A中单元格的计数= 0

如果出于其他原因在VBA中需要此功能,则可以使用类似

Set r = ActiveSheet.Columns("A:A")
z = Application.WorksheetFunction.CountIf(r, "0")

  ask by LGG translate from so

未解决问题?本站智能推荐:

1回复

VBA宏上的运行时错误

我正在使用VBA代码从Outlook电子邮件中获取文本并将其放置在我设置的Excel工作表中。 我正在使用Excel2010。我的电子邮件包含以下信息: 公司:ABC公司 上课时间:2013-10-29至2014-10-22 我已经设置了一个For With循环来浏览电子邮件,
1回复

Excel宏运行时错误

我试图运行一个非常简单的宏,该宏从工作簿中删除许多列,但是运行它时,出现错误运行时错误“ 1004”:应用程序定义的错误或对象定义的错误。 这很奇怪,因为我从另一个宏复制并粘贴了这一行确切的代码,并且该代码行得很好。 作为excel工作表的补充说明,我插入了一个按钮,以在需要时设置
2回复

运行宏时运行时错误1004

我试图获取一个宏以循环通过Excel文档中的工作表。 我以前从未使用过VisualBasic,所以自然而然地碰壁了。 这是我正在调用的代码。 当我一次在每个工作表中运行它时,它是可以独立运行的,但这会花费很长时间。 因此,为什么我要使上面的循环起作用。
2回复

运行宏时出现未知的运行时错误

我需要一种计划自动打开Excel文件,刷新内容然后保存并关闭它的方法。 我之前已经做过,但是我无法再打开文件,因为打开它会导致宏刷新,然后保存并关闭文件以运行。 在尝试了几种方法后,我考虑了VBScript。 我在这里找到了这段代码。 VBScript代码将打开Excel文
1回复

VBA宏返回运行时错误“ 5”

因此,我一直在思考我写的这个愚蠢的小东西,用于更新大型工作表(将其修剪以进行测试)已经有一段时间了,但是我看不出我在哪里犯了错误。 它似乎在第6行中断,但我不确定为什么。 仅供参考,如果我将表中的标头替换为特定的日期,并将DateDiff替换为Format,它似乎可以很好地工作(实际上在
3回复

Excel宏“运行时错误'1004”

我是脚本新手,我正在尝试改进现有的宏。 我录制了一个宏来删除dupliate并将其添加到Main函数中,该函数调用其他函数,但是当我添加我记录的宏时出现此错误:运行时错误'1004':应用程序定义的或对象定义的错误。 代码看起来像 谢谢,Kiran
1回复

Excel宏:运行时错误1004

我正在制作一个Excel宏,但是在这段代码上不断出现运行时错误1004 :。
3回复

运行时错误“ 13”:宏中的类型不匹配

我已经录制了一个宏来创建数据透视图。 数据源被定义为变量,因为数据一直在变化。 该宏运行较少的行(最多20行)运行良好。 但是随着数据增加到20号以上。 行,宏显示一个 运行时错误13:类型不匹配。 代码如下。 突出显示的部分显示错误 请有人帮我解决错误。