3

我正在尝试使 excel 自动化,以便它允许我显示另一个选项卡中满足特定条件的所有记录。

我的源表是(分析选项卡): 在此处输入图像描述

我根据列名命名了所有范围。所以例如命名范围Vehicle=Analysis!$A$2:$A$3000

所有范围都转到第 3000 行。

下拉列表是单元格 C1、车辆名称和要使用的过滤器。

我的目标工作表如下: 在此处输入图像描述

在单元格 B3 中,我有以下数组公式,我尝试调整但未成功。 =IF(COUNTIF(vehicle,DropDown)<ROWS($A$1:$A1),"",INDEX(DataTable,LARGE(IF(DropDown=Litres,ROW(INDIRECT("1:"&ROWS(vehicle)))),ROW(Analysis!$A1)),MATCH(Analysis!A$3,Analysis!$A$3:$E$3,0)))

这不能正常工作。任何帮助表示赞赏。

总而言之,我想从选项卡分析中返回车辆等于单元格 C1 的所有行。随着数据每天的变化,我需要将其自动化。

更新 在此处输入图像描述 在此处输入图像描述

4

2 回答 2

3

您将需要使用 VBA。一个很好的方法是添加一个自定义函数,然后在另一个单元格中使用它。例如在单元格 D1 中放置=MyFunction(C1)。然后在 VBA 中创建一个模块并添加以下内容(可能包含一些错误,因为我没有测试它):

Function MyFunction(parVal As String) As String
    'Clear what is there now
    ActiveSheet.Range("A3", "I3000").ClearContents

    'Add new rows
    varRange = Sheets("Analysis").UsedRange
    varCount = 2
    For varRow = 1 To varRange.Rows.Count
        If varRange(varRow, 1) = parVal Then
            varRange(varRow, 1).EntireRow.Copy
            varCount = varCount + 1
            ActiveSheet.Cells(varCount, 1).EntireRow.Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        End If
    Next varRow
    MyFunction = "Found " & (varCount - 2) & " rows"
End Function
于 2013-05-31T11:49:06.550 回答
1

附加信息来自:http ://www.cpearson.com

把代码放在哪里

UDF 的代码应放在标准代码模块中,而不是放在工作表模块之一中,也不应放在 ThisWorkbook 模块中。在 VBA 编辑器中,转到插入菜单并选择模块。这将在项目中插入一个新的代码模块。一个模块可以包含任意数量的函数,因此您可以将许多函数放入一个代码模块中。您可以将模块名称从 Module1 更改为更有意义的名称,方法是按 F4 键以显示“属性”窗口并将“名称”属性更改为您想要的任何内容。

您可以仅使用函数名称从同一工作簿调用函数。例如:

=矩形区域(12,34)

于 2014-07-03T14:16:43.543 回答