我有一个电子表格,其中包含医院患者的数据。我正在运行 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:家庭规模
我正在考虑是否可以使用过滤功能,并找到每个家庭中最年长和最小的减去之间的最大值。
您可以在
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))
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
值