ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Append One Array to Another, and Consolidate (https://www.excelbanter.com/excel-programming/372890-append-one-array-another-consolidate.html)

Alan Beban

Append One Array to Another, and Consolidate
 
I ran it with the new one. The result was

29 30 31 11
5 1 7 3
9 10 11 12
1 2 3 4
21 9 23 24
25 26 10 28

I.e., it simply merged the two arrays with the rows rearranged and
eliminated no duplicates.

Did you test it before reposting?

Alan Beban

Albert wrote:
Check out the final 5 lines of the procedure...
I replaced this (old):

ReDim ConsolidatedArray(1 To x - 1, 1 To UBound(Array2, 2))
For x = 1 To UBound(ConsolidatedArray, 1)
For Y = 1 To UBound(ConsolidatedArray, 2)
ConsolidatedArray(x, Y) = Array3(x, Y)
Next Y
Next x

with this (new):

Dim ThereAreDuplicates As Boolean
ThereAreDuplicates = False
If Not x = UBound(Array3, 1) Then
ThereAreDuplicates = True
ElseIf x = UBound(Array3, 1) Then
If Array3(UBound(Array3, 1), UBound(Array3, 2)) = "REPETIDO" Then
ThereAreDuplicates = True
End If
End If
If ThereAreDuplicates = True Then
ReDim ConsolidatedArray(1 To x - 1, 1 To UBound(Array2, 2))
ElseIf ThereAreDuplicates = False Then
ReDim ConsolidatedArray(1 To x, 1 To UBound(Array2, 2))
End If
For x = 1 To UBound(ConsolidatedArray, 1)
For Y = 1 To UBound(ConsolidatedArray, 2)
ConsolidatedArray(x, Y) = Array3(x, Y)
Next Y
Next x


Albert

Append One Array to Another, and Consolidate
 
Sure I tested it.
Just re-tested it.
Works great here.

"Alan Beban" wrote:

I ran it with the new one. The result was

29 30 31 11
5 1 7 3
9 10 11 12
1 2 3 4
21 9 23 24
25 26 10 28

I.e., it simply merged the two arrays with the rows rearranged and
eliminated no duplicates.

Did you test it before reposting?

Alan Beban

Albert wrote:
Check out the final 5 lines of the procedure...
I replaced this (old):

ReDim ConsolidatedArray(1 To x - 1, 1 To UBound(Array2, 2))
For x = 1 To UBound(ConsolidatedArray, 1)
For Y = 1 To UBound(ConsolidatedArray, 2)
ConsolidatedArray(x, Y) = Array3(x, Y)
Next Y
Next x

with this (new):

Dim ThereAreDuplicates As Boolean
ThereAreDuplicates = False
If Not x = UBound(Array3, 1) Then
ThereAreDuplicates = True
ElseIf x = UBound(Array3, 1) Then
If Array3(UBound(Array3, 1), UBound(Array3, 2)) = "REPETIDO" Then
ThereAreDuplicates = True
End If
End If
If ThereAreDuplicates = True Then
ReDim ConsolidatedArray(1 To x - 1, 1 To UBound(Array2, 2))
ElseIf ThereAreDuplicates = False Then
ReDim ConsolidatedArray(1 To x, 1 To UBound(Array2, 2))
End If
For x = 1 To UBound(ConsolidatedArray, 1)
For Y = 1 To UBound(ConsolidatedArray, 2)
ConsolidatedArray(x, Y) = Array3(x, Y)
Next Y
Next x



Alan Beban

Append One Array to Another, and Consolidate
 
Albert wrote:
Sure I tested it.
Just re-tested it.
Works great here.


I ran the programs with ranges A1:D3 and A5:D7, and put the output in
A11:A16.

The first had
1 2 3 4
5 1 7 3
9 10 11 12

The second had
21 9 21 24
25 26 10 28
29 30 31 11

Can you run it on that test data and report your results.

Thanks,
Alan Beban

Albert

Append One Array to Another, and Consolidate
 
29 30 31 11
5 1 7 3
9 10 11 12
1 2 3 4
21 9 21 24
25 26 10 28

Alan Beban

Append One Array to Another, and Consolidate
 
Albert wrote:
29 30 31 11
5 1 7 3
9 10 11 12
1 2 3 4
21 9 21 24
25 26 10 28


I thought duplicates were supposed to be eliminated from the
consolidated array!???

Alan Beban

Alan Beban

Append One Array to Another, and Consolidate
 
Albert wrote:
29 30 31 11
5 1 7 3
9 10 11 12
1 2 3 4
21 9 21 24
25 26 10 28


Oh, I get it. Although the original poster mentioned consolidating
duplicate "elements", your algorithm consolidates duplicate rows.

Alan Beban

Albert

Append One Array to Another, and Consolidate
 
Yeah, I guess we should have gotten that clear from the start.

"Alan Beban" wrote:

Albert wrote:
29 30 31 11
5 1 7 3
9 10 11 12
1 2 3 4
21 9 21 24
25 26 10 28


Oh, I get it. Although the original poster mentioned consolidating
duplicate "elements", your algorithm consolidates duplicate rows.

Alan Beban


Alan Beban

Append One Array to Another, and Consolidate
 
Albert,

If the functions in the freely downloadable file at
http://home.pacbell.net/beban were available to your workbook, here is
an example of another way the task might be accomplished (variables are
not declared):

Sub CallDeleteDuplicateRows()
arr1 = Range("A1:D3")
arr2 = Range("A5:D7")
iRows = UBound(arr1) - LBound(arr1) + 1 _
+ UBound(arr2) - LBound(arr2) + 1
iCols = UBound(arr1, 2) - LBound(arr1, 2) + 1
arr = MakeArray(arr1, arr2, 1)
arr = ArrayReshape(arr, iRows, iCols)
Range("A21").Resize(UBound(arr) - LBound(arr) + 1, _
UBound(arr, 2) - LBound(arr, 2) + 1).Value = _
DeleteDuplicateRows(arr)
End Sub

Function DeleteDuplicateRows(arr)
For i = UBound(arr) To 2 Step -1
For j = i To 2 Step -1
If RowsEqual(Application.Index(arr, i, 0), _
Application.Index(arr, j - 1, 0)) Then
arr = DeleteRow(arr, i)
Exit For
End If
Next j
Next i
DeleteDuplicateRows = arr
End Function


Albert wrote:
Yeah, I guess we should have gotten that clear from the start.

"Alan Beban" wrote:

Oh, I get it. Although the original poster mentioned consolidating
duplicate "elements", your algorithm consolidates duplicate rows.

Alan Beban



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

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