VBA - Adding unique values to existing array
Suppose I have two separate columns/arrays.
Column A have 100 rows, each with 20-length string
A(1)=daskjdkjasdj
A(2)=asdsadgggggg
A(3)=dsadpoeeeeee
Column B is a column with 200 rows, some of the rows have the same values as mentioned above, I would like to add unique one.
I want to add new identifier only if it is not part of column A.
(I forgot to mention that for each row with identifier there are 20 other columns with data that should be also added. My apologies)
I want to add to data A rows from Data B where identifier is not in data A.
As result i would get
I was doing it with simply:
for i = 1 to lastrow_column_b
g=0
for j=1 to ubound(column_a)
if column_a(j)=cells(i) then g=1
goto skip
next
skip:
if g = 0 then "do something, add to column_a"
next
But i believe there is more efficient way for doing that
arrays excel vba unique
add a comment |
Suppose I have two separate columns/arrays.
Column A have 100 rows, each with 20-length string
A(1)=daskjdkjasdj
A(2)=asdsadgggggg
A(3)=dsadpoeeeeee
Column B is a column with 200 rows, some of the rows have the same values as mentioned above, I would like to add unique one.
I want to add new identifier only if it is not part of column A.
(I forgot to mention that for each row with identifier there are 20 other columns with data that should be also added. My apologies)
I want to add to data A rows from Data B where identifier is not in data A.
As result i would get
I was doing it with simply:
for i = 1 to lastrow_column_b
g=0
for j=1 to ubound(column_a)
if column_a(j)=cells(i) then g=1
goto skip
next
skip:
if g = 0 then "do something, add to column_a"
next
But i believe there is more efficient way for doing that
arrays excel vba unique
4
Read column A into aScripting.Dictionary
. Then go down column B and add items that don't already exist. The union of the 2 sets will be the.Keys
.
– Comintern
Nov 20 at 22:04
1
This really needs representative sample data and expected results.
– tigeravatar
Nov 20 at 22:30
add a comment |
Suppose I have two separate columns/arrays.
Column A have 100 rows, each with 20-length string
A(1)=daskjdkjasdj
A(2)=asdsadgggggg
A(3)=dsadpoeeeeee
Column B is a column with 200 rows, some of the rows have the same values as mentioned above, I would like to add unique one.
I want to add new identifier only if it is not part of column A.
(I forgot to mention that for each row with identifier there are 20 other columns with data that should be also added. My apologies)
I want to add to data A rows from Data B where identifier is not in data A.
As result i would get
I was doing it with simply:
for i = 1 to lastrow_column_b
g=0
for j=1 to ubound(column_a)
if column_a(j)=cells(i) then g=1
goto skip
next
skip:
if g = 0 then "do something, add to column_a"
next
But i believe there is more efficient way for doing that
arrays excel vba unique
Suppose I have two separate columns/arrays.
Column A have 100 rows, each with 20-length string
A(1)=daskjdkjasdj
A(2)=asdsadgggggg
A(3)=dsadpoeeeeee
Column B is a column with 200 rows, some of the rows have the same values as mentioned above, I would like to add unique one.
I want to add new identifier only if it is not part of column A.
(I forgot to mention that for each row with identifier there are 20 other columns with data that should be also added. My apologies)
I want to add to data A rows from Data B where identifier is not in data A.
As result i would get
I was doing it with simply:
for i = 1 to lastrow_column_b
g=0
for j=1 to ubound(column_a)
if column_a(j)=cells(i) then g=1
goto skip
next
skip:
if g = 0 then "do something, add to column_a"
next
But i believe there is more efficient way for doing that
arrays excel vba unique
arrays excel vba unique
edited Nov 21 at 7:33
StoneGiant
887416
887416
asked Nov 20 at 22:01
MrNice
12
12
4
Read column A into aScripting.Dictionary
. Then go down column B and add items that don't already exist. The union of the 2 sets will be the.Keys
.
– Comintern
Nov 20 at 22:04
1
This really needs representative sample data and expected results.
– tigeravatar
Nov 20 at 22:30
add a comment |
4
Read column A into aScripting.Dictionary
. Then go down column B and add items that don't already exist. The union of the 2 sets will be the.Keys
.
– Comintern
Nov 20 at 22:04
1
This really needs representative sample data and expected results.
– tigeravatar
Nov 20 at 22:30
4
4
Read column A into a
Scripting.Dictionary
. Then go down column B and add items that don't already exist. The union of the 2 sets will be the .Keys
.– Comintern
Nov 20 at 22:04
Read column A into a
Scripting.Dictionary
. Then go down column B and add items that don't already exist. The union of the 2 sets will be the .Keys
.– Comintern
Nov 20 at 22:04
1
1
This really needs representative sample data and expected results.
– tigeravatar
Nov 20 at 22:30
This really needs representative sample data and expected results.
– tigeravatar
Nov 20 at 22:30
add a comment |
1 Answer
1
active
oldest
votes
Code below should put you on the right track. The first loop adds all entries from columns A to an array. The second loop adds only new entries from column C. The output is pasted into column E. You should be able to change the references to suit your needs. Hope that helps you with your task.
Sub UpdateColumn()
Dim objDict As Object
Dim key As Variant,
' Create new collection
Set objDict = CreateObject("System.Collections.ArrayList")
With ThisWorkbook.ActiveSheet
With .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
' Read data of column A into array
' Does not check for duplicates
For Each key In .Value
objDict.Add key
Next
End With
With .Range("C2", .Range("C" & .Rows.Count).End(xlUp))
' Read data of column B into array, add new entries only
For Each key In .Value
If Not objDict.Contains(key) Then objDict.Add key
Next
End With
.Range("E2").Resize(objDict.Count) = Application.Transpose(objDict.toarray())
End With
End Sub
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53402251%2fvba-adding-unique-values-to-existing-array%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Code below should put you on the right track. The first loop adds all entries from columns A to an array. The second loop adds only new entries from column C. The output is pasted into column E. You should be able to change the references to suit your needs. Hope that helps you with your task.
Sub UpdateColumn()
Dim objDict As Object
Dim key As Variant,
' Create new collection
Set objDict = CreateObject("System.Collections.ArrayList")
With ThisWorkbook.ActiveSheet
With .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
' Read data of column A into array
' Does not check for duplicates
For Each key In .Value
objDict.Add key
Next
End With
With .Range("C2", .Range("C" & .Rows.Count).End(xlUp))
' Read data of column B into array, add new entries only
For Each key In .Value
If Not objDict.Contains(key) Then objDict.Add key
Next
End With
.Range("E2").Resize(objDict.Count) = Application.Transpose(objDict.toarray())
End With
End Sub
add a comment |
Code below should put you on the right track. The first loop adds all entries from columns A to an array. The second loop adds only new entries from column C. The output is pasted into column E. You should be able to change the references to suit your needs. Hope that helps you with your task.
Sub UpdateColumn()
Dim objDict As Object
Dim key As Variant,
' Create new collection
Set objDict = CreateObject("System.Collections.ArrayList")
With ThisWorkbook.ActiveSheet
With .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
' Read data of column A into array
' Does not check for duplicates
For Each key In .Value
objDict.Add key
Next
End With
With .Range("C2", .Range("C" & .Rows.Count).End(xlUp))
' Read data of column B into array, add new entries only
For Each key In .Value
If Not objDict.Contains(key) Then objDict.Add key
Next
End With
.Range("E2").Resize(objDict.Count) = Application.Transpose(objDict.toarray())
End With
End Sub
add a comment |
Code below should put you on the right track. The first loop adds all entries from columns A to an array. The second loop adds only new entries from column C. The output is pasted into column E. You should be able to change the references to suit your needs. Hope that helps you with your task.
Sub UpdateColumn()
Dim objDict As Object
Dim key As Variant,
' Create new collection
Set objDict = CreateObject("System.Collections.ArrayList")
With ThisWorkbook.ActiveSheet
With .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
' Read data of column A into array
' Does not check for duplicates
For Each key In .Value
objDict.Add key
Next
End With
With .Range("C2", .Range("C" & .Rows.Count).End(xlUp))
' Read data of column B into array, add new entries only
For Each key In .Value
If Not objDict.Contains(key) Then objDict.Add key
Next
End With
.Range("E2").Resize(objDict.Count) = Application.Transpose(objDict.toarray())
End With
End Sub
Code below should put you on the right track. The first loop adds all entries from columns A to an array. The second loop adds only new entries from column C. The output is pasted into column E. You should be able to change the references to suit your needs. Hope that helps you with your task.
Sub UpdateColumn()
Dim objDict As Object
Dim key As Variant,
' Create new collection
Set objDict = CreateObject("System.Collections.ArrayList")
With ThisWorkbook.ActiveSheet
With .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
' Read data of column A into array
' Does not check for duplicates
For Each key In .Value
objDict.Add key
Next
End With
With .Range("C2", .Range("C" & .Rows.Count).End(xlUp))
' Read data of column B into array, add new entries only
For Each key In .Value
If Not objDict.Contains(key) Then objDict.Add key
Next
End With
.Range("E2").Resize(objDict.Count) = Application.Transpose(objDict.toarray())
End With
End Sub
answered Nov 21 at 3:12
Michal Rosa
1,3061814
1,3061814
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53402251%2fvba-adding-unique-values-to-existing-array%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
4
Read column A into a
Scripting.Dictionary
. Then go down column B and add items that don't already exist. The union of the 2 sets will be the.Keys
.– Comintern
Nov 20 at 22:04
1
This really needs representative sample data and expected results.
– tigeravatar
Nov 20 at 22:30