整合重复行 – VBA?
我有一个电子表格如下: 组合重复
我可以在这里使用脚本合并重复。
但是,我不知道将列A添加到合并列(K)。 任何帮助感激!
谢谢
假设第1行是标题行,因此实际数据从第2行开始,并且您希望输出在单元格J2中启动,则此代码应该适用于您:
Sub tgr() Dim cllSKU As Collection Dim SKUCell As Range Dim rngFound As Range Dim arrData(1 To 65000, 1 To 2) As Variant Dim strFirst As String Dim strJoin As String Dim DataIndex As Long Set cllSKU = New Collection With Range("G3", Cells(Rows.Count, "G").End(xlUp)) On Error Resume Next For Each SKUCell In .Cells cllSKU.Add SKUCell.Text, SKUCell.Text If cllSKU.Count > DataIndex Then DataIndex = cllSKU.Count arrData(DataIndex, 1) = SKUCell.Text arrData(DataIndex, 2) = Cells(SKUCell.Row, "A").Text & " - (" Set rngFound = .Find(SKUCell.Text, .Cells(.Cells.Count), xlValues, xlWhole) If Not rngFound Is Nothing Then strFirst = rngFound.Address Do arrData(DataIndex, 2) = arrData(DataIndex, 2) & Cells(rngFound.Row, "H").Text & "," Set rngFound = .Find(SKUCell.Text, rngFound, xlValues, xlWhole) Loop While rngFound.Address <> strFirst End If arrData(DataIndex, 2) = Left(arrData(DataIndex, 2), Len(arrData(DataIndex, 2)) - 1) & ")" End If Next SKUCell On Error GoTo 0 End With If DataIndex > 0 Then Range("J2:K" & Rows.Count).ClearContents Range("J2:K2").Resize(DataIndex).Value = arrData End If Set cllSKU = Nothing Set SKUCell = Nothing Set rngFound = Nothing Erase arrData End Sub
可以实现不.VBA,但承认比复制代码更多的工作给你!
假设你的头在Row3中。
- 复制您的工作表并在副本上工作。
- 在I3中说:
=IF(COLUMN()<COUNTIF($G:$G,$G3)+8,IF($G3=$G4,INDIRECT("$h"&ROW()+COLUMN()-8),""),"")
- 复制公式到(至lessColumnL,但根据需要,说ColumnZ),并下来以适应。
- 在Row3的两个相邻列(我假设M&N)中,
[M]=H3&","&I3&","&J3&","&K3&","&L3 (extended as required)
[N]=A3&" - "&"("&M3
(将M
replace为步骤3中列的列引用)并复制两者以适合。 - 复制ColumnN并将特殊值粘贴到顶部。
- 在ColumnN中replace
,,
没有任何东西。 - 在Row3的两个相邻列(我假设O&P)中,
[O]=IF(RIGHT(N3,1)=",",LEFT(N3,LEN(N3)-1)&")",N3&")")
[P]=G2=G3
并复制这些以适应。 - 复制整个工作表并将特殊值粘贴到顶部。
- 过滤ColumnPselectTRUE并删除Row4到最后。
- 不过滤。
- 删除除ColumnO和ColumnG以外的所有列。
- 把
Merged
在B2。
请注意,这不会给你在问题中显示的M和XL之间Tops的空间。