如何使用列和行设置范围

时间:2015-03-15 02:41:55

标签: excel vba range

尝试使用工作表函数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要求我选择另一个宏。我猜测它是如何设定范围的,但我不知道。

2 个答案:

答案 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)

如果有帮助,请告诉我