我正在编写一些代码来从测试结果文件中提取数据,并将数据汇总到excel文件中有意义的位中,因为每个最终都能查看数据的人都表现出色。
我将数据列在文件中的表格中,其中A到M是数据,U到AB是汇总表。 B列保存了格式为YYMM
的测试年份和月份,而L列保存测试是否通过或未通过" PASS"或"失败"我正在尝试执行下面的代码,我使用dateitem
,在下面的示例中是2017年1月,作为表示列B的范围的标准并使用" F *"作为表示列L的范围的标准
Imports Microsoft.Office.Interop.Excel
Dim xlapp As Application = New Application()
Dim xlworkbook As Workbook
Dim xlworksheet As Worksheet
dim last_row as integer
with xlworksheet
last_row = .Cells(.Rows.Count, "A").End(XlDirection.xlUp).row
Dim year_month_range As Range
Dim pf_range As Range
year_month_range = .Range(.Cells(2, 2), .Cells(last_row, 2))
pf_range = .Range(.Cells(2, 2), .Cells(last_row, 12))
Dim dateitem as integer
dateitem = 1701
.Cells(j, 27) = xlapp.WorksheetFunction.CountIfs(year_month_range, dateitem, pf_range, "F*")
end with
它抛出了一种模棱两可的例外:
未处理的类型' System.Runtime.InteropServices.COMException'发生在mscorlib.dll中附加信息:WorksheetFunction类的CountIfs方法失败*
我正在使用此数据并在我尝试使用countifs()
之上和之下成功使用其他工作表函数,因此我知道工作簿和工作表已正确声明和初始化。我担心在countifs()
答案 0 :(得分:1)
每个附加范围必须具有相同的行数和列数 criteria_range1参数。范围不必相邻 彼此。
变化:
pf_range = .Range(.Cells(2, 2), .Cells(last_row, 12))
为:
pf_range = .Range(.Cells(2, 12), .Cells(last_row, 12))