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
功能键,你会发现它创建了一个数组12345,43643 , 23245, 98989 表示它在 Column B
中有值的次数
{12345;12345;12345;43643;43643;23245;23245;23245;23245;23245;98989;98989;98989;98989}
• 接下来我做了一个 Boolean Check
即它是否符合我的标准,并且 return 分别是 TRUE's
和 FALSE'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_num即LARGE()
,
--> 其中6
指的是options即Ignore 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))
我正在尝试使用 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
功能键,你会发现它创建了一个数组12345,43643 , 23245, 98989 表示它在 Column B
{12345;12345;12345;43643;43643;23245;23245;23245;23245;23245;98989;98989;98989;98989}
• 接下来我做了一个 Boolean Check
即它是否符合我的标准,并且 return 分别是 TRUE's
和 FALSE'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_num即LARGE()
,
--> 其中6
指的是options即Ignore 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))