如何使用VBA中的参考单元将多个字符串组合到一个单元中?

时间:2018-12-28 17:30:13

标签: excel vba excel-vba

工作簿链接:https://ufile.io/gm0fn

我有一个VBA宏代码,该代码通过使用AutoFilter语法返回给定搜索条件的搜索结果。

此代码的目的是搜索文献结果并将所有结果直接返回到Excel。

我遇到的问题是,当前代码只是在整个搜索结果表中列出所有作者,并将它们列在A列中,一次列出一位作者。

每个标题都有多个作者,因此我想使用一个函数将相应文章标题的所有作者结果组合到一个单元格中。

如何更改当前代码以使用由“ SO”标识的最后一个单元格作为参考点,以将所有作者组合为字符串并将其返回到一个单元格中。

请参阅图片以了解我要执行的操作。任何想法将不胜感激。

Sub ReturnFAUResults()

    Dim r As Range

    Application.ScreenUpdating = True

    With Worksheets("Sheet1") ' reference results sheet
        If IsEmpty(.Range("A1")) Then .Range("A1").Value = "dummy header" ' if A1 is empty, put a "dummy" header to make AutoFilter work properly

        .AutoFilterMode = False
        With .Range("B1", .Cells(.Rows.Count, 2).End(xlUp)).Offset(, -1) ' reference referenced sheet column A range from row 1 down to column B last not empty cell
            .SpecialCells(xlCellTypeBlanks).Formula = "=R[-1]C" ' fill referenced range blank cells with the same value as the not empty cell above
            .AutoFilter Field:=1, Criteria1:="=FAU"
            On Error Resume Next
            Set r = .Resize(.Rows.Count - 1, 1).Offset(1, 1).SpecialCells(xlCellTypeVisible)
            On Error GoTo 0
            If Not r Is Nothing Then r.Copy Worksheets("Search Results").Range("A7")
            .Parent.AutoFilterMode = False

            .SpecialCells(xlCellTypeFormulas).ClearContents ' clear cell with formulas
            If .Range("A1").Value = "dummy header" Then .Range("A1").ClearContents ' remove any "dummy" header
        End With
    End With

Application.ScreenUpdating = True
End Sub

0 个答案:

没有答案