2011-02-28 52 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 

或類似的東西:-)