Excel VBA:从另一个工作簿中计数列中的数据并在主工作簿中input计数器

我需要在我的CountResults.xlsm(Master Workbook)中创build一个解决以下问题的macros。 我有另一个工作表中的数据列与是或否。 我需要拿出一个macros来计算列中“是”的数量。 该列位于工作簿Test01.xlsx的工作表Sheet2中。 然后把这个计数,并把它放在我的CountResults.xlsm文件中的一个单元格。 像这样:

是或否

我有一个代码显示在同一张表中列的计数。 但是这个代码不会像在我的图片中那样,在列(空格)有“中断”的情况下计算。 这是代码:

Private Sub CommandButton1_Click() MsgBox Range("A1").End(xlDown).Row Range("A1").End(xlDown).Offset(1, 0).Select End Sub 

我有另一个代码,可以帮助访问另一个工作簿,并为每个工作簿和工作表定义值:

 Dim wbSource As Workbook Dim wbTarget As Workbook Dim shSource As Worksheet Dim shTarget As Worksheet Set wbSource = Workbooks.Open(Filename:="C:\Users\khanr1\Desktop\Test_Excel\Test03.xlsm", ReadOnly:=True) Set wbTarget = ThisWorkbook Set shSource = wbSource.Worksheets("Sheet2") Set shTarget = wbTarget.Worksheets("Sheet1") 

使用COUNTIF 。 即使范围在另一个工作簿中,它也会给你总数。 ie =COUNTIF([Book2.xlsx]Sheet2!$D$2:$D$9, "Yes") 。 在工作表中将COUNTIF作为公式的问题是如果要更新计数,则需要打开其他工作簿。 VBA代码下面会执行一个更新。 将子项分配给CountResults.xlsm工作簿中的button

编辑 :根据OP的要求添加行数

 Sub UpdateResults() Dim oWBWithColumn As Workbook: Set oWBWithColumn = Application.Workbooks.Open("<your Test01.xlsx address here>") Dim oWS As Worksheet: Set oWS = oWBWithColumn.Worksheets("Sheet2") Dim intLastRow as Integer: intLastRow = oWS.Cells(Rows.Count, "B").End(xlUp).Row ThisWorkbook.Worksheets("<name of the sheet in your CountResults.xlsm workbook>").Range("<cell address>").Value = Application.WorksheetFunction.CountIf(oWS.Range("B2:B" & intLastRow), "yes") oWBWithColumn.Close False Set oWS = Nothing Set oWBWithColumn = Nothing End Sub