Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

XY Look up function for Excel range.  Return array of results to VBA subroutine

Posted on 2012-04-11
9
Medium Priority
?
498 Views
Last Modified: 2012-05-10
Any direction or help would be appreciated.  I have attached a file for you to look at.  What I need is basically a XY table lookup in VBA BUT there can be more than 1 result.  And I need it to ignore blank values and blank lines.


Please refer
For example, if I pass Joe and Period 4 to the funciton.  I would expect an array back with 2 elements of France, .75 and Italy, 1

It also needs to ignore blank lines and numbers.
XYlookup.xlsx
0
Comment
Question by:drhamel69
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
9 Comments
 
LVL 24

Expert Comment

by:StephenJR
ID: 37833255
How are you intending to use this array?
0
 
LVL 2

Author Comment

by:drhamel69
ID: 37833353
I have even more coding after this to loop through other things.
0
 
LVL 24

Expert Comment

by:StephenJR
ID: 37833371
OK, didn't read your question title properly. I would have a procedure with arguments including the range and then no need to bother about whether there are blank lines.
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 2

Author Comment

by:drhamel69
ID: 37833391
that would work too as long as I am passed an array back
0
 
LVL 24

Accepted Solution

by:
StephenJR earned 2000 total points
ID: 37833436
Here is one approach. I'm assuming you want a 2x2 array returned?
Function XYLookup(rTable As Range, vName, vPeriod) As Variant

Dim vOut(), i As Long, c As Long, rFind As Range, sAddr As String
 
c = Application.Match(vPeriod, rTable.Rows(1), 0)

With rTable.Columns(2)
    Set rFind = .Find(What:=vName, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
    If Not rFind Is Nothing Then
        sAddr = rFind.Address
        Do
            i = i + 1
            ReDim Preserve vOut(1 To 2, 1 To i)
            vOut(1, i) = rFind.Offset(, -1)
            vOut(2, i) = rTable(rFind.Row - rTable(1).Row + 1, c)
            Set rFind = .FindNext(rFind)
        Loop While rFind.Address <> sAddr
    End If
End With

XYLookup = Application.Transpose(vOut)

End Function

Sub x()

Dim v, i As Long

v = XYLookup(Range("A2:H11"), "Joe", "Period 4")

For i = LBound(v, 1) To UBound(v, 1)
    MsgBox v(i, 1) & "," & v(i, 2)
Next i

End Sub

Open in new window

0
 
LVL 2

Author Comment

by:drhamel69
ID: 37833528
WOrks fine on the example I gave but when I imported into my actual project i am getting a type mismatch error on c = Application.Match(vPeriod, rTable.Rows(1), 0)

Any Ideas?
0
 
LVL 24

Expert Comment

by:StephenJR
ID: 37833941
I didn't put in any error trapping. It means the period value isn't found in the first row of your range.
0
 
LVL 49

Expert Comment

by:Martin Liss
ID: 37951046
This question has been classified as abandoned and is closed as part of the Cleanup Program. See the recommendation for more details.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article will guide you to convert a grid from a picture into Excel format using Microsoft OneNote and no other 3rd party application.
Access developers frequently have requirements to interact with Excel (import from or output to) in their applications.  You might be able to accomplish this with the TransferSpreadsheet and OutputTo methods, but in this series of articles I will di…
The viewer will learn how to create a normally distributed random variable in Excel, use a normal distribution to simulate the return on an investment over a period of years, Create a Monte Carlo simulation using a normal random variable, and calcul…
This Micro Tutorial demonstrates how to create Excel charts: column, area, line, bar, and scatter charts. Formatting tips are provided as well.

609 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question