从带有下拉列表的表中选择数据

时间:2014-02-24 16:24:01

标签: excel excel-vba vba

我有一张非常大的桌子,我每个月都会用新价格添加一列。然后,我必须用这些值进行一些分析。我已经使用了公式中列的名称。我想知道我是否可以将公式指向下拉菜单,所以我只选择新的时间段并获得结果。

以下是我一直使用的公式的一些例子:

{=SUM(IF($B17=Matriz[money];Matriz[31-10-2013]*Matriz[country];0))}

我想使用像

这样的东西

{=SUM(IF($B17=Matriz[money];Matriz[*dropdow reference*]*Matriz[country];0))}

pd:{ }用于矩阵计算(当你使用ctrl + shift + enter时)

2 个答案:

答案 0 :(得分:0)

您正在寻找indirect功能。有了它,你可以动态构造一个包含你的单元格公式的字符串 - 然后间接函数将公式字符串解析为其结果。

如果没有具体的例子,有点难以描述。

查看以下资源:

about.com

http://www.cpearson.com/excel/indirect.htm

答案 1 :(得分:0)

我建议您使用INDEX + MATCH代替IDIRECT(因为IDIRECT是易失性函数,每次任何细胞改变了):

=SUM(IF($B17=Matriz[money];INDEX(Matriz[#Data];0;MATCH(A1;Matriz[#Headers];0))*Matriz[country];0))

并按 CTRL + SHIFT + ENTER 进行评估。

或者你可以使用SUMPRODUCT - 它不需要数组输入:

=SUMPRODUCT(($B17=Matriz[money])*INDEX(Matriz[#Data];0;MATCH(M2;Matriz[#Headers];0))*Matriz[country])

我假设您的下拉值在A1单元格中。

  • 此部分MATCH(A1;Matriz[#Headers];0)A1单元格中找到值 在表格的标题中
  • 这部分INDEX(Matriz[#Data];0;MATCH(A1;Matriz[#Headers];0))得到了 相应的数据列