Macro match function problem

A

Asraf

Hi all,

I have a problem to create a match function macro with the following
senario, whereby the lookup_array is currently at col D1 to D4, and the
lookup_value will be A1. The problem is my lookup_array number will change to
(D1 to D9) or (D1 to D15) or any row at row D based on new data inserted..
How to create a match macro if my lookup_array is changing everyday?


A B C D
1 123 1
2 12
3 23
4 123

thank you..
 
J

Jacob Skaria

Why dont you refer the whole column. Refer responses for your other post...
 
A

Asraf

Dear Jacob,

By refering to whole column will slow down my macro due to calculation on
every single cell.
by the way my actuall senario data is much heavy and not constant. i need a
macro which will change my lookup_array respectively based on data in coll D
 
J

Jacob Skaria

Asraf, please check the responses for your other post.

Dim lngRow As Long
lngRow = Cells(Rows.Count, ActiveCell.Offset(, 2).Column).End(xlUp).Row
ActiveCell.FormulaR1C1 = "=MATCH(RC[1],R1C[2]:R" & lngRow & "C[2],0)"
 
A

Asraf

Dear Jacob,

thanks for your recent and fast reply.
how if my lookup_array is in another sheets? let say my lookup array data is
in "sheet2".

Jacob Skaria said:
Asraf, please check the responses for your other post.

Dim lngRow As Long
lngRow = Cells(Rows.Count, ActiveCell.Offset(, 2).Column).End(xlUp).Row
ActiveCell.FormulaR1C1 = "=MATCH(RC[1],R1C[2]:R" & lngRow & "C[2],0)"

--
Jacob (MVP - Excel)


Asraf said:
Dear Jacob,

By refering to whole column will slow down my macro due to calculation on
every single cell.
by the way my actuall senario data is much heavy and not constant. i need a
macro which will change my lookup_array respectively based on data in coll D
 
J

Jacob Skaria

Suppose you have data in Sheet2 colD. The below will insert a formula in
active sheet cell B1 to match the content in cell A1 with Sheet2 ColD...

Dim ws As Worksheet, rngData As Range
Set ws = Sheets("Sheet2")
Set rngData = ws.Range("D1:D" & Cells(Rows.Count, "D").End(xlUp).Row)
Range("B1").Formula = "=MATCH(A1," & rngData.Address & ",0)"


--
Jacob (MVP - Excel)


Asraf said:
Dear Jacob,

thanks for your recent and fast reply.
how if my lookup_array is in another sheets? let say my lookup array data is
in "sheet2".

Jacob Skaria said:
Asraf, please check the responses for your other post.

Dim lngRow As Long
lngRow = Cells(Rows.Count, ActiveCell.Offset(, 2).Column).End(xlUp).Row
ActiveCell.FormulaR1C1 = "=MATCH(RC[1],R1C[2]:R" & lngRow & "C[2],0)"

--
Jacob (MVP - Excel)


Asraf said:
Dear Jacob,

By refering to whole column will slow down my macro due to calculation on
every single cell.
by the way my actuall senario data is much heavy and not constant. i need a
macro which will change my lookup_array respectively based on data in coll D

:

Why dont you refer the whole column. Refer responses for your other post...

--
Jacob (MVP - Excel)


:

Hi all,

I have a problem to create a match function macro with the following
senario, whereby the lookup_array is currently at col D1 to D4, and the
lookup_value will be A1. The problem is my lookup_array number will change to
(D1 to D9) or (D1 to D15) or any row at row D based on new data inserted..
How to create a match macro if my lookup_array is changing everyday?


A B C D
1 123 1
2 12
3 23
4 123

thank you..
 
D

Dave Peterson

Are you sure?

There are lots of functions in excel that limit themselves to the usedrange.
 
A

Asraf

Thanks Jacob. Glad to learn something new from you.. By the way is there any
websites that i can refer or learn VBA? i would like to learn more and master
all this like you do.


Jacob Skaria said:
Suppose you have data in Sheet2 colD. The below will insert a formula in
active sheet cell B1 to match the content in cell A1 with Sheet2 ColD...

Dim ws As Worksheet, rngData As Range
Set ws = Sheets("Sheet2")
Set rngData = ws.Range("D1:D" & Cells(Rows.Count, "D").End(xlUp).Row)
Range("B1").Formula = "=MATCH(A1," & rngData.Address & ",0)"


--
Jacob (MVP - Excel)


Asraf said:
Dear Jacob,

thanks for your recent and fast reply.
how if my lookup_array is in another sheets? let say my lookup array data is
in "sheet2".

Jacob Skaria said:
Asraf, please check the responses for your other post.

Dim lngRow As Long
lngRow = Cells(Rows.Count, ActiveCell.Offset(, 2).Column).End(xlUp).Row
ActiveCell.FormulaR1C1 = "=MATCH(RC[1],R1C[2]:R" & lngRow & "C[2],0)"

--
Jacob (MVP - Excel)


:

Dear Jacob,

By refering to whole column will slow down my macro due to calculation on
every single cell.
by the way my actuall senario data is much heavy and not constant. i need a
macro which will change my lookup_array respectively based on data in coll D

:

Why dont you refer the whole column. Refer responses for your other post...

--
Jacob (MVP - Excel)


:

Hi all,

I have a problem to create a match function macro with the following
senario, whereby the lookup_array is currently at col D1 to D4, and the
lookup_value will be A1. The problem is my lookup_array number will change to
(D1 to D9) or (D1 to D15) or any row at row D based on new data inserted..
How to create a match macro if my lookup_array is changing everyday?


A B C D
1 123 1
2 12
3 23
4 123

thank you..
 
A

Asraf

Yes i'm very sure. by calculating all cells in D will slow down the macro.
but if we can select several cell which is only "cell with data", it will
increace the speed for calculation and the macro will not stuck in
"calculating" progress for a long period.

just assume if my lookup_array and lookup_value data is 30000 rows long..
how long it will take to match if we selecting all D as a lookup_array,
compare with selecting just "cell with data".
 
D

Dave Peterson

When you created a new worksheet and populated 10 rows with data, what was the
difference in times using the different ranges?
 
A

Asraf

The difference is my data will be increase day by day and not a constant.
thats why i need a macro which can count row with data which will select the
last row with data as my lookup_array. thanks to Jacob Skaria for the light
he gave. he sure a excel monster.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top