execl 中满足同一个条件的多个结果要在同一个单元格中显示

execl 中满足同一个条件的多个结果要在同一个单元格中显示,比如满足B列中张一条件的D列的A、E、F三个同在一个单元格中显示,并以“、”号区分开

亲,如果你要求显示在一个单元格内,那只有用VBA写一个自定义函数实现了。

开你的Excel文件,按“Alt+F11”打开VBA编辑窗口,然后在左侧空白处点击右键,“插入”,“模块”。右侧空白处粘贴下面的代码。关闭VBA窗口。

在D9单元格粘贴公式:

=hebing(B2:B7,C9,D2:D7,"、")

 

Function HeBing(rng1 As Range, s As String, rng2 As Range, f As String) As String
Dim Arr1, Arr2
Arr1 = rng1: Arr2 = rng2
Dim i As Long
For i = 1 To UBound(Arr1)
    If Arr1(i, 1) = s Then
        If HeBing = "" Then HeBing = Arr2(i, 1) Else HeBing = HeBing & f & Arr2(i, 1)
    End If
Next
End Function

追问

大神,运行过程中还是遇到问题了,我的sheet中数据很多,如果=hebing(B:B,C9,D:D,"、")这样写就是显示#VALUE!,如果所范围缩小为=hebing(B2:B7,C9,D2:D7,"、")这样就可以,请问能改下吗,谢谢

追答

嗯,你说的很对,代码更改如下:

Function HeBing(rng1 As Range, s As String, rng2 As Range, f As String) As String
Dim Arr1, Arr2
Dim r As Long
r = rng1.End(xlDown).Row - rng1.Row + 1
Arr1 = rng1.Resize(r, 1): Arr2 = rng2.Resize(r, 1)
Dim i As Long
For i = 1 To UBound(Arr1)
    If Arr1(i, 1) = s Then
        If HeBing = "" Then HeBing = Arr2(i, 1) Else HeBing = HeBing & f & Arr2(i, 1)
    End If
Next
End Function

追问

还是一样的,能再修修吗,谢谢

追答

请把数据区域截图上来看看。

我这边测试没有问题,见下图。其实,即使不修改代码,也不会产生#VALUE!错误,只是运行会比较慢。

所以,我怀疑是你的数据区域有其它错误值,导致无法合并产生错误。

追问

上面是范围变小的可以,下面是大的不可以

追答

亲,逻辑有问题呀!
两个区域不对应,A列是400~532,C列是400~653。A列的区域小一些,造成C列的多余区域没有A列的条件可以判断,当然出错。

追问

这样也不行啊.......

追答

嗯,貌似400~500行的数据有点问题。方便的话发给我看看。收私——信。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-02-11
傻小冰~~~~~~
第2个回答  2014-11-14
这是不可能用公式实现的,主要是显示在同一单元格这一点上
相似回答