Excel - 连接参考编号匹配的单元格

Excel - 连接参考编号匹配的单元格

我有一张包含多行的工作表。有些行共享参考编号(包含在 A 列中)。我想要做的是,当一行与另一行共享一个参考编号时,我想将这两行中包含的数据(例如 B 列)连接到新单元格(例如 C 列)。

例子:

Col A      Col B         Col C                    
12345     Robert      Robert, David      
12345     David        Chris                    
54321     Chris                                     

答案1

这是 VBA 方法。假设使用 Excel 2007 或更高版本;如果您使用的是 Excel 的 Ribbon 之前的版本,则前几个步骤会有所不同。

  1. 启用“开发人员”选项卡

  2. 单击功能区上“开发人员”选项卡上的“Visual Basic”

  3. 右键单击“VBAProject(whatever-your-sheet-is-named.xls*)”,然后在上下文菜单中执行插入->模块

  4. 粘贴此代码

    Option Explicit
    
    Function allquixotic(param As Variant, search As Range, values As Range, Optional absolute As Boolean = False) As String
    
    Dim sep As String, retval As String
    Dim i As Integer, rownum As Integer
    Dim look As Range, j As Range
    
    sep = ", "
    retval = ""
    For i = 1 To search.Rows.Count
    Set look = search.Cells(i, 1)
    If absolute Then
            rownum = look.Row
    Else
            rownum = i
    End If
    
    If look.Value = param Then
            If absolute Then
                    Set j = values.Worksheet.Cells(rownum, values.Column)
            Else
                    Set j = values.Cells(i, 1)
            End If
            retval = IIf(retval = "", retval & j.Value, retval & sep & j.Value)
    End If
    
    Next
    
    allquixotic = retval
    
    End Function
    
  5. 使用工作表函数(可以随意重命名),使用如下公式

    =allquixotic(A1,$A$1:$A$15,$B$1:$B$15,true)
    
  6. 使用填充柄将公式放入所有单元格中

参数如下:

=allquixotic(look_cell, key_range, value_range, absolute)

look_cell:第一个参数应该是单细胞值文字。有效输入包括诸如3、、$6.25"Hello"。这是您尝试在 中查找的值key_range

key_range:这应该是范围细胞(多个细胞);如果absolute是真的,那么你会得到非常奇怪的结果,除非这是一个连续的范围(所有值都在连续的行中)。

value_range:这应该是范围细胞(多个细胞);如果absolute是真的,那么你会得到非常奇怪的结果,除非这是一个连续的范围(所有值都在连续的行中)。

absolute:如果为真,那么我们将使用绝对行号(相对于整个电子表格中的行数)来key_range确定从哪一行提取值value_range。如果为 false,我们将使用相对数字;例如,如果我们在第三key_range,然后我们将从中提取值第三value_range。建议值为 FALSE,或者您可以省略它以默认为该值。

笔记:此功能不支持键和值的范围为,但使其适应这一点应该相当容易。

此外,如果您在 key_range 或 value_range 中指定多列,则只会使用最左边的列。

答案2

这对你有用吗?将 C2 中的公式设置为

=IF(A2=A3,B2 & ", " & B3,B3)

它假定您的数据已按 ColA 排序,以便参考编号分组在一起。

问题:ColA 中是否可以有 2 个以上的名称具有相同的参考编号?

相关内容