View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.misc
Toppers
 
Posts: n/a
Default Lookup validation data

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

"Craig" wrote:

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