⽤⾃定义函数联合IF函数实现“⼀对多”查询
EXCEL中的VLOOKUP函数,⼤家使⽤的⽐较多,它实际是个查询函数,依据查询的条件,到对应的⾏,可以返回该⾏某个指定列的单元格,但是它有个缺点,只能实现“⼀对⼀”查询,不能实现“⼀对多”查询,即如果有多个满⾜条件的结果,VLOOKUP函数只能返回第⼀个。
如何处理“⼀对多”的情况,经过我的⼀番尝试,到了解决⽅案。我的解决⽅案是IF函数+⾃定义聚合函数。⾸先来看IF函数,IF函数判断是否满⾜某个条件,如果满⾜返回⼀个值,如果不满⾜则返回另⼀个值。巧妙地设置判断条件,就能实现VLOOKUP的功能,在条件判断中,输⼊⼀个公式,⼀个值与⼀个区域⽐较是否相等,如不相等,返回空;如相等,返回值为另外⼀个区域。
举例如下:IF(D4=$A$2:$A$9,$B$2:$B$9,"")
⽤IF函数进⾏了尝试,结果参见看上⾯的图⽚。实际返回⼀个数组,就是满⾜条件对应⾏另外⼀列的数值,满⾜条件返回对应单元格的数值,不满⾜返回空,基本实现了VLOOKUP的功能,⽽且是返回了所有的结果,实现了“⼀对多”。因返回的是数组,⽽⼀个单元格⽆法接收⼀个数组,单元格⽆法显⽰,需要想其它的办法。对于返回的数组,如果有⼀个聚合函数实现信息收集,就能在⼀个单元格显⽰,我突然想到了TEXTJOIN函数,该函数实现了字符连接功能,就是⼀个很好的聚合函数,但是抠门的微软只在OFFICE 365和部分EXCEL 2016版本中提供这个函数,其它的就没有了,没关系,既然你不提供,我就⾃⼰写⼀个,命名为TEXTJOINA函数,代码如下:
Public Function TextjoinA(str1)
Dim str2 As String
str2 = ""
For Each Data1 In str1
If Data1 <> "" Then
str2 = str2 & "\" & Data1
End If
Next
TextjoinA = str2
End Function
⾃定义的函数+IF函数运⾏结果如下,多个结果之间⽤分隔符"\"隔开,之后⽤分列就可以了。”if vlookup函数的使用方法
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论