Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于另一列值合并列值_Excel - Fatal编程技术网

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

我希望在Excel中执行以下操作:

我有一个表,想写一个函数或公式来查看一列中的值,如果它们相同,则取另一列中的值,并将其连接到找到的第一条记录(在新列中)的列值

例如:

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个需要比较的相同行。。。再次感谢!