将单个单元格中的列B行值与列A相连

时间:2016-01-22 07:10:57

标签: excel excel-vba vba

我在“A”和“A”列中有大约400多条记录的数据。列“B”中的各种细节。表格中总共有3000多行 例如:

Column A    Column B

CHI150  UPS1

CHI150  TOWER1

CHI150  TOWER2

CHI160  EB1

CHI160  UPS1

CHI160  TOWER1

CHI163  EB1

CHI163  TOWER2

CHI163  UPS2

CHI195  TOWER1

CHI195  EB1

我想连接下面提到的数据。

Column A    Column B

CHI150  UPS1, TOWER1, TOWER2

CHI160  EB1, UPS1, TOWER1

CHI163  EB1, TOWER2, UPS2

CHI195  TOWER1, EB1

请提供解决方案&提前致谢

2 个答案:

答案 0 :(得分:1)

假设您有A列和A列中的数据。 B分别来自A2和B2细胞..



Sub test()
'change the sheet name as yours
Sheets("Sheet1").Activate
'Change the range as yours and you need update the column as well in cells(rows.count,1)
Set Rng = Range("A2", Cells(Rows.Count, 1).End(xlUp))
Set rng1 = Range("D2", Cells(Rows.Count, 4).End(xlUp))

Range("A2", Cells(Rows.Count, 1).End(xlUp)).Copy
'copy pasteing the column A and removing duplicates
Range("D2").PasteSpecial xlPasteValues

ActiveCell.RemoveDuplicates Columns:=1, Header:=xlNo

' now concordinating the values
For Each cell In rng1
    For Each cell1 In Rng

        If cell.Value = cell1.Value Then
            If cell.Offset(0, 1).Value = "" Then
            cell.Offset(0, 1).Value = cell1.Offset(0, 1).Value
            Else
            cell.Offset(0, 1).Value = cell.Offset(0, 1).Value & ", " & cell1.Offset(0, 1).Value
            End If
        End If
        
    Next cell1
Next cell

End Sub




enter image description here

上面的宏将在D列表格D2中生成结果。希望这是你期待的......

答案 1 :(得分:-1)

感谢您在问题中进行更改以更好地解释它。

我拿了一张与您的问题类似的样本表,并且能够在新列中获得所需的结果C.尝试以下步骤

  1. 将B1的值复制到C1
  2. 将以下公式放在从第2行(即C2)开始的C列的所有行中。这将检查当前行的A列上的值是否与前一行相似,并且应将列B的值附加到C列中前一行的计算值。

    = IF(A2 = A1,(C1&","& B2),B2)

  3. 对于D列的所有行,将下面的公式放在第1行

    = IF(A1 = A2"""变更&#34)

  4. 这应该使用"更改"来填充D列的某些行,然后您可以仅针对包含"更改"的记录过滤列D.作为价值。

  5. 这应该可以得到你想要的结果。