在行中查找特定值并在水平相邻的单元格中查找值

Lookup a specific value in a ROW & find the value in the horizontally adjacent cell

我需要在 Sheet1!B1 中查找一个值并在 Sheet2 (Sheet2!E2:DD2) 的单个行范围内找到它。找到后,我需要在同一单行范围 (Sheet2!E2:DD2) & return 中获取下一个单元格的值 Sheet1!B2.

然后我希望能够对下一行再次执行相同的操作。查找 Sheet1!B1 中的值并在 Sheet2 (Sheet2!E3:DD3) 的下一个单行范围内找到它。找到后,我需要在单元格 Sheet1!B3.

中获取同一单行范围 (Sheet2!E3:DD3) & return 中下一个单元格的值

& 然后我会在 Sheet1!B 列中重复这个公式,另外 3000 行左右..

需要注意的是,Sheet1!B1 中的值并未出现在 Sheet2 中每一行的同一列中(例如,在第 2 行中,它可能出现在 Sheet2!P2 和第 3 行中它可能出现在 Sheet2!BT3)


场景示例和期望结果:

Sheet1!B1 = "Hello"
Sheet2!P2 = "Hello"
Sheet2!Q2 = "Bonjour"
Sheet2!BT3 = "Hello"
Sheet2!BU3 = "Aloha"

Desired Result in Sheet1!B2 = "Bonjour"
Desired Result in Sheet1!B3 = "Aloha"

正如您可能看到的那样,Sheet1!B2 中的 Vlookup 如 =VLOOKUP(Sheet1!B1, Sheet2!E2:DD2, 2, false) 将不起作用,因为在查找的第一列中找不到查找值 (Sheet1!B1)范围 (Sheet2!E2:DD2),而是在范围的中间某处找到它。所以 vlookup 只会 return #N/A

理想情况下,我正在寻找一个公式解决方案,而不是 VBA 如果可能的话。

您可以使用 INDEX 和 MATCH。

Match 会找到您搜索的位置。
本例中我们搜索"Hello",在E2:DD2中,因为我们在P2中找到"Hello",所以return是12(右边12列)。
但是我们想要下一个相邻的单元格,所以我们加 1。

现在要实际获取右侧 13 列中的值,我们使用 INDEX。
Index 将创建一个包含从 E2 到 DD2 的所有项目的列表,其中 11 为空,然后是 "Hello",然后是 "Bonjour".
索引参数是列表或矩阵、行、列。
列表是E2:DD2,行是你想要移动的行数(向上或向下),列是你想要移动的列数(我们想要13)。

所以结合这两个函数将是:

=INDEX(E3:DD3,0,MATCH($B,E3:DD3,0)+1)

这意味着我们索引列表,我们 return 在同一行,但是我们找到 "Hello" +1.

的列

编辑:我没有注意到它在两个不同的 sheet 上。但是同样的公式也适用,只是需要在公式中添加sheet。

=INDEX(Sheet2!E2:DD2,0,MATCH($B,Sheet2!E2:DD2,0)+1)