ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Removing duplicate rows and combining unique data (https://www.excelbanter.com/excel-programming/361879-removing-duplicate-rows-combining-unique-data.html)

[email protected]

Removing duplicate rows and combining unique data
 
Hi,

I'm pretty new to Excel VBA programming. I'm trying to make a
subroutine that will iterate through the rows removing all duplicate
rows (using a column A for the unique cell values) and taking and
concatenating all the String values from a different column (F) in rows
with the same key value into one single cell - in the row not deleted
after the duplicate removal.

I'm using CPearson's code for removing duplicates with my own (messy)
additions to try and combine the cell values but it doesn't work
properly. The concatenation part seems to work, but it puts the
concatenated string into the wrong cell (usually beneath). Any
suggestions would be much appreciated.

Code:

Sub DelDuplicates()

Dim rowNumber As Long
Dim toCompany As String
Dim firstTime As Boolean
Dim currentRow As Integer

firstTime = True
currentRow = Selection(Selection.Cells.Count).Row

ColNum = Selection(1).Column
For RowNdx = Selection(Selection.Cells.Count).Row To _
Selection(1).Row + 1 Step -1

If Cells(RowNdx, ColNum).Value = Cells(RowNdx - 1, ColNum).Value
Then
toCompany = toCompany & ", " & Range("F" &
currentRow).Value
Cells(RowNdx, ColNum).EntireRow.Delete
Else
If firstTime = True Then
rowNumber = currentRow
toCompany = Range("F" & currentRow).Value
firstTime = False
Else
rowNumber = currentRow
Range("F" & rowNumber + 1).Value = toCompany
toCompany = Range("F" & currentRow).Value
End If
End If
currentRow = currentRow - 1

Next RowNdx
End Sub


Tom Ogilvy

Removing duplicate rows and combining unique data
 
Sub DelDuplicates()

Dim rowNumber As Long
Dim toCompany As String
Dim firstTime As Boolean
Dim currentRow As Integer

firstTime = True
currentRow = Selection(Selection.Cells.Count).Row

ColNum = Selection(1).Column
For RowNdx = Selection(Selection.Cells.Count).Row To _
Selection(1).Row + 1 Step -1
If Cells(RowNdx, ColNum).Value = _
Cells(RowNdx - 1, ColNum).Value Then
toCompany = toCompany & ", " & Range("F" & RowNdx).Value
Cells(RowNdx, ColNum).EntireRow.Delete
Else
If Len(toCompany) 0 Then
Cells(RowNdx, "F") = Right(toCompany, _
Len(toCompany) - 1) & ", " & Cells(RowNdx, "F")
toCompany = ""
End If
End If
Next RowNdx
End Sub

--
Regards,
Tom Ogilvy

wrote in message
oups.com...
Hi,

I'm pretty new to Excel VBA programming. I'm trying to make a
subroutine that will iterate through the rows removing all duplicate
rows (using a column A for the unique cell values) and taking and
concatenating all the String values from a different column (F) in rows
with the same key value into one single cell - in the row not deleted
after the duplicate removal.

I'm using CPearson's code for removing duplicates with my own (messy)
additions to try and combine the cell values but it doesn't work
properly. The concatenation part seems to work, but it puts the
concatenated string into the wrong cell (usually beneath). Any
suggestions would be much appreciated.

Code:

Sub DelDuplicates()

Dim rowNumber As Long
Dim toCompany As String
Dim firstTime As Boolean
Dim currentRow As Integer

firstTime = True
currentRow = Selection(Selection.Cells.Count).Row

ColNum = Selection(1).Column
For RowNdx = Selection(Selection.Cells.Count).Row To _
Selection(1).Row + 1 Step -1

If Cells(RowNdx, ColNum).Value = Cells(RowNdx - 1, ColNum).Value
Then
toCompany = toCompany & ", " & Range("F" &
currentRow).Value
Cells(RowNdx, ColNum).EntireRow.Delete
Else
If firstTime = True Then
rowNumber = currentRow
toCompany = Range("F" & currentRow).Value
firstTime = False
Else
rowNumber = currentRow
Range("F" & rowNumber + 1).Value = toCompany
toCompany = Range("F" & currentRow).Value
End If
End If
currentRow = currentRow - 1

Next RowNdx
End Sub




[email protected]

Removing duplicate rows and combining unique data
 
Thanks. It works great!

Regards,
Chris



All times are GMT +1. The time now is 02:02 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com