首页 > 解决方案 > 如何通过在 VBA 中使用参考单元格将多个字符串组合到一个单元格中?

问题描述

我有一个 VBA 宏代码,它使用自动筛选语法返回给定搜索条件的搜索结果。

此代码的目的是搜索文献结果并将所有结果直接返回到 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

标签: excelvba

解决方案


推荐阅读