Macro match function problem

  • Thread starter Thread starter Asraf
  • Start date Start date
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..
 
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
 
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)"
 
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
 
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..
 
Are you sure?

There are lots of functions in excel that limit themselves to the usedrange.
 
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..
 
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".
 
When you created a new worksheet and populated 10 rows with data, what was the
difference in times using the different ranges?
 
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.
 
Back
Top