Lookup validation data

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I have a problem I thought would be simple!
Worksheet 1
A B C
MTRL-A Validation list VALUE1
MTRL-B
MTRL-C

Worksheet 2
MTRL-A Length
MTRL-A Diameter
MTRL-A Color
MTRL-B Length
MTRL-C Tensile Strength

This should be simple. On Worksheet 1, a material number is enterred. In
column B I want a list of the only the matching values in worksheet 2. So if
MTRL-A is enterred by the user, only the values Length, Diameter, and Color
are valid entries in column B. If they enter MTRL-C, only Tensile Strength
is a valid entry.

This is a piece of cake in Access. How do I do it in Excel? I tried using
VLookup in my validation list source but I only get the last valid value, not
all the valid values. Any suggestions?

Craig
 
Craig,
Try this. It creates names ranges("Attribute1", Attribute2" etx)
corresponding to th validation list for MTRL-A,MTRl-B etc. You need named
ranges as the validations are not on the same sheet as the list source.

Set ws1 = Worksheets("sheet1")
Set ws2 = Worksheets("sheet2")
attn = 1

With ws1
lastrow = .Cells(Rows.Count, "A").End(xlUp).Row
For r = 2 To lastrow
material = .Cells(r, "A")

res = Application.Match(material, ws2.Range("a1:a10"), 0) '<===
change Range to suit your list in sheet2
n = Application.CountIf(ws2.Range("a1:a10"), material) '<=== change
Range to suit your list in sheet2

Set valrng = ws2.Range("B" & res & ":B" & res + n - 1)
ActiveWorkbook.Names.Add Name:="Attributes" & attn, RefersTo:=valrng

With .Range("B" & r).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:= _
xlBetween, Formula1:="=attributes" & attn
End With

attn = attn + 1

Next r

End With

HTH
 

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

Back
Top