在 VBA 中调用 Index 函数来检索数据数组

在 VBA 中调用 Index 函数来检索数据数组

我有这张工作表。

在此处输入图片描述

在另一个工作表的激活事件中,我想要检索指定年份和星期的所有行。

在 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

希望这对你有帮助。

相关内容