我想从一个excel工作簿中计算特定列的非空行,并将其更新为另一个

时间:2017-05-09 11:30:21

标签: excel vba excel-vba

Dim count As Integer
Dim myData As Workbook
Dim col As Range, rng As Range, n#, b#
Set col = Columns(1) 'choose the column to count the values from           
SetmyData=Workbooks.Open("C:\Users\xyz\Desktop\cas\Book3.xlsx")'selecting a workbook'
        Worksheets("sheet1").Select
            Set rng = Intersect(col, ActiveSheet.UsedRange)
            On Error Resume Next
                b = rng.Cells.SpecialCells(xlCellTypeBlanks).count'applying the count function'
                n = rng.Cells.count - b - 1
            On Error GoTo 0
        Worksheets("sheet1").Select
        count = n
        Set myData = Workbooks.Open("C:\Users\xyz\Desktop\cas\Book2.xlsx")'used to update the data in another workbook
        Worksheets("sheet1").Select

我无法选择工作簿来应用计数算法。 运行时错误 - 应用程序定义或对象定义错误

1 个答案:

答案 0 :(得分:1)

下面的代码将为myData工作簿中“sheet1”中的“A”列中的无空单元格计数。

您可以避免所有不必要的Select,这会降低您的代码运行时间。

此外,您可以使用WorksheetFunction.CountA函数计算范围内非空的单元格数。

<强>代码

Option Explicit

Sub CountNonEmptyCells()

Dim MyCount As Long
Dim myData As Workbook    
Dim Rng As Range

Set myData = Workbooks.Open("C:\Users\xyz\Desktop\cas\Book3.xlsx") ' selecting a workbook'
With myData.Worksheets("sheet1")
    Set Rng = Intersect(.Columns(1), .UsedRange)
    MyCount = WorksheetFunction.CountA(Rng)
End With

End Sub