尝试使用工作表函数COUNTIF
进行范围设置。这就是我所拥有的:
Function count_if(work_sheet As String, criteria As String, column_num As Integer)
Dim rows As Integer
rows = Get_Rows_Generic(work_sheet, 1) ' get the number of rows in another sheet
Dim full_range As Range
With work_sheet
Set full_range = .Range(.Cells(0, rows), .Cells(0, column_num))
End With
count_result = WorksheetFunction.CountIf(full_range, criteria)
count_if = range_size
End Function
Sub test_stuff()
Dim n As Integer
n = count_if("usersFullOutput.csv", "TRUE", 9)
MsgBox n
End Sub
当我运行代码时,excel要求我选择另一个宏。我猜测它是如何设定范围的,但我不知道。
答案 0 :(得分:2)
第1点
IF" usersFullOutput.csv"实际上是您的工作表的名称(不是文件名),使用此名称您无法执行此操作:
With work_sheet
Set full_range = .Range(...)
End With
范围是工作表对象的属性,而不是工作表名称 string 。试着这样做:
With Worksheets(work_sheet)
Set full_range = .Range(...)
End With
第2点
Set full_range = .Range(.Cells(0, rows), .Cells(0, column_num))
Cells()
的第一个参数是行号。行号永远不能是0
。 Excel中的第一行始终为1
。 A1将由Cells(1, 1)
引用。也许你需要像
Set full_range = .Range(.Cells(1, 1), .Cells(rows, column_num))
第3点
未定义 range_size
(行count_if = range_size
)。
我认为你需要
count_if = count_result
答案 1 :(得分:0)
你走在正确的轨道上,但语法有点不对劲。您需要使用row_index和col_index设置起始单元格和结束单元格,例如:
Set full_range = .Range(.Cells(1,1), .Cells(rows, column_num)
如果有帮助,请告诉我