Excel VBA: 从另一个工作簿中统计列中的数据并在主工作簿中输入计数器
Excel VBA: Counting Data in Column from Another Workbook and Inputting Counter in Master Workbook
我需要在 CountResults.xlsm(主工作簿)中创建一个宏来解决以下问题。我在另一项工作中有一列数据 sheet 是或否。我需要想出一个宏来计算列中 "YES" 的数量。该列位于工作簿 Test01.xlsx 的 Sheet2 中。然后计算该计数并将其放入我的 CountResults.xlsm 文件中的一个单元格中。像这样:
我有一个代码可以显示同一 sheet 中列的计数。但是当列(空格)中有 'breaks' 时,此代码不算数,就像我在图片中那样。这是代码:
Private Sub CommandButton1_Click()
MsgBox Range("A1").End(xlDown).Row
Range("A1").End(xlDown).Offset(1, 0).Select
End Sub
我有另一个代码可以帮助访问另一个工作簿并为每个工作簿和工作定义值sheet:
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
。即使范围在另一个工作簿中,它也会为您提供总数。即 =COUNTIF([Book2.xlsx]Sheet2!$D:$D, "Yes")
。在 sheet 中使用 COUNTIF
作为公式的问题在于,如果您希望更新计数,则需要打开其他工作簿。 VBA 下面的代码将为您执行更新。将 sub 分配给 CountResults.xlsm
工作簿中的按钮
编辑:根据 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
我需要在 CountResults.xlsm(主工作簿)中创建一个宏来解决以下问题。我在另一项工作中有一列数据 sheet 是或否。我需要想出一个宏来计算列中 "YES" 的数量。该列位于工作簿 Test01.xlsx 的 Sheet2 中。然后计算该计数并将其放入我的 CountResults.xlsm 文件中的一个单元格中。像这样:
我有一个代码可以显示同一 sheet 中列的计数。但是当列(空格)中有 'breaks' 时,此代码不算数,就像我在图片中那样。这是代码:
Private Sub CommandButton1_Click()
MsgBox Range("A1").End(xlDown).Row
Range("A1").End(xlDown).Offset(1, 0).Select
End Sub
我有另一个代码可以帮助访问另一个工作簿并为每个工作簿和工作定义值sheet:
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
。即使范围在另一个工作簿中,它也会为您提供总数。即 =COUNTIF([Book2.xlsx]Sheet2!$D:$D, "Yes")
。在 sheet 中使用 COUNTIF
作为公式的问题在于,如果您希望更新计数,则需要打开其他工作簿。 VBA 下面的代码将为您执行更新。将 sub 分配给 CountResults.xlsm
工作簿中的按钮
编辑:根据 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