2011-02-28 44 views
0

我希望做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 

任何了解将不胜感激!!

问候

回答

0

我会排序问题的列的表,那么你得到后彼此相同的列值的所有行。在排序表,然后你可以使用像

功能

= IF(“列的值” =“以前的列值”,“连击值”,“”)

如果你总是需要要连接找到的FIRST值,可以创建另一个列,该列始终只包含属于一组并与之连接的一组行的第一个找到的值。

更精确的:

1)分类表 2)假设在B列在列A地址和页上,添加在该式中列C(和复制下来):

= IF( A2 = A1,C1 & “” & B2,B2)

这给出了在实施例完全相同的值:

ADDRESS PAGE NEW

1 ANDERSON 1817-2 1817-2

10 HILLSIDE 1315年至1342年1315年至1342年

101 Tranquille酒店1518年至1553年1518年至1553年

101 Tranquille酒店1517- 30 1518至1553年1517至30年

1020 HILLSIDE 1417-111 1417-111

1020 HILLSIDE 1417-112 1417-111 1417-112

10285 DALLAS 1330至10年1330至10年

10285 DALLAS 1330-3 1330至10年1330-3

1051 PINE 2218-46 2218-46

1051 PINE 2217-18 2218-46 2217-18

1051 PINE 2218-31 2218-46 2217-18 2218-31

1051 PINE 2217-6 2218-46 2217-18 2218-31 2217 -6

1051 PINE 2218-32 2218-46 2217-18 2218-31 2217-6 2218-32

如果你不希望你要隐藏C柱,使一个又一个创建一个副本中间串连当列A中的值发生更改时,列C的值。

+0

由于眼睛 - 而适用于比较2条记录有相同的值,它是未知有多少记录需要比较 - 有时有超过2个记录具有相同的值 - 需要某种变量......任何其他想法? – Jay 2011-02-28 23:17:25

+0

我的道歉格式化我的表没有正确地在我的文章! – Jay 2011-02-28 23:18:36

+0

这也适用于两个以上的记录 - 或者我不理解你的问题吗? – TheEye 2011-02-28 23:19:15

0

而作为一个功能:

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 

或类似的东西:-)