excel - 过滤两个数组以确保如果类别为 x 它是唯一的
问题描述
我有一张如下表
|Claim| |ID CD|
|:---| |:---|
|757| |59|
|757| |59|
|757| |60|
|758| |59|
|758| |59|
我正在尝试创建一个公式,该公式查看声明列,如果它的 ID 为 59,请确保它是该声明的唯一 ID。如果不显示索赔 ID。
所以对于上面的单元格中的输出将是
757
编辑:已解决
=IFERROR(XLOOKUP(UNIQUE(FILTER(r_trans_clm_id,r_jur_cd="59")),FILTER(r_trans_clm_id,r_jur_cd<>"59"),FILTER(r_trans_clm_id,r_jur_cd<>"59"),"",0),"No Federal Duplicates")
如果由于没有重复而引入错误,则会发生 #calc 错误。
解决方案
好吧,在知道 OP 想要实现什么之后,这个问题实际上是非常有趣的。我的解决方案(使用Excel 365)有点复杂,我很想看看是否有更简单的版本...
假设您的claim
列名为List_Claim,并且您的ID CD
列名为List_ID,
在要返回具有多个的声明的单元格中ID CD
,输入以下公式:
=LET(x,--(LEN(UNIQUE(IF(List_Claim=TRANSPOSE(UNIQUE(List_Claim)),List_ID,"")))>0),y,ARRAYTOTEXT(TRANSPOSE(x),1),z,"<t><s>"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(MID(y,2,LEN(y)-2),",",""),0,""),";","</s><s>")&"</s></t>",FILTER(UNIQUE(List_Claim),NOT(FILTERXML(z,"//s[node()]")=1)))
它将以垂直数组的形式返回结果。
以下是我所做工作的一些细分:
- 使用LET函数,我声明了以下内容:
名称:x
公式:--(LEN(UNIQUE(IF(List_Claim=TRANSPOSE(UNIQUE(List_Claim)),List_ID,"")))>0)
检查每个声明是否有匹配项ID CD
,如果有,则返回 1,否则返回 0。因此,如果一个声明有多个匹配项ID CD
,则该声明的数组中至少有两个1
,例如 {1, 1,0,0,0},否则,您应该在数组中只有一个1
,例如 {0,0,1,0,0}
名称:y
公式:=ARRAYTOTEXT(TRANSPOSE(x),1)
将数组转换为文本字符串,例如{1,1,0,0,0;0,0,1,0,0}
name: z
formula"="<t><s>"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(MID(y,2,LEN(y)-2),",",""),0,""),";","</s><s>")&"</s></t>"
来修改文本字符串,以便我可以使用FILTERXML函数将其转换回数组,例如 {11;1}
- 在LET函数的最后一个参数中,输入最终的计算
=FILTER(UNIQUE(List_Claim),NOT(FILTERXML(z,"//s[node()]")=1))
这将过滤所有唯一声明并仅显示具有多个 的声明ID CD
。
推荐阅读
- php - Laravel 6:在仍登录时删除用户
- php - 用户从支付网关重定向回网站后 CodeIgniter 会话数据丢失
- javascript - 在轮播中更改幻灯片的问题,仅用 js 和 css 编写
- reactjs - 承诺中的 setInterval,在 React 中只执行一次
- php - 是否可以编辑和编写现有的 PDF 文件?
- jar - 如何打开 edumips.jar?
- javascript - 如何更改数组中最后一个索引的内容?
- firebase-realtime-database - 如何将用户数据库复制到 Firbase 中的永久数据库
- python - 如果 __init__ 中出现问题,如何防止调用方法?
- javascript - 变量上的 JavaScript 事件循环操作是否阻塞?