如何在Excel中的两个方向上的两个表之间进行交互?

时间:2015-07-09 16:21:53

标签: excel vba excel-vba

我的Excel项目中有2张: 在“Sheet1”中,我有一个大数据表,有4列: DataTable [Country],DataTable [Brand],DataTable [Parameter],DataTable [Calculated]。

在“表2”上,我有一个仪表板。我有一个名为FilteredTable的表,它提供来自DataTable的数据。我有一个下拉命令,让用户选择国家,并相应地过滤表。

我希望FilteredTable不仅可以显示原始DataTable中的数据,还可以让用户更改[Parameter]列。在更改它时,我希望两个表中的[Calculated]列都会相应更新。如果用户将更改国家/地区,则FilteredTable将显示存储在DataTable中的[Country]和[Brand]组合的参数。如果用户将返回第一个国家/地区,则显示的参数将是用户输入的最后一个参数。

我有点困惑怎么做。 到目前为止我所做的是:

1)使用公式数组从DataFilter读取FilteredTable行。我这样反映[country],[brand]和[计算]

2)在DataTable [paramter]中,我以相同的方式从FilteredTable [parameter]读取公式数组。

它工作正常,直到我更改国家/地区,然后FilteredTable中的参数已经与新国家/地区不匹配,而在DataTable中,旧国家/地区的参数更改为0。

我在逻辑循环中。有出路吗?

由于

1 个答案:

答案 0 :(得分:0)

您是否考虑使用3个表而不是2个?这将是:原始数据表,一个表,它从显示表中提取通过手动输入创建的所有值,以及显示表本身。

在VBA中,创建一个函数,每次在显示表中更改公式时都会运行该函数。该函数应该从用户获取新数据,并将更改的行复制到“手动输入”表中。对于显示表本身,您可以在每次进行更改时通过VBA手动重新计算,或者使用一个公式来查看手册表中是否有数据。如果手动表中有数据,则表示从中提取值。否则,将从原始数据表中提取数据。