我有一张包含多行的工作表。有些行共享参考编号(包含在 A 列中)。我想要做的是,当一行与另一行共享一个参考编号时,我想将这两行中包含的数据(例如 B 列)连接到新单元格(例如 C 列)。
例子:
Col A Col B Col C
12345 Robert Robert, David
12345 David Chris
54321 Chris
答案1
这是 VBA 方法。假设使用 Excel 2007 或更高版本;如果您使用的是 Excel 的 Ribbon 之前的版本,则前几个步骤会有所不同。
单击功能区上“开发人员”选项卡上的“Visual Basic”
右键单击“VBAProject(whatever-your-sheet-is-named.xls*)”,然后在上下文菜单中执行插入->模块
粘贴此代码
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
使用工作表函数(可以随意重命名),使用如下公式
=allquixotic(A1,$A$1:$A$15,$B$1:$B$15,true)
使用填充柄将公式放入所有单元格中
参数如下:
=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 个以上的名称具有相同的参考编号?