我有两个名单,都充满了这四个文本价值:“大陆",”岛“,”城市“和"DP”。我试图创建一个函数来检查每一行中2的组合。但是我已经走到了死胡同,我想不出如何做it.The的优先顺序是:城市<大陆<岛< DP。一个例子是:

它的两列(“从”和“到”)充满了“大陆”、“岛屿”、“城市”和"DP“,形成了上面所示的随机组合。我需要一种方式来显示在“类别”列中,在每一行中,这个词比其他单词优越,遵循城市<大陆<岛< DP原则。例如岛在城市之上,所以在这2种组合中,类别显示“岛”。
这一想法类似于1<2<3,它一次比较两个组合,并将较高的单元放在单元格中。
发布于 2020-08-13 19:10:30
在单元格Z1中粘贴以下公式:
=IF(MATCH(B2,{"City","Mainland","Island","DP"},)>=MATCH(C2,{"City","Mainland","Island","DP"},),INDEX({"City","Mainland","Island","DP"},MATCH(B2,{"City","Mainland","Island","DP"},)),INDEX({"City","Mainland","Island","DP"},MATCH(C2,{"City","Mainland","Island","DP"},)))现在把公式向下拷贝。
但是,另一种更好的方法是在表上按顺序创建一个列表。例如:
Z1 =城市
Z2 =内地
Z3 =岛屿
Z4 = DP
现在,选择Z1:Z4并使用名称框来命名该范围:Order
现在可以将公式缩短为:
=IF(MATCH(B2,Order,)>=MATCH(C2,Order,),INDEX(Order,MATCH(B2,Order,)),INDEX(Order,MATCH(C2,Order,)))一种更简洁的方法仍然是使用名称管理器(Ctrl-F3)将列表存储为命名公式Order。
={"City","Mainland","Island","DP"}通过这种方式,您不需要将工作表与有序列表定义混淆在一起。
发布于 2020-08-13 22:42:44
您可以使用INDEX/AGGREGATE函数:
=INDEX({"City","Mainland","Island","DP"},AGGREGATE(14,0,(A2:B2={"City","Mainland","Island","DP"})*{1,2,3,4},1))

编辑:
如果值位于不相邻的列中:
=INDEX({"City","Mainland","Island","DP"};AGGREGATE(14,0,(((B2={"City","Mainland","Island","DP"})+(F2={"City","Mainland","Island","DP"}))>0)*{1,2,3,4},1))https://stackoverflow.com/questions/63400577
复制相似问题