我有这张工作表。
在另一个工作表的激活事件中,我想要检索指定年份和星期的所有行。
在 VBA 中,我能够获取所需的工作表。如何调用索引函数来检索给定年份和星期的所有行?
我必须在新的工作表上打印这些行的列。
我在工作簿中调用了 INDEX 函数,如下所示:
=IFERROR(INDEX('L5 Data'!$C$6:$C$104000,SUMPRODUCT(('L5 Data'!$A$6:$A$104000=$B$1)*('L5 Data'!$B$6:$B$104000=$B$2)*('L5 Data'!$F$6:$F$104000=E$6)*ROW('L5 Data'!$6:$104000))-5),"")
我将其修改成如下形式:
comment_date = Application.WorksheetFunction.IfError(Application.WorksheetFunction.Index(line_data_sheet.Range(C6:C104000), Application.WorksheetFunction.SUMPRODUCT((line_data_sheet.Range(A6:A104000)=year)*(line_data_sheet.Range(B6:B104000)=week)*('L5 Data'!$F$6:$F$104000=D$3)*ROW(line_data_sheet.Range($6:$104000)))-5),"")
在对 INDEX 函数的原始调用中,我指定了三个条件(年份、星期、机器)来检索一行数据的特定列。
但是在 VBA 中,我只想指定两个条件(年份、星期)并循环遍历所有匹配的行(机器)以检索特定的列。
我该如何修改代码行“comment_date”来获得这个?
答案1
由于您尚未上传您正在尝试的 VBA 代码,因此我建议您使用下面编写的代码来尝试处理您的数据。
Dim row as Long
With Sheets("Line_Data_Sheet").Range("A6:C104000"))
For row = 6 To .Rows.Count
If .Cells(row, ColName).Value Like Criteria1 And .Cells(row, ColName).Value Like Criteria2 Then
Debug.Print .Cells(row, valueCol)
End if
Next
End With
注意: 您需要用您自己的替换 ColName 和 Criteria1 & 2。
或者你也可以用这种方法
For Each cell In Range("A6:B104000")
If cell.Value = "Year" And cell.Value = "Week" Then
i = cell.Row
Range("E" & i).Formula = "IfError(Application.WorksheetFunction.Index(line_data_sheet.Range(C6:C104000), Application.WorksheetFunction.SUMPRODUCT((line_data_sheet.Range(A6:A104000)=year)*(line_data_sheet.Range(B6:B104000)=week)*ROW(line_data_sheet.Range($6:$104000)))-5),"")"
End If
Next
希望这对你有帮助。