寻找年龄差异最大的价值

问题描述 投票:0回答:2

我有一个电子表格,其中包含医院患者的数据。我正在运行 Excel 2021。 我需要创建一个函数(或宏)来告诉我有多少人住在最年长和最年轻的人之间年龄差异最大的家庭中。这就是我的数据的样子: 编辑:我更改了表格数据的屏幕截图,以便更容易使用。

h系列 hh尺寸 年龄
101051 1 92
101151 1 63
101201 1 56
101271 2 38
101271 2 25
101351 3 37
101351 3 14
101351 3 10
101371 2 35
101371 2 29

哪里: 年龄:患者的年龄 hserial:家庭序列号。这就是我们识别家庭的方式。 hhsize:家庭规模

我正在考虑是否可以使用过滤功能,并找到每个家庭中最年长和最小的减去之间的最大值。

excel filter excel-formula maxifs excel-2021
2个回答
2
投票

您可以在

E2
单元格中为O365尝试以下操作:

=LET(hs, A2:A10, hsize, B2:B10, age, C2:C10, ux, UNIQUE(hs),
 diff, MAP(ux, LAMBDA(u, LET(f, FILTER(age, hs=u), MAX(f)-MIN(f)))),
 x, XLOOKUP(MAX(diff), diff, ux), INDEX(hsize, XMATCH(x, hs)))

您可以使用以下

INDEX/MATCH
代替
XLOOKUP(x, hs, hsize)

对于 Excel 2021,您没有

MAP
可用,但您可以使用以下方法替换上一个公式的第二行,并使用
XLOOKUP
代替
INDEX/XMATCH
,但您也可以使用它们:

=LET(hs, A2:A10, hsize, B2:B10, age, C2:C10, ux, UNIQUE(hs),
 diff, MAXIFS(age,hs, ux) - MINIFS(age,hs, ux),
 x, XLOOKUP(MAX(diff), diff, ux), XLOOKUP(x, hs, hsize))

这是第一个公式的输出,对于第二个公式,您会得到相同的结果:


1
投票

Excel 2021 没有 LAMBDA 函数,但您仍然可以使用以下方法来实现:

=LET(rng,  A2:C11,
     hs,   INDEX(rng,,1),
     hh,   INDEX(rng,,2),
     age,  INDEX(rng,,3),
     mx,   MAXIFS(age,hs,hs),
     mn,   MINIFS(age,hs,hs),
     diff, mx-mn,
INDEX(hh,XMATCH(MAX(diff),diff)))

或者如果它可以是具有相同年龄差异的多个不同的 hhsize 值:

=LET(rng,  A2:C11,
     hs,   INDEX(rng,,1),
     hh,   INDEX(rng,,2),
     age,  INDEX(rng,,3),
     mx,   MAXIFS(age,hs,hs),
     mn,   MINIFS(age,hs,hs),
     diff, mx-mn,
UNIQUE(FILTER(hh,diff=MAX(diff))))

它采用完整范围

A2:C11
并将其分为单独的命名范围:
hs
代表
hserial
hh
代表
hhsize
age
。 然后,它计算
mx
的条件最大值
age
,其中范围内的
hs
值等于其自身。 与
mn
相同,但这是最小值。 diff 是
mx
mn
之间差异的数组。

比使用 INDEX / MATCH 或 FILTER 来获取

hh
 中最大值行中的 
diff

© www.soinside.com 2019 - 2024. All rights reserved.