我正在尝试在工作簿A中创建列E,显示管理员在工作簿B中在给定月份提交的报告数。我想使用COUNTA公式计算A列中非空单元格的数量工作簿B,相当于提交报告的数量。但是,有多个经理,每个经理在工作簿B中都有自己的工作表。例如,经理John Smith在工作簿B中将提交的报告记录在名为“Smith”的工作表上。工作簿B中工作表的名称位于工作簿A的单元格Q3中。我尝试使用以下代码进行此操作:
=COUNTA((('[Workbook B.xlsx]' & 'INDIRECT(Q3,FALSE)' & '!$A$2')),('[Workbook B.xlsx]' & 'INDIRECT(Q3,FALSE)' & '!$A$500))
理想情况下,此代码将计算工作簿B中A2:A500中的非空单元格,并在工作簿A中显示该数字。
答案 0 :(得分:0)
试着为此制作一个宏。它可能不完美,但希望它会给你一个很好的起点。
Sub count()
Dim cnt As Integer
Dim rng As Integer
Dim index As Integer
Dim shtName As String
shtName = Range("Q3").Value
Workbooks.Open ("C:\Path\to\WorkbookB.xlsx")
ActiveWorkbook.Sheets(shtName).Select
rng = ActiveSheet.UsedRange.Rows.count
For index = 1 To rng
If Range("A" & rng).Text <> "" Then
cnt = cnt + 1
End If
Next
ActiveWorkbook.Close False
ActiveWorkbook.Sheets("Sheet1").Activate
Range("E1").Value = cnt
End Sub
答案 1 :(得分:0)
我设法通过稍微改变您的代码来完成这项工作。间接(Q3)给了我一个#ref错误,所以我在COUNTA之后用另一个间接做了Q3并且它工作了。
=COUNTA(INDIRECT("'"&"[Workbook B.xlsx]"&Q3&"'!$A$1:$A$500"))