我有一张这样的桌子:
+----------+---+---+----+
| date | A | B | C |
+----------+---+---+----+
| 3-Sep-18 | 3 | 7 | 11 |
| 4-Sep-18 | 4 | 8 | 12 |
| 5-Sep-18 | 5 | 9 | 13 |
+----------+---+---+----+
如何从上面的匹配列中获取值act
,date
并在同一张表上获取下表?
+-----+----------+-------+
| act | date | value |
+-----+----------+-------+
| A | 5-Sep-18 | 5 |
| B | 5-Sep-18 | 9 |
| C | 5-Sep-18 | 13 |
+-----+----------+-------+
答案1
假设第一个表在Sheet1
,所需输出在Sheet2
此外,在 上Sheet1
,标题位于第一行。
这样,在 上Sheet2
,标题也会在第一行,但最重要的是,第一列数据在 上Column A
,第二列在 上Column B
,因此您需要在 上输入以下公式Column C
:
=INDEX(Sheet1!A:D;MATCH(Sheet2!B2;Sheet1!A:A;0);MATCH(A2;Sheet1!1:1;0))
这里需要注意的是:
Sheet1!A:D
应该从第一列到最后一列,只要有数据。如果你有信息,比如说,直到第 ZZ 列,那么它需要Sheet1!A:ZZ
- 如果页眉不在工作表的第一行,则需要更改
Sheet1!1:1
为页眉所在的行。
以防万一,这是如何运作的?
首先,我们使用INDEX()
公式。这允许我们选择一个范围,然后调用我们想要从该范围中获取哪一行/列的信息。
然后,我们使用MATCH()
公式。它的第一个实例,检查 A 列并返回日期字段匹配的行。请记住:这只会匹配第一项。如果在不同的行中有多个相同的日期,它将不起作用。
我们使用第二个实例MATCH()
来检查整行标题以返回 ACT 所在的列。同样,如果您有多个相同的 ACT,它只会返回第一个。
现在有了这个,我们就有了一个范围,然后我们有一个行号和一个列号,返回您想要的精确值。