Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
CoRrRan
 
Posts: n/a
Default Array Function with VLOOKUP

I hope someone can explain or help me with an array-function. Let me
first explain the situation:

I have a table where, using VLOOKUP I want to find values for multiple
items. After I have found the values, I want to have the minimum value of
this list.

This would result in 2 tables and 1 cell with the result:

Table 1 = data table (=A1:C100)
Table 2 = items where values are to be found for (=H1:H3)
Table 3 = results of VLOOKUP (=I1:I3)
'Table 4' = cell containing function 'MIN' for table 2 (=I4)

Now I would like to have these steps in one cell. I tried using an array
function, but it does not what I want it to do.

I used the following formula in cell I4 (created the formula using
CTRL+SHIFT+ENTER):

={MIN(VLOOKUP(H1:H3;A1:C100;3;FALSE))}

The result of this formula, unfortunately, is the value found in table 1
for the item in cell H1.

When I use this formula, but now in cells I1:I3 (selected all three
cells), and use CTRL+SHIFT+ENTER, I get three cells with the CORRECT
value! (I.e. I get the minimum value of the VLOOKUP results for the items
in cells H1:H3.)

Can someone tell me, that what I try to do, i.e. create a single-cell
formula, is possible using the VLOOKUP function in combination with an
array-function? Or perhaps someone knows a method of accomplishing this,
without the use of a temporary/'in between' table.

Please: no solutions using VBA, that is too easy! ;) I want to understand
the limitations of array-functions.

TIA,
CoRrRan
  #2   Report Post  
Don Guillett
 
Posts: n/a
Default

Start with the premise that vlookup will lookup A value, not values.

--
Don Guillett
SalesAid Software

"CoRrRan" <CoRrRan~~[at]~~gmail~~[dot]~~com wrote in message
...
I hope someone can explain or help me with an array-function. Let me
first explain the situation:

I have a table where, using VLOOKUP I want to find values for multiple
items. After I have found the values, I want to have the minimum value of
this list.

This would result in 2 tables and 1 cell with the result:

Table 1 = data table (=A1:C100)
Table 2 = items where values are to be found for (=H1:H3)
Table 3 = results of VLOOKUP (=I1:I3)
'Table 4' = cell containing function 'MIN' for table 2 (=I4)

Now I would like to have these steps in one cell. I tried using an array
function, but it does not what I want it to do.

I used the following formula in cell I4 (created the formula using
CTRL+SHIFT+ENTER):

={MIN(VLOOKUP(H1:H3;A1:C100;3;FALSE))}

The result of this formula, unfortunately, is the value found in table 1
for the item in cell H1.

When I use this formula, but now in cells I1:I3 (selected all three
cells), and use CTRL+SHIFT+ENTER, I get three cells with the CORRECT
value! (I.e. I get the minimum value of the VLOOKUP results for the items
in cells H1:H3.)

Can someone tell me, that what I try to do, i.e. create a single-cell
formula, is possible using the VLOOKUP function in combination with an
array-function? Or perhaps someone knows a method of accomplishing this,
without the use of a temporary/'in between' table.

Please: no solutions using VBA, that is too easy! ;) I want to understand
the limitations of array-functions.

TIA,
CoRrRan



  #3   Report Post  
Domenic
 
Posts: n/a
Default

Unfortunately, VLOOKUP does not accept an array of lookup values.
However, LOOKUP does...

=MIN(LOOKUP(H1:H3,A1:A100,C1:C100)), or

=MIN(IF(LOOKUP(H1:H3,A1:A3,C1:C3)0,LOOKUP(H1:H3,A 1:A3,C1:C3))) to
exclude zero values,

*Note that Column A needs to be sorted in ascending order. Also, if an
exact match is not found, LOOKUP will return an approximate one. So if
this isn't going to be appropriate for your needs, you can try the
following...

=MIN((ISNUMBER(MATCH(A1:A100,H1:H3,0)))*C1:C100), or

=MIN(IF((ISNUMBER(MATCH(A1:A100,H1:H3,0)))*(C1:C10 00),C1:C100)) to
exclude zero values

*Note that these formulas need to be confirmed with CONTROL+SHIFT+ENTER,
not just ENTER.

Hope this helps!

In article ,
CoRrRan <CoRrRan~~[at]~~gmail~~[dot]~~com wrote:

I hope someone can explain or help me with an array-function. Let me
first explain the situation:

I have a table where, using VLOOKUP I want to find values for multiple
items. After I have found the values, I want to have the minimum value of
this list.

This would result in 2 tables and 1 cell with the result:

Table 1 = data table (=A1:C100)
Table 2 = items where values are to be found for (=H1:H3)
Table 3 = results of VLOOKUP (=I1:I3)
'Table 4' = cell containing function 'MIN' for table 2 (=I4)

Now I would like to have these steps in one cell. I tried using an array
function, but it does not what I want it to do.

I used the following formula in cell I4 (created the formula using
CTRL+SHIFT+ENTER):

={MIN(VLOOKUP(H1:H3;A1:C100;3;FALSE))}

The result of this formula, unfortunately, is the value found in table 1
for the item in cell H1.

When I use this formula, but now in cells I1:I3 (selected all three
cells), and use CTRL+SHIFT+ENTER, I get three cells with the CORRECT
value! (I.e. I get the minimum value of the VLOOKUP results for the items
in cells H1:H3.)

Can someone tell me, that what I try to do, i.e. create a single-cell
formula, is possible using the VLOOKUP function in combination with an
array-function? Or perhaps someone knows a method of accomplishing this,
without the use of a temporary/'in between' table.

Please: no solutions using VBA, that is too easy! ;) I want to understand
the limitations of array-functions.

TIA,
CoRrRan

  #4   Report Post  
Domenic
 
Posts: n/a
Default

Correction...

=MIN(IF(ISNUMBER(MATCH(A1:A3,H1:H3,0)),C1:C3))

....confirmed with CONTROL+SHIFT+ENTER.

In article ,
Domenic wrote:

=MIN((ISNUMBER(MATCH(A1:A100,H1:H3,0)))*C1:C100)

  #6   Report Post  
Domenic
 
Posts: n/a
Default

In article ,
CoRrRan [orthis] wrote:

Dominic, thank you very much!


You're very welcome!

...for the sake of the example: A1:A3 and C1:C3 should be A1:A100 and C1:C100.


In correcting the formula, I inadvertently picked up the wrong ranges. :)
  #7   Report Post  
Alan Beban
 
Posts: n/a
Default

Don Guillett wrote:
Start with the premise that vlookup will lookup A value, not values.

Nonsense.

Alan Beban
  #8   Report Post  
Alan Beban
 
Posts: n/a
Default

Domenic wrote:
Unfortunately, VLOOKUP does not accept an array of lookup values.


??

=VLOOKUP(a1:a3,a1:b8,2,0) array entered in a 3-cell column returns the
values from Column B corresponding to the values in A1:A3.

Alan Beban
  #9   Report Post  
Domenic
 
Posts: n/a
Default

Yes, my statement was incorrect. Thanks Alan!

While VLOOKUP does accept an array of lookup values, it doesn't seem to
pass that array to a subsequent function, as in the following...

{=MIN(VLOOKUP(A1:A3,A1:B8,2,0))}

In article ,
Alan Beban wrote:

Domenic wrote:
Unfortunately, VLOOKUP does not accept an array of lookup values.


??

=VLOOKUP(a1:a3,a1:b8,2,0) array entered in a 3-cell column returns the
values from Column B corresponding to the values in A1:A3.

Alan Beban

  #10   Report Post  
Alan Beban
 
Posts: n/a
Default

There was a discussion of this a few months back in this forum. There
seems to be some thought that what the VLOOKUP function returns is
something other than an array. For what it's worth, if you were to array
enter

=MIN(VLOOKUP(A1:A3,A1:B8,2,0) into two or more cells, it would in fact
return the expected minimum value to each cell.

Alan Beban

Domenic wrote:
Yes, my statement was incorrect. Thanks Alan!

While VLOOKUP does accept an array of lookup values, it doesn't seem to
pass that array to a subsequent function, as in the following...

{=MIN(VLOOKUP(A1:A3,A1:B8,2,0))}

In article ,
Alan Beban wrote:


Domenic wrote:

Unfortunately, VLOOKUP does not accept an array of lookup values.


??

=VLOOKUP(a1:a3,a1:b8,2,0) array entered in a 3-cell column returns the
values from Column B corresponding to the values in A1:A3.

Alan Beban



  #11   Report Post  
Domenic
 
Posts: n/a
Default

Interesting...

Thanks Alan!

In article ,
Alan Beban wrote:

There was a discussion of this a few months back in this forum. There
seems to be some thought that what the VLOOKUP function returns is
something other than an array. For what it's worth, if you were to array
enter

=MIN(VLOOKUP(A1:A3,A1:B8,2,0) into two or more cells, it would in fact
return the expected minimum value to each cell.

Alan Beban

  #12   Report Post  
Alan Beban
 
Posts: n/a
Default

Further, as long as the values in A1:A3 are unique, then in VBA

Application.Min(Application.VLookup(Range("A1:A3") ,Range("A1:B8"),2, 0))

will return the expected value. This also works with MAX and SUM, but
apparently not with

Application.Large(Application.VLookup(Range("A1:A3 "), Range("A1:B8"), 2,
0),2)

Oh well.

Alan Beban

Domenic wrote:
Interesting...

Thanks Alan!

In article ,
Alan Beban wrote:


There was a discussion of this a few months back in this forum. There
seems to be some thought that what the VLOOKUP function returns is
something other than an array. For what it's worth, if you were to array
enter

=MIN(VLOOKUP(A1:A3,A1:B8,2,0) into two or more cells, it would in fact
return the expected minimum value to each cell.

Alan Beban

  #13   Report Post  
Alan Beban
 
Posts: n/a
Default

And

Typename(Application.VLookup(Range("A1:A3"), Range("A1:B8"), 2, 0))

returns Variant()

Alan Beban

Domenic wrote:
Interesting...

Thanks Alan!

In article ,
Alan Beban wrote:


There was a discussion of this a few months back in this forum. There
seems to be some thought that what the VLOOKUP function returns is
something other than an array. For what it's worth, if you were to array
enter

=MIN(VLOOKUP(A1:A3,A1:B8,2,0) into two or more cells, it would in fact
return the expected minimum value to each cell.

Alan Beban

  #14   Report Post  
Domenic
 
Posts: n/a
Default

I'm finding these inconsistencies rather amusing. But I'm sure that at
some point in time Microsoft will rectify them. Hopefully sooner rather
than later. :)

In article ,
Alan Beban wrote:

Further, as long as the values in A1:A3 are unique, then in VBA

Application.Min(Application.VLookup(Range("A1:A3") ,Range("A1:B8"),2, 0))

will return the expected value. This also works with MAX and SUM, but
apparently not with

Application.Large(Application.VLookup(Range("A1:A3 "), Range("A1:B8"), 2,
0),2)

Oh well.

Alan Beban

Domenic wrote:
Interesting...

Thanks Alan!

In article ,
Alan Beban wrote:


There was a discussion of this a few months back in this forum. There
seems to be some thought that what the VLOOKUP function returns is
something other than an array. For what it's worth, if you were to array
enter

=MIN(VLOOKUP(A1:A3,A1:B8,2,0) into two or more cells, it would in fact
return the expected minimum value to each cell.

Alan Beban

  #15   Report Post  
CoRrRan
 
Posts: n/a
Default

Yes, I did find this behaviour in my spreadsheet. When using the =Min
(Vlookup(...-function and CTRL+SHIFT+ENTER it in multiple cells, it
returned the SAME minimum value of the items in the first argument of the
Vlookup-function. I then assumed that it must be possible to use the
Vlookup-function in an singel-cell-array-style, but this didn't have the
correct effect.

So you assume (or others as you mention in the post which I am replying
to now) that the Vlookup-function returns something else than an array?
Quite strange this is, as Dominic also states in one of his e-mails: it
looks like a bug.

Well, anyway, thank you for your help! We now have a rather neat little
function in our calculation.

CoRrRan


Alan Beban wrote in news:#2jXBXlOFHA.3076
@tk2msftngp13.phx.gbl:

There was a discussion of this a few months back in this forum. There
seems to be some thought that what the VLOOKUP function returns is
something other than an array. For what it's worth, if you were to

array
enter

=MIN(VLOOKUP(A1:A3,A1:B8,2,0) into two or more cells, it would in fact
return the expected minimum value to each cell.

Alan Beban

Domenic wrote:
Yes, my statement was incorrect. Thanks Alan!

While VLOOKUP does accept an array of lookup values, it doesn't seem

to
pass that array to a subsequent function, as in the following...

{=MIN(VLOOKUP(A1:A3,A1:B8,2,0))}

In article ,
Alan Beban wrote:


Domenic wrote:

Unfortunately, VLOOKUP does not accept an array of lookup values.

??

=VLOOKUP(a1:a3,a1:b8,2,0) array entered in a 3-cell column returns the
values from Column B corresponding to the values in A1:A3.

Alan Beban




  #16   Report Post  
Alan Beban
 
Posts: n/a
Default

Still assuming that the values in the lefthand column of the table_array
are uniques, it seems one can get the correct results by entering
(*without* array entering, though that seems to work as well) into a
single cell with the following UDF instead of the built_in VLOOKUP
function(watch for word wrap in this posting):

Function ArrayVlookup(lookup_value, table_array, column_reference,
range_lookup)
ArrayVlookup = Application.VLookup(lookup_value, table_array,
column_reference, range_lookup)
End Function

E.g., =MAX(ArrayVlookup,A1:A3,A1:B8,0)

FWIW, I have never understood what was meant by "the VLOOKUP function
returns something different from an array". Based on the different
results achievable on the worksheet by running the built-in function
through VBA, I'd be more inclined to think that the built-in function
has a bug that VBA bypasses or corrects for, than that it returns
"something different from an array". But who knows? I certainly don't
know anything about the inner workings of the codes.

Alan Beban

CoRrRan wrote:
Yes, I did find this behaviour in my spreadsheet. When using the =Min
(Vlookup(...-function and CTRL+SHIFT+ENTER it in multiple cells, it
returned the SAME minimum value of the items in the first argument of the
Vlookup-function. I then assumed that it must be possible to use the
Vlookup-function in an singel-cell-array-style, but this didn't have the
correct effect.

So you assume (or others as you mention in the post which I am replying
to now) that the Vlookup-function returns something else than an array?
Quite strange this is, as Dominic also states in one of his e-mails: it
looks like a bug.

Well, anyway, thank you for your help! We now have a rather neat little
function in our calculation.

CoRrRan


Alan Beban wrote in news:#2jXBXlOFHA.3076
@tk2msftngp13.phx.gbl:


There was a discussion of this a few months back in this forum. There
seems to be some thought that what the VLOOKUP function returns is
something other than an array. For what it's worth, if you were to


array

enter

=MIN(VLOOKUP(A1:A3,A1:B8,2,0) into two or more cells, it would in fact
return the expected minimum value to each cell.

Alan Beban

Domenic wrote:

Yes, my statement was incorrect. Thanks Alan!

While VLOOKUP does accept an array of lookup values, it doesn't seem


to

pass that array to a subsequent function, as in the following...

{=MIN(VLOOKUP(A1:A3,A1:B8,2,0))}

In article ,
Alan Beban wrote:



Domenic wrote:


Unfortunately, VLOOKUP does not accept an array of lookup values.

??

=VLOOKUP(a1:a3,a1:b8,2,0) array entered in a 3-cell column returns the
values from Column B corresponding to the values in A1:A3.

Alan Beban



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Simplify Vlookup function in Excel Budman Excel Worksheet Functions 7 March 27th 05 04:17 PM
How to use a cell value as Table Array in VLOOKUP worksheet function willydlish Excel Discussion (Misc queries) 2 February 16th 05 02:47 AM
Match / Vlookup within an Array formula Hari Prasadh Excel Discussion (Misc queries) 3 February 3rd 05 04:37 PM
Formula to list unique values JaneC Excel Worksheet Functions 4 December 10th 04 12:25 AM
carrying a hyper link when using the vlookup function mike Excel Worksheet Functions 1 November 19th 04 03:49 AM


All times are GMT +1. The time now is 10:32 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"