How to set up Excel VBA Loop for vlookup
I have a dashboard (image below) where I manually add entries. Then there is a log (image below) where all entries are recorded with the help of IF
and Vlookup
functions.
I need a code so so that every output cell in the log finds through all the entries in the dashboard and gives the answer. I think loop for vlookup
will be used.
[Edit]
Consider the Dasboard table as a discrete table where manually entries are posted.
Consider log table as a continues table where record of every hour for each date is kept. The entries from Dashboard table get posted to the log table. New Image attached New Image
I have entered this function in output column in the log table:
=IF( AND(H3=$B$3,I3>= $C$3,I3<$D$3) ,$E$3,0) + IF(AND(H3=$B$4,I3>=
$C$4,I3<$D$4) ,$E$4,0) + IF (AND(H3=$B$5,I3>= $C$5,I3<$D$5), $E$5,0)
This works fine for me for plotting the entries but the problem is for every row in the dashboard i have to add a new IF-And function in the above. so for example if i want to add the 4th row of dashboard to be sync with the log ill have to add
+If(AND(H3=$B$6,I3>=$C$6,I3<$D$6),$E$6,0)
I want every row in the dashboard to add automatically somehow with a loop like:
i = variable
= If (AND(H3=$B$i,I3>= $C$i,I3<$D$i), $E$i,0)
Only one i will be greater than 0 while the rest will be zero. so the function should return me the sum of all i rather than just the last iteration.
excel vba loops
add a comment |
I have a dashboard (image below) where I manually add entries. Then there is a log (image below) where all entries are recorded with the help of IF
and Vlookup
functions.
I need a code so so that every output cell in the log finds through all the entries in the dashboard and gives the answer. I think loop for vlookup
will be used.
[Edit]
Consider the Dasboard table as a discrete table where manually entries are posted.
Consider log table as a continues table where record of every hour for each date is kept. The entries from Dashboard table get posted to the log table. New Image attached New Image
I have entered this function in output column in the log table:
=IF( AND(H3=$B$3,I3>= $C$3,I3<$D$3) ,$E$3,0) + IF(AND(H3=$B$4,I3>=
$C$4,I3<$D$4) ,$E$4,0) + IF (AND(H3=$B$5,I3>= $C$5,I3<$D$5), $E$5,0)
This works fine for me for plotting the entries but the problem is for every row in the dashboard i have to add a new IF-And function in the above. so for example if i want to add the 4th row of dashboard to be sync with the log ill have to add
+If(AND(H3=$B$6,I3>=$C$6,I3<$D$6),$E$6,0)
I want every row in the dashboard to add automatically somehow with a loop like:
i = variable
= If (AND(H3=$B$i,I3>= $C$i,I3<$D$i), $E$i,0)
Only one i will be greater than 0 while the rest will be zero. so the function should return me the sum of all i rather than just the last iteration.
excel vba loops
2
Welcome to Stack Overflow. Please note that because this is no free code writing service it is necessary to show either what you have tried so far and where you got stuck or errors (by showing your code) or at least to show what you have researched and the effort you made. Otherwise it is just asking us to do all the work for you. Reading How to Ask might help you to improve your question. see stackoverflow.com/help/how-to-ask
– Solar Mike
Nov 12 at 9:04
Potentially useful references:WorksheetFunction.Vlookup
orWorksheetFunction.Match
– Chronocidal
Nov 12 at 10:05
add a comment |
I have a dashboard (image below) where I manually add entries. Then there is a log (image below) where all entries are recorded with the help of IF
and Vlookup
functions.
I need a code so so that every output cell in the log finds through all the entries in the dashboard and gives the answer. I think loop for vlookup
will be used.
[Edit]
Consider the Dasboard table as a discrete table where manually entries are posted.
Consider log table as a continues table where record of every hour for each date is kept. The entries from Dashboard table get posted to the log table. New Image attached New Image
I have entered this function in output column in the log table:
=IF( AND(H3=$B$3,I3>= $C$3,I3<$D$3) ,$E$3,0) + IF(AND(H3=$B$4,I3>=
$C$4,I3<$D$4) ,$E$4,0) + IF (AND(H3=$B$5,I3>= $C$5,I3<$D$5), $E$5,0)
This works fine for me for plotting the entries but the problem is for every row in the dashboard i have to add a new IF-And function in the above. so for example if i want to add the 4th row of dashboard to be sync with the log ill have to add
+If(AND(H3=$B$6,I3>=$C$6,I3<$D$6),$E$6,0)
I want every row in the dashboard to add automatically somehow with a loop like:
i = variable
= If (AND(H3=$B$i,I3>= $C$i,I3<$D$i), $E$i,0)
Only one i will be greater than 0 while the rest will be zero. so the function should return me the sum of all i rather than just the last iteration.
excel vba loops
I have a dashboard (image below) where I manually add entries. Then there is a log (image below) where all entries are recorded with the help of IF
and Vlookup
functions.
I need a code so so that every output cell in the log finds through all the entries in the dashboard and gives the answer. I think loop for vlookup
will be used.
[Edit]
Consider the Dasboard table as a discrete table where manually entries are posted.
Consider log table as a continues table where record of every hour for each date is kept. The entries from Dashboard table get posted to the log table. New Image attached New Image
I have entered this function in output column in the log table:
=IF( AND(H3=$B$3,I3>= $C$3,I3<$D$3) ,$E$3,0) + IF(AND(H3=$B$4,I3>=
$C$4,I3<$D$4) ,$E$4,0) + IF (AND(H3=$B$5,I3>= $C$5,I3<$D$5), $E$5,0)
This works fine for me for plotting the entries but the problem is for every row in the dashboard i have to add a new IF-And function in the above. so for example if i want to add the 4th row of dashboard to be sync with the log ill have to add
+If(AND(H3=$B$6,I3>=$C$6,I3<$D$6),$E$6,0)
I want every row in the dashboard to add automatically somehow with a loop like:
i = variable
= If (AND(H3=$B$i,I3>= $C$i,I3<$D$i), $E$i,0)
Only one i will be greater than 0 while the rest will be zero. so the function should return me the sum of all i rather than just the last iteration.
excel vba loops
excel vba loops
edited Nov 13 at 10:01
asked Nov 12 at 8:52
Osama Malik
135
135
2
Welcome to Stack Overflow. Please note that because this is no free code writing service it is necessary to show either what you have tried so far and where you got stuck or errors (by showing your code) or at least to show what you have researched and the effort you made. Otherwise it is just asking us to do all the work for you. Reading How to Ask might help you to improve your question. see stackoverflow.com/help/how-to-ask
– Solar Mike
Nov 12 at 9:04
Potentially useful references:WorksheetFunction.Vlookup
orWorksheetFunction.Match
– Chronocidal
Nov 12 at 10:05
add a comment |
2
Welcome to Stack Overflow. Please note that because this is no free code writing service it is necessary to show either what you have tried so far and where you got stuck or errors (by showing your code) or at least to show what you have researched and the effort you made. Otherwise it is just asking us to do all the work for you. Reading How to Ask might help you to improve your question. see stackoverflow.com/help/how-to-ask
– Solar Mike
Nov 12 at 9:04
Potentially useful references:WorksheetFunction.Vlookup
orWorksheetFunction.Match
– Chronocidal
Nov 12 at 10:05
2
2
Welcome to Stack Overflow. Please note that because this is no free code writing service it is necessary to show either what you have tried so far and where you got stuck or errors (by showing your code) or at least to show what you have researched and the effort you made. Otherwise it is just asking us to do all the work for you. Reading How to Ask might help you to improve your question. see stackoverflow.com/help/how-to-ask
– Solar Mike
Nov 12 at 9:04
Welcome to Stack Overflow. Please note that because this is no free code writing service it is necessary to show either what you have tried so far and where you got stuck or errors (by showing your code) or at least to show what you have researched and the effort you made. Otherwise it is just asking us to do all the work for you. Reading How to Ask might help you to improve your question. see stackoverflow.com/help/how-to-ask
– Solar Mike
Nov 12 at 9:04
Potentially useful references:
WorksheetFunction.Vlookup
or WorksheetFunction.Match
– Chronocidal
Nov 12 at 10:05
Potentially useful references:
WorksheetFunction.Vlookup
or WorksheetFunction.Match
– Chronocidal
Nov 12 at 10:05
add a comment |
1 Answer
1
active
oldest
votes
Maybe just filldown the formula manually? if insist with macro, something like
Sub test()
Range("K3").Value = "X"
Range("K3:K10").FillDown
End Sub
replace "X" with your formula, keep the " "
replace K10 with how far down you want
----edit----
let me break down below for you,
match(H3,B:B,0), will find the correct row in B that = H, in H3 case it finds B3
INDEX(B:E,MATCH(H3,B:B,0),2) -> now it find B3, index let you find C3 (notice the 2,3,4 in later codes, it means the column from B3)
and (I3>=...,J3>=...)now we got both start and end time, we use I and J to compare
if 3. is true, lookup the output column, else 0
=IF(AND(I3>=INDEX(B:E,MATCH(H3,B:B,0),2),J3>=INDEX(B:E,MATCH(H3,B:B,0),3)),INDEX(B:E,MATCH(H3,B:B,0),4),0)
What should i define X for?
– Osama Malik
Nov 12 at 10:59
i am using this formula =IF(AND(H3=$B$3,I3>=$C$3,J3<=$D$3),VLOOKUP(H3,$B$3:$E$8,4,FALSE)) in output column in the log. If i drag it down manually the formula wont check the every entry in the dashboard. To check every entry i have to manually write the formula for every entry. This is ok in 4 entries or less but if there are 10 or more entries it is not possible to write that long formula.
– Osama Malik
Nov 12 at 11:01
ok, got your issue, you will need to find the correct row to reference in your first part, this make it more complicate, will amend the code
– Osman Wong
Nov 13 at 1:46
Thanks Osman i got you. But there is one problem with this. What if there are more entries for one date? For example for date 22-11-18 there are two entries with different times. The formula you suggested will only take into account the first entry.
– Osama Malik
Nov 13 at 5:21
how do you decide which entries to take in that case?
– Osman Wong
Nov 13 at 8:11
|
show 3 more comments
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%2f53258620%2fhow-to-set-up-excel-vba-loop-for-vlookup%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
Maybe just filldown the formula manually? if insist with macro, something like
Sub test()
Range("K3").Value = "X"
Range("K3:K10").FillDown
End Sub
replace "X" with your formula, keep the " "
replace K10 with how far down you want
----edit----
let me break down below for you,
match(H3,B:B,0), will find the correct row in B that = H, in H3 case it finds B3
INDEX(B:E,MATCH(H3,B:B,0),2) -> now it find B3, index let you find C3 (notice the 2,3,4 in later codes, it means the column from B3)
and (I3>=...,J3>=...)now we got both start and end time, we use I and J to compare
if 3. is true, lookup the output column, else 0
=IF(AND(I3>=INDEX(B:E,MATCH(H3,B:B,0),2),J3>=INDEX(B:E,MATCH(H3,B:B,0),3)),INDEX(B:E,MATCH(H3,B:B,0),4),0)
What should i define X for?
– Osama Malik
Nov 12 at 10:59
i am using this formula =IF(AND(H3=$B$3,I3>=$C$3,J3<=$D$3),VLOOKUP(H3,$B$3:$E$8,4,FALSE)) in output column in the log. If i drag it down manually the formula wont check the every entry in the dashboard. To check every entry i have to manually write the formula for every entry. This is ok in 4 entries or less but if there are 10 or more entries it is not possible to write that long formula.
– Osama Malik
Nov 12 at 11:01
ok, got your issue, you will need to find the correct row to reference in your first part, this make it more complicate, will amend the code
– Osman Wong
Nov 13 at 1:46
Thanks Osman i got you. But there is one problem with this. What if there are more entries for one date? For example for date 22-11-18 there are two entries with different times. The formula you suggested will only take into account the first entry.
– Osama Malik
Nov 13 at 5:21
how do you decide which entries to take in that case?
– Osman Wong
Nov 13 at 8:11
|
show 3 more comments
Maybe just filldown the formula manually? if insist with macro, something like
Sub test()
Range("K3").Value = "X"
Range("K3:K10").FillDown
End Sub
replace "X" with your formula, keep the " "
replace K10 with how far down you want
----edit----
let me break down below for you,
match(H3,B:B,0), will find the correct row in B that = H, in H3 case it finds B3
INDEX(B:E,MATCH(H3,B:B,0),2) -> now it find B3, index let you find C3 (notice the 2,3,4 in later codes, it means the column from B3)
and (I3>=...,J3>=...)now we got both start and end time, we use I and J to compare
if 3. is true, lookup the output column, else 0
=IF(AND(I3>=INDEX(B:E,MATCH(H3,B:B,0),2),J3>=INDEX(B:E,MATCH(H3,B:B,0),3)),INDEX(B:E,MATCH(H3,B:B,0),4),0)
What should i define X for?
– Osama Malik
Nov 12 at 10:59
i am using this formula =IF(AND(H3=$B$3,I3>=$C$3,J3<=$D$3),VLOOKUP(H3,$B$3:$E$8,4,FALSE)) in output column in the log. If i drag it down manually the formula wont check the every entry in the dashboard. To check every entry i have to manually write the formula for every entry. This is ok in 4 entries or less but if there are 10 or more entries it is not possible to write that long formula.
– Osama Malik
Nov 12 at 11:01
ok, got your issue, you will need to find the correct row to reference in your first part, this make it more complicate, will amend the code
– Osman Wong
Nov 13 at 1:46
Thanks Osman i got you. But there is one problem with this. What if there are more entries for one date? For example for date 22-11-18 there are two entries with different times. The formula you suggested will only take into account the first entry.
– Osama Malik
Nov 13 at 5:21
how do you decide which entries to take in that case?
– Osman Wong
Nov 13 at 8:11
|
show 3 more comments
Maybe just filldown the formula manually? if insist with macro, something like
Sub test()
Range("K3").Value = "X"
Range("K3:K10").FillDown
End Sub
replace "X" with your formula, keep the " "
replace K10 with how far down you want
----edit----
let me break down below for you,
match(H3,B:B,0), will find the correct row in B that = H, in H3 case it finds B3
INDEX(B:E,MATCH(H3,B:B,0),2) -> now it find B3, index let you find C3 (notice the 2,3,4 in later codes, it means the column from B3)
and (I3>=...,J3>=...)now we got both start and end time, we use I and J to compare
if 3. is true, lookup the output column, else 0
=IF(AND(I3>=INDEX(B:E,MATCH(H3,B:B,0),2),J3>=INDEX(B:E,MATCH(H3,B:B,0),3)),INDEX(B:E,MATCH(H3,B:B,0),4),0)
Maybe just filldown the formula manually? if insist with macro, something like
Sub test()
Range("K3").Value = "X"
Range("K3:K10").FillDown
End Sub
replace "X" with your formula, keep the " "
replace K10 with how far down you want
----edit----
let me break down below for you,
match(H3,B:B,0), will find the correct row in B that = H, in H3 case it finds B3
INDEX(B:E,MATCH(H3,B:B,0),2) -> now it find B3, index let you find C3 (notice the 2,3,4 in later codes, it means the column from B3)
and (I3>=...,J3>=...)now we got both start and end time, we use I and J to compare
if 3. is true, lookup the output column, else 0
=IF(AND(I3>=INDEX(B:E,MATCH(H3,B:B,0),2),J3>=INDEX(B:E,MATCH(H3,B:B,0),3)),INDEX(B:E,MATCH(H3,B:B,0),4),0)
edited Nov 13 at 1:58
answered Nov 12 at 9:53
Osman Wong
1037
1037
What should i define X for?
– Osama Malik
Nov 12 at 10:59
i am using this formula =IF(AND(H3=$B$3,I3>=$C$3,J3<=$D$3),VLOOKUP(H3,$B$3:$E$8,4,FALSE)) in output column in the log. If i drag it down manually the formula wont check the every entry in the dashboard. To check every entry i have to manually write the formula for every entry. This is ok in 4 entries or less but if there are 10 or more entries it is not possible to write that long formula.
– Osama Malik
Nov 12 at 11:01
ok, got your issue, you will need to find the correct row to reference in your first part, this make it more complicate, will amend the code
– Osman Wong
Nov 13 at 1:46
Thanks Osman i got you. But there is one problem with this. What if there are more entries for one date? For example for date 22-11-18 there are two entries with different times. The formula you suggested will only take into account the first entry.
– Osama Malik
Nov 13 at 5:21
how do you decide which entries to take in that case?
– Osman Wong
Nov 13 at 8:11
|
show 3 more comments
What should i define X for?
– Osama Malik
Nov 12 at 10:59
i am using this formula =IF(AND(H3=$B$3,I3>=$C$3,J3<=$D$3),VLOOKUP(H3,$B$3:$E$8,4,FALSE)) in output column in the log. If i drag it down manually the formula wont check the every entry in the dashboard. To check every entry i have to manually write the formula for every entry. This is ok in 4 entries or less but if there are 10 or more entries it is not possible to write that long formula.
– Osama Malik
Nov 12 at 11:01
ok, got your issue, you will need to find the correct row to reference in your first part, this make it more complicate, will amend the code
– Osman Wong
Nov 13 at 1:46
Thanks Osman i got you. But there is one problem with this. What if there are more entries for one date? For example for date 22-11-18 there are two entries with different times. The formula you suggested will only take into account the first entry.
– Osama Malik
Nov 13 at 5:21
how do you decide which entries to take in that case?
– Osman Wong
Nov 13 at 8:11
What should i define X for?
– Osama Malik
Nov 12 at 10:59
What should i define X for?
– Osama Malik
Nov 12 at 10:59
i am using this formula =IF(AND(H3=$B$3,I3>=$C$3,J3<=$D$3),VLOOKUP(H3,$B$3:$E$8,4,FALSE)) in output column in the log. If i drag it down manually the formula wont check the every entry in the dashboard. To check every entry i have to manually write the formula for every entry. This is ok in 4 entries or less but if there are 10 or more entries it is not possible to write that long formula.
– Osama Malik
Nov 12 at 11:01
i am using this formula =IF(AND(H3=$B$3,I3>=$C$3,J3<=$D$3),VLOOKUP(H3,$B$3:$E$8,4,FALSE)) in output column in the log. If i drag it down manually the formula wont check the every entry in the dashboard. To check every entry i have to manually write the formula for every entry. This is ok in 4 entries or less but if there are 10 or more entries it is not possible to write that long formula.
– Osama Malik
Nov 12 at 11:01
ok, got your issue, you will need to find the correct row to reference in your first part, this make it more complicate, will amend the code
– Osman Wong
Nov 13 at 1:46
ok, got your issue, you will need to find the correct row to reference in your first part, this make it more complicate, will amend the code
– Osman Wong
Nov 13 at 1:46
Thanks Osman i got you. But there is one problem with this. What if there are more entries for one date? For example for date 22-11-18 there are two entries with different times. The formula you suggested will only take into account the first entry.
– Osama Malik
Nov 13 at 5:21
Thanks Osman i got you. But there is one problem with this. What if there are more entries for one date? For example for date 22-11-18 there are two entries with different times. The formula you suggested will only take into account the first entry.
– Osama Malik
Nov 13 at 5:21
how do you decide which entries to take in that case?
– Osman Wong
Nov 13 at 8:11
how do you decide which entries to take in that case?
– Osman Wong
Nov 13 at 8:11
|
show 3 more comments
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%2f53258620%2fhow-to-set-up-excel-vba-loop-for-vlookup%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
2
Welcome to Stack Overflow. Please note that because this is no free code writing service it is necessary to show either what you have tried so far and where you got stuck or errors (by showing your code) or at least to show what you have researched and the effort you made. Otherwise it is just asking us to do all the work for you. Reading How to Ask might help you to improve your question. see stackoverflow.com/help/how-to-ask
– Solar Mike
Nov 12 at 9:04
Potentially useful references:
WorksheetFunction.Vlookup
orWorksheetFunction.Match
– Chronocidal
Nov 12 at 10:05