Excel 基于另一列值合并列值
我希望在Excel中执行以下操作: 我有一个表,想写一个函数或公式来查看一列中的值,如果它们相同,则取另一列中的值,并将其连接到找到的第一条记录(在新列中)的列值 例如:Excel 基于另一列值合并列值,excel,Excel,我希望在Excel中执行以下操作: 我有一个表,想写一个函数或公式来查看一列中的值,如果它们相同,则取另一列中的值,并将其连接到找到的第一条记录(在新列中)的列值 例如: ADDRESS PAGE NEW COLUMN 1 810 ANDERSON TERR 1817-2 1817-2 10 1940 HILLSIDE DR 1315-42 1315-42 101 TRANQUILLE RD
ADDRESS PAGE NEW COLUMN
1 810 ANDERSON TERR 1817-2 1817-2
10 1940 HILLSIDE DR 1315-42 1315-42
101 TRANQUILLE RD 1518-53 1518-53 1517-30
101 TRANQUILLE RD 1517-30
1020 HILLSIDE DR 1417-111 1417-111 1417-112
1020 HILLSIDE DR 1417-112
10285 DALLAS DR 1330-10 1330-10 1330-3
10285 DALLAS DR 1330-3
1051 PINE SPRINGS RD 2218-46 2218-46 2218-18 2218-31 2217-6 2218-32
1051 PINE SPRINGS RD 2217-18
1051 PINE SPRINGS RD 2218-31
1051 PINE SPRINGS RD 2217-6
1051 PINE SPRINGS RD 2218-32
如有任何见解,将不胜感激
关于我将根据所讨论的列对表进行排序,然后您将得到具有相同列值的所有行。在排序表上,可以使用如下函数 =如果('column value'='previous column value','concatenate values','') 如果始终需要连接找到的第一个值,则可以创建另一列,该列始终只包含属于一起的一组行的第一个找到的值,并与该列连接 更准确地说: 1) 分类表 2) 假设地址在A列,页面在B列,将此公式添加到C列(并向下复制): =如果(A2=A1、C1和B2、B2) 这正好给出了示例中的值:
ADDRESS PAGE NEW COLUMN
1 810 ANDERSON TERR 1817-2 1817-2
10 1940 HILLSIDE DR 1315-42 1315-42
101 TRANQUILLE RD 1518-53 1518-53 1517-30
101 TRANQUILLE RD 1517-30
1020 HILLSIDE DR 1417-111 1417-111 1417-112
1020 HILLSIDE DR 1417-112
10285 DALLAS DR 1330-10 1330-10 1330-3
10285 DALLAS DR 1330-3
1051 PINE SPRINGS RD 2218-46 2218-46 2218-18 2218-31 2217-6 2218-32
1051 PINE SPRINGS RD 2217-18
1051 PINE SPRINGS RD 2218-31
1051 PINE SPRINGS RD 2217-6
1051 PINE SPRINGS RD 2218-32
地址页新建
安德森1817-1817-1812
10山坡1315-42 1315-42
101宁静1518-53 1518-53
101宁静1517-30 1518-53 1517-30
1020山坡1417-111 1417-111
1020山坡1417-112 1417-111 1417-112
10285达拉斯1330-10 1330-10
10285达拉斯1330-31330-101330-3
1051松2218-46 2218-46
1051松2217-18 2218-46 2217-18
1051松2218-3112218-462217-182218-31
1051松2217-62218-462217-182218-312217-6
1051松2218-322218-462217-182218-312217-62218-32
如果不需要中间连接,则必须隐藏列C,并在列A中的值更改时复制另一列C的值。并且作为函数:
Sub Combine()
Dim rwNumber As Integer
Dim value As String
Dim oldValue As String
Dim concatenatedString As String
'Sort the table
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A2:C14")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
For rwNumber = 2 To 100
'gets value of first cell
value = ActiveWorkbook.Worksheets("Sheet1").Cells(rwNumber, 1).value
If value = oldValue Then
concatenatedString = concatenatedString + " " + ActiveWorkbook.Worksheets("Sheet1").Cells(rwNumber, 2).value
Else
ActiveWorkbook.Worksheets("Sheet1").Cells(rwNumber - 1, 3).value = concatenatedString
concatenatedString = ActiveWorkbook.Worksheets("Sheet1").Cells(rwNumber, 2).value
End If
oldValue = value
Next rwNumber
End Sub
或者类似的东西:-)谢谢你的眼睛-这可以用来比较两个值相同的记录,不知道我需要比较多少条记录-有时有两条以上的记录具有相同的值-需要使用某种变量…还有其他想法吗?我为我的表格式在我的帖子中没有正确通过而道歉!这也适用于两个以上的记录——或者我不理解你的问题吗?或者,你当然可以编写一个函数,循环第一列的内容(我仍然会先对它进行排序,然后你可以不用字典来记住你已经有了哪些值)并建立连接的字符串。但这比直接在excel单元格中使用公式要慢得多…我可能更倾向于函数的思路。。。您提供的示例非常好,但一次只比较了2行……再说一遍,我的示例表的格式不正确。您对循环/函数的使用情况如何?我使用它们已经有一段时间了,但是通过一些示例代码,我想我可以理解它。同样,需要比较x行的数量,这在我的数据中是可变的,范围从2个相同的行到多达30个需要比较的相同行。。。再次感谢!