Vlookup If Match 与数组的组合

Vlookup If Match combination with an array

我有一个包含 3 个标准的数据sheet。成本中心、员工级别和工作国家/地区。 sheet 看起来有点像这样

                Australia     China      Hong Kong     India
All    L10      10,000       10,001       10,003       10,004
All    L11      9,000         9,001        9,002        9,003
C9620  L10      10,005       10,006       10,007       10,008
C9620  L11      9,005        9,006        9,007         9,008

我有 50 个国家,100 多个成本中心,每个成本中心有 10 个级别。

我正在将数据移动到以列形式列出的另一种格式。工资栏有我的公式,只适用于所有国家的成本中心 "all"。我认为问题出在成本中心。

Country     Cost Center    Level    Salary
Australia      All          L10       10,000
Australia      C952         L10       #N/A
Austraila      C845         L10       #N/A
China          All          L10       10,001
China          C952         L10       #N/A
China          C845         L10       #N/A

我使用了数组公式来得到我的答案。 -Median Salary by Cost Center'!$B:$B82 = Cost Centers -Logic Board'!$G14 = Cost Center -Logic Board'!$H14 = Employee Level -Median Salary by Cost Center'!$C:$AR98 = All Data -Logic Board'!$E14 = Country -Median Salary by Cost Center'!$C:$AT = Country

=VLOOKUP(IF('Median Salary by Cost Center'!$B:$B82='Logic Board'!$G14,'Logic Board'!$H14,"NA"),'Median Salary by Cost Center'!$C:$AR98,MATCH('Logic Board'!$E14,'Median Salary by Cost Center'!$C:$AT,0),FALSE)

预期结果的薪水列一直向下填充。目前它仅适用于成本中心 "All"。所有其他成本中心都提出了#N/A

如有任何想法,我们将不胜感激。

最简单的方法可能是不用公式。使用 Power Query,您只需单击几下即可转换 table。

将列标签添加到前两列,然后将 table 添加到 Power Query 编辑器。 Select 前两列,然后使用转换功能区上的 Unpivot > Other columns 命令。重命名、重新排列和排序数据并将其加载到工作表中。

如果不想用Power Query,可以用这个公式。请参阅单元格地址的屏幕截图并进行相应调整。请注意,此公式不应与整个列引用一起使用,否则会变得非常慢。

=INDEX($C:$F,MATCH(J2&K2,INDEX($A:$A&$B:$B,0),0),MATCH(I2,$C:$F,0))

我同意@teylyn 的观点,最有效的方法是使用 Power Query 逆轴旋转 table 以获得所需的结果。 Formula-based 鉴于您有大量数据需要转换,答案可能会减慢您的计算速度。

还有另一种方法可以使用 数据透视表 Table 和数据透视图向导文本到列函数。

这里是如何在不同版本的 Excel 中找到 Pivot Table 和 Pivot Chart Wizard 函数的说明:Where are Pivot Table and PivotChart Wizard in Excel 2007, 2010, 2013, 2016, 2019 and 365

请参阅以下步骤来转换 table:

干杯:)