excel中如何解决一对多数据合并,具体从A1:B10到D1:E4?

 我来答
mzz9060
2020-07-15 · TA获得超过1321个赞
知道小有建树答主
回答量:773
采纳率:84%
帮助的人:194万
展开全部

1、如果你的EXCEL支持TEXTJOIN函数,就可以直接用数组公式计算,如图E2公式

=TEXTJOIN("/",TRUE,IF($A$2:$A$10=D2,$B$2:$B$10,""))

按Ctrl+Shift+Enter组合键输入。

2、如果不支持以上函数,可以编写自定义函数完成,按ALT+F11组合键,打开VB窗口,执行"插入"-"模块",复制下面代码进去,回到工作表,像使用普通公式一样使用它,如E2公式:

=JOINIF($A$2:$A$10,D2,$B$2:$B$10)

代码:

Function JOINIF(Rng1 As Range, Str, Rng2 As Range)

    Dim arr, brr

    Dim i As Long

    Dim j As Long

    Dim MyStr As String

    If Rng1.Rows.Count > 65536 Then

        arr = Rng1.Resize(65536, Rng1.Columns)

        brr = Rng2.Resize(65536, Rng1.Columns)

    Else

        arr = Rng1

        brr = Rng2

    End If

    For i = 1 To UBound(arr)

        For j = 1 To UBound(arr, 2)

            If arr(i, j) <> "" Then

                If arr(i, j) = Str Then

                    MyStr = MyStr & brr(i, j) & "/"

                End If

            Else

                Exit For

            End If

        Next j

    Next i

    JOINIF = Left(MyStr, Len(MyStr) - 1)

End Function

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式