求问excel合并数据有没有简单方法。如下图,合并的数据用分号隔开?

前沿wos号是相同的,已经用颜色标记,后面被引论文wos号根据前面相同的合并到一起,中间用分号隔开,数据量很大,有没有简单方法?

答:编写了个自定义函数来完成。按Alt+F11组合键,打开vb编辑器。然后插入“模块”,将下面代码复制进去。

Function JOINIF(Rng1 As Range, Str, Rng2 As Range, Linkstr)
    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) & Linkstr
                End If
            Else
                Exit For
            End If
        Next j
    Next i
    JOINIF = Left(MyStr, Len(MyStr) - 1)
End Function

使用方法:在C列后插入一列,假设图中数据有100行,那么在C2单元格插入公式:

=JOINIF($B$2:$B$100,B2,$C$4:$C$100,";"),往下复制公式,就得到你需要的结果。

追问

请问,是这样吗?数据一共1387行,不过为什么一直显示公式,不出现数据呢?在vb编辑器上输入代码后,需要点击什么来执行一下吗?

追答

应该写成:=JOINIF($B$2:$B$1387,B2,$C$2:$C$1387,";")
不出结果,原因是D列插入时默认选用C列文本格式,把格式改为常规。

追问

它一直显示#NAME?,这是哪里不对呢?vb现在是这样的,不知道对不对。

追答

不要把代码置于工作表模块中,要在菜单里点击插入,插入一个模块,然后放到这个模块里。

追问

这里代码运行示,宏名称写什么呢?

追答

不用专门运行该程序,直接在单元格中写公式即可。现在你放对位置了。

追问

您好,我已经成功实现,请问一下这具体用到了什么方法呢?谢谢!!!

追答

实现方法就是利用自定义函数来实现。
技术手段就是体现在代码中,利用B列单元格的值在B整列匹配,把匹配到的值对应的C列的值串起来,然后输出显示。

温馨提示:答案为网友推荐,仅供参考
相似回答