Excel 不同行数之间的索引/vlookup

Excel Index / vlookup between varied row amounts

我正在尝试使用 vlookup / index 来提取一些数字。附加示例数据:

A:个合并单元格(数字存储在合并单元格的顶部)

B: 只有我要从这个中寻找的数字是蓝色的总数

E: 要查找的号码

F: 总数(预期数字显示为绿色)

我过去做过类似的事情,只是看不出我是如何让它起作用的。

注意:A 列中每个数字的行数可能有所不同,最小的显示为 2 行,例如第 4 / 5 行,但可以无限上升。

如果有人知道我怎样才能得到预期的结果那就太好了!

下面的公式可以工作

=IFNA(INDEX($B:$B,MATCH(D2,$A:$A,0)-1),INDEX($B:$B,COUNT($B:$B)))

if D 列中的值 always 与 A 列中的值的顺序相同:

或者,

尝试这个公式解决方案,其中 D 列中的标准与 A 列中的标准顺序不同。(根据 OP 的评论)。

E1中,公式复制下来:

=INDEX(B:B,MATCH(D1,A:A,0)+MATCH(1,FREQUENCY(1,N(INDEX(A:A,MATCH(D1,A:A,0)+1):A<>"")),0)-1)

您也可以尝试这个公式,适用于任意顺序 使用 INDEX()AGGREGATE()LOOKUP()ROW() 函数,

• 单元格 I1

中使用的公式
=INDEX($B:$B,
AGGREGATE(14,6,ROW($B:$B)/
(H1=LOOKUP(ROW($A:$A),ROW($A:$A)/
($A:$A<>""),$A:$A)),1))

让我解释一下为什么会这样,

LOOKUP() 函数创建 Column A 个值的数组

=LOOKUP(ROW($A:$A),ROW($A:$A)/($A:$A<>""),$A:$A)

参考专栏L


• Select上面的公式,按F9功能键,你会发现它创建了一个数组1234543643 , 23245, 98989 表示它在 Column B

中有值的次数
{12345;12345;12345;43643;43643;23245;23245;23245;23245;23245;98989;98989;98989;98989}


• 接下来我做了一个 Boolean Check 即它是否符合我的标准,并且 return 分别是 TRUE'sFALSE's 的数组

={FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE}

• 为了 return 我的标准在数组中的相对位置,我简单地做了如下所示的那个,它给了我相应的行号,

参考专栏L

=ROW($A:$A)/(H1=LOOKUP(ROW($A:$A),ROW($A:$A)/($A:$A<>""),$A:$A))

• 正如您在上面看到的 returns 以及一些错误,因此我们将整个包装在一个 AGGREGATE() 函数中

--> 其中14指的是function_numLARGE(),

--> 其中6指的是optionsIgnore Error Values,

--> 其中 array

ROW($A:$A)/(H1=LOOKUP(ROW($A:$A),ROW($A:$A)/($A:$A<>""),$A:$A))

--> 最后 [k] 我们需要数组中最大的一个,它应该 return 我的行号,因此,在上面它将 return 10 对于 98989 就像在单元格 H1 中一样,如果你看到 E1 它将 return 3 12345 以此类推。


因此,当我们得到行号或位置时,我们将整个包裹在一个 INDEX() 函数中,以分别获得我们想要的输出!

• 单元格 F1

中使用的公式
=INDEX($B:$B,
AGGREGATE(14,6,ROW($B:$B)/
(E1=LOOKUP(ROW($A:$A),ROW($A:$A)/
($A:$A<>""),$A:$A)),1))