ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Vba code (https://www.excelbanter.com/excel-programming/285955-vba-code.html)

John[_69_]

Vba code
 
Hello,
I have a following code, which I would like to
make compact using something like
'Dim iRow As Long
'Dim icol As Long
For iRow = 3 To 5
For icol = g To i
---------------------------
Sub usingcalls()
Set calls1 = ActiveSheet.Range("v31:aa54")
Set calls2 = ActiveSheet.Range("f3")
Set calls3 = ActiveSheet.Range("f4")
Set calls4 = ActiveSheet.Range("f5")

Range("g3") = Application.VLookup(calls2, calls1, 3)
Range("h3") = Application.VLookup(calls2, calls1, 5)
Range("i3") = Application.VLookup(calls2, calls1, 6)
Range("g4") = Application.VLookup(calls3, calls1, 3)
Range("h4") = Application.VLookup(calls3, calls1, 5)
Range("i4") = Application.VLookup(calls3, calls1, 6)
Range("g5") = Application.VLookup(calls4, calls1, 3)
Range("h5") = Application.VLookup(calls4, calls1, 5)
Range("i5") = Application.VLookup(calls4, calls1, 6)

End Sub
----------------------------------
I am new to this vba thing.Trying to learn.

Thanks.





Bob Phillips[_6_]

Vba code
 
Hi John,

I think this is what you want

Dim iRow As Long
Dim iCol As Long
Set calls1 = ActiveSheet.Range("V31:AA54")
For iRow = 3 To 5
For iCol = 7 To 9
Set calls2 = ActiveSheet.Cells(iRow, iCol)
Cells(iRow, iCol) = Application.VLookup(calls2, calls1, iRow)
Next iCol
Next iRow


--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"John" wrote in message
...
Hello,
I have a following code, which I would like to
make compact using something like
'Dim iRow As Long
'Dim icol As Long
For iRow = 3 To 5
For icol = g To i
---------------------------
Sub usingcalls()
Set calls1 = ActiveSheet.Range("v31:aa54")
Set calls2 = ActiveSheet.Range("f3")
Set calls3 = ActiveSheet.Range("f4")
Set calls4 = ActiveSheet.Range("f5")

Range("g3") = Application.VLookup(calls2, calls1, 3)
Range("h3") = Application.VLookup(calls2, calls1, 5)
Range("i3") = Application.VLookup(calls2, calls1, 6)
Range("g4") = Application.VLookup(calls3, calls1, 3)
Range("h4") = Application.VLookup(calls3, calls1, 5)
Range("i4") = Application.VLookup(calls3, calls1, 6)
Range("g5") = Application.VLookup(calls4, calls1, 3)
Range("h5") = Application.VLookup(calls4, calls1, 5)
Range("i5") = Application.VLookup(calls4, calls1, 6)

End Sub
----------------------------------
I am new to this vba thing.Trying to learn.

Thanks.







Tom Ogilvy

Vba code
 
Sub usingcalls()
Dim col as Variant, i as long, j as Long
Dim calls1 as Range
Set calls1 = ActiveSheet.Range("v31:aa54")
col = Array(0,3,5,6)
for i = 1 to 3 ' row
for j = 1 to 3 ' col
cells(i+2,j+6).Value = _
Application.Vlookup(cells(i+2,6),Calls1,col(j))
Next
Next
End Sub

--
Regards,
Tom Ogilvy


John wrote in message
...
Hello,
I have a following code, which I would like to
make compact using something like
'Dim iRow As Long
'Dim icol As Long
For iRow = 3 To 5
For icol = g To i
---------------------------
Sub usingcalls()
Set calls1 = ActiveSheet.Range("v31:aa54")
Set calls2 = ActiveSheet.Range("f3")
Set calls3 = ActiveSheet.Range("f4")
Set calls4 = ActiveSheet.Range("f5")

Range("g3") = Application.VLookup(calls2, calls1, 3)
Range("h3") = Application.VLookup(calls2, calls1, 5)
Range("i3") = Application.VLookup(calls2, calls1, 6)
Range("g4") = Application.VLookup(calls3, calls1, 3)
Range("h4") = Application.VLookup(calls3, calls1, 5)
Range("i4") = Application.VLookup(calls3, calls1, 6)
Range("g5") = Application.VLookup(calls4, calls1, 3)
Range("h5") = Application.VLookup(calls4, calls1, 5)
Range("i5") = Application.VLookup(calls4, calls1, 6)

End Sub
----------------------------------
I am new to this vba thing.Trying to learn.

Thanks.







Tom Ogilvy

Vba code
 
Just a heads up, the 3rd argument of Vlookup wasn't sequential.

also
Set calls2 = ActiveSheet.Cells(iRow, iCol)

should be

Set calls2 = ActiveSheet.Cells(iRow, 6)

--
Regards,
Tom Ogilvy

Bob Phillips wrote in message
...
Hi John,

I think this is what you want

Dim iRow As Long
Dim iCol As Long
Set calls1 = ActiveSheet.Range("V31:AA54")
For iRow = 3 To 5
For iCol = 7 To 9
Set calls2 = ActiveSheet.Cells(iRow, iCol)
Cells(iRow, iCol) = Application.VLookup(calls2, calls1, iRow)
Next iCol
Next iRow


--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"John" wrote in message
...
Hello,
I have a following code, which I would like to
make compact using something like
'Dim iRow As Long
'Dim icol As Long
For iRow = 3 To 5
For icol = g To i
---------------------------
Sub usingcalls()
Set calls1 = ActiveSheet.Range("v31:aa54")
Set calls2 = ActiveSheet.Range("f3")
Set calls3 = ActiveSheet.Range("f4")
Set calls4 = ActiveSheet.Range("f5")

Range("g3") = Application.VLookup(calls2, calls1, 3)
Range("h3") = Application.VLookup(calls2, calls1, 5)
Range("i3") = Application.VLookup(calls2, calls1, 6)
Range("g4") = Application.VLookup(calls3, calls1, 3)
Range("h4") = Application.VLookup(calls3, calls1, 5)
Range("i4") = Application.VLookup(calls3, calls1, 6)
Range("g5") = Application.VLookup(calls4, calls1, 3)
Range("h5") = Application.VLookup(calls4, calls1, 5)
Range("i5") = Application.VLookup(calls4, calls1, 6)

End Sub
----------------------------------
I am new to this vba thing.Trying to learn.

Thanks.









J.E. McGimpsey

Vba code
 
One way that doesn't require any loops:

Public Sub usingcalls()
With Range("G3:I5")
.FormulaR1C1 = _
"=VLOOKUP(RC6,R31C22:R54C27,COLUMN()-4+(COLUMN()7))"
.Value = .Value
End With
End Sub


In article ,
"John" wrote:

Hello,
I have a following code, which I would like to
make compact using something like
'Dim iRow As Long
'Dim icol As Long
For iRow = 3 To 5
For icol = g To i
---------------------------
Sub usingcalls()
Set calls1 = ActiveSheet.Range("v31:aa54")
Set calls2 = ActiveSheet.Range("f3")
Set calls3 = ActiveSheet.Range("f4")
Set calls4 = ActiveSheet.Range("f5")

Range("g3") = Application.VLookup(calls2, calls1, 3)
Range("h3") = Application.VLookup(calls2, calls1, 5)
Range("i3") = Application.VLookup(calls2, calls1, 6)
Range("g4") = Application.VLookup(calls3, calls1, 3)
Range("h4") = Application.VLookup(calls3, calls1, 5)
Range("i4") = Application.VLookup(calls3, calls1, 6)
Range("g5") = Application.VLookup(calls4, calls1, 3)
Range("h5") = Application.VLookup(calls4, calls1, 5)
Range("i5") = Application.VLookup(calls4, calls1, 6)

End Sub
----------------------------------
I am new to this vba thing.Trying to learn.

Thanks.





Bob Phillips[_6_]

Vba code
 
Thanks, I missed that.

Bob

"Tom Ogilvy" wrote in message
...
Just a heads up, the 3rd argument of Vlookup wasn't sequential.

also
Set calls2 = ActiveSheet.Cells(iRow, iCol)

should be

Set calls2 = ActiveSheet.Cells(iRow, 6)

--
Regards,
Tom Ogilvy

Bob Phillips wrote in message
...
Hi John,

I think this is what you want

Dim iRow As Long
Dim iCol As Long
Set calls1 = ActiveSheet.Range("V31:AA54")
For iRow = 3 To 5
For iCol = 7 To 9
Set calls2 = ActiveSheet.Cells(iRow, iCol)
Cells(iRow, iCol) = Application.VLookup(calls2, calls1,

iRow)
Next iCol
Next iRow


--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"John" wrote in message
...
Hello,
I have a following code, which I would like to
make compact using something like
'Dim iRow As Long
'Dim icol As Long
For iRow = 3 To 5
For icol = g To i
---------------------------
Sub usingcalls()
Set calls1 = ActiveSheet.Range("v31:aa54")
Set calls2 = ActiveSheet.Range("f3")
Set calls3 = ActiveSheet.Range("f4")
Set calls4 = ActiveSheet.Range("f5")

Range("g3") = Application.VLookup(calls2, calls1, 3)
Range("h3") = Application.VLookup(calls2, calls1, 5)
Range("i3") = Application.VLookup(calls2, calls1, 6)
Range("g4") = Application.VLookup(calls3, calls1, 3)
Range("h4") = Application.VLookup(calls3, calls1, 5)
Range("i4") = Application.VLookup(calls3, calls1, 6)
Range("g5") = Application.VLookup(calls4, calls1, 3)
Range("h5") = Application.VLookup(calls4, calls1, 5)
Range("i5") = Application.VLookup(calls4, calls1, 6)

End Sub
----------------------------------
I am new to this vba thing.Trying to learn.

Thanks.











Rick[_19_]

Vba code
 
Tom,

Doesn't j have to start with zero for the array, for the
four elements? Otherwise only the last three elements are
utilized. (Unless changed by declaring it as Option Base
1 or whatever one would like.)

Such that it would be:

for j = 0 to 3, not j = 1 to 3

and then make changes in your following code for the
difference of one as required....

I haven't followed or researched what you all are doing
with this VLookup, but I noticed that. So maybe you've
done it on purpose for some reason. I was just curious.
I use that method (with the arrays) to make all sorts of
complex VBA programming - with loops within loops combined
with arrays and counters - it's a lot of fun. That's why
I noticed it, and looked at it more carefully. Thanks.

-----Original Message-----
Sub usingcalls()
Dim col as Variant, i as long, j as Long
Dim calls1 as Range
Set calls1 = ActiveSheet.Range("v31:aa54")
col = Array(0,3,5,6)
for i = 1 to 3 ' row
for j = 1 to 3 ' col
cells(i+2,j+6).Value = _
Application.Vlookup(cells(i+2,6),Calls1,col(j))
Next
Next
End Sub

--
Regards,
Tom Ogilvy


John wrote in message
...
Hello,
I have a following code, which I would like to
make compact using something like
'Dim iRow As Long
'Dim icol As Long
For iRow = 3 To 5
For icol = g To i
---------------------------
Sub usingcalls()
Set calls1 = ActiveSheet.Range("v31:aa54")
Set calls2 = ActiveSheet.Range("f3")
Set calls3 = ActiveSheet.Range("f4")
Set calls4 = ActiveSheet.Range("f5")

Range("g3") = Application.VLookup(calls2, calls1, 3)
Range("h3") = Application.VLookup(calls2, calls1, 5)
Range("i3") = Application.VLookup(calls2, calls1, 6)
Range("g4") = Application.VLookup(calls3, calls1, 3)
Range("h4") = Application.VLookup(calls3, calls1, 5)
Range("i4") = Application.VLookup(calls3, calls1, 6)
Range("g5") = Application.VLookup(calls4, calls1, 3)
Range("h5") = Application.VLookup(calls4, calls1, 5)
Range("i5") = Application.VLookup(calls4, calls1, 6)

End Sub
----------------------------------
I am new to this vba thing.Trying to learn.

Thanks.






.


Tom Ogilvy

Vba code
 
No, I don't need the zero value/zero index. Thus I start with the second
element (index of 1, value of 3). I did assume option base 0 since that is
the default.

No adjustments need to be made given my assumptions -- which I guess I
should have stated.

--
Regards,
Tom Ogilvy

Rick wrote in message
...
Tom,

Doesn't j have to start with zero for the array, for the
four elements? Otherwise only the last three elements are
utilized. (Unless changed by declaring it as Option Base
1 or whatever one would like.)

Such that it would be:

for j = 0 to 3, not j = 1 to 3

and then make changes in your following code for the
difference of one as required....

I haven't followed or researched what you all are doing
with this VLookup, but I noticed that. So maybe you've
done it on purpose for some reason. I was just curious.
I use that method (with the arrays) to make all sorts of
complex VBA programming - with loops within loops combined
with arrays and counters - it's a lot of fun. That's why
I noticed it, and looked at it more carefully. Thanks.

-----Original Message-----
Sub usingcalls()
Dim col as Variant, i as long, j as Long
Dim calls1 as Range
Set calls1 = ActiveSheet.Range("v31:aa54")
col = Array(0,3,5,6)
for i = 1 to 3 ' row
for j = 1 to 3 ' col
cells(i+2,j+6).Value = _
Application.Vlookup(cells(i+2,6),Calls1,col(j))
Next
Next
End Sub

--
Regards,
Tom Ogilvy


John wrote in message
...
Hello,
I have a following code, which I would like to
make compact using something like
'Dim iRow As Long
'Dim icol As Long
For iRow = 3 To 5
For icol = g To i
---------------------------
Sub usingcalls()
Set calls1 = ActiveSheet.Range("v31:aa54")
Set calls2 = ActiveSheet.Range("f3")
Set calls3 = ActiveSheet.Range("f4")
Set calls4 = ActiveSheet.Range("f5")

Range("g3") = Application.VLookup(calls2, calls1, 3)
Range("h3") = Application.VLookup(calls2, calls1, 5)
Range("i3") = Application.VLookup(calls2, calls1, 6)
Range("g4") = Application.VLookup(calls3, calls1, 3)
Range("h4") = Application.VLookup(calls3, calls1, 5)
Range("i4") = Application.VLookup(calls3, calls1, 6)
Range("g5") = Application.VLookup(calls4, calls1, 3)
Range("h5") = Application.VLookup(calls4, calls1, 5)
Range("i5") = Application.VLookup(calls4, calls1, 6)

End Sub
----------------------------------
I am new to this vba thing.Trying to learn.

Thanks.






.





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

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