我希望在Excel中执行以下操作:
我有一个表,想要编写一个函数或公式来查看一列中的值和它们相同的位置,取另一列中的值并将其连接到它找到的第一个记录的列值(in新专栏)。
例如:
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 :(得分:0)
我会对相关列上的表进行排序,然后在彼此之后获得具有相同列值的所有行。在排序表上,您可以使用类似
的函数= IF('列值'='前一列值','连接值','')
如果您总是需要连接找到的FIRST值,则可以创建另一列,该列始终只包含属于一起并与之连接的一组行的第一个找到的值。
更精确:
1)排序表 2)假设A列中的地址和B列中的页面,在C列中添加该公式(并向下复制):
= IF(A2 = A1,C1&“”& B2,B2)
这准确地给出了示例中的值:
ADDRESS PAGE NEW
1 ANDERSON 1817-2 1817-2
10 HILLSIDE 1315-42 1315-42
101 TRANQUILLE 1518-53 1518-53
101 TRANQUILLE 1517-30 1518-53 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列值的列。
答案 1 :(得分: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
或类似的东西: - )