See the attached which creates all using VBA.
Sub Create_Parameters()
'
'
'
Dim ws1 As Worksheet
Dim Ws2 As Worksheet
Dim r As Long
Dim rs As Long
Dim c As Long
Dim col As Integer
Dim Make As String
Dim RefersTo As String
Application.ScreenUpdating = False
On Error Resume Next
Set ws1 = Worksheets("MODEL SEGMENT AND DISCOUNTS")
Set Ws2 = Worksheets("Parameters")
Ws2.Range("A1:AZ1000").ClearContents
ws1.Activate
'
' Sort by MAKE and MODEL
'
ws1.Range("A2:B1000").Select
ActiveWorkbook.Worksheets("MODEL SEGMENT AND DISCOUNTS").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("MODEL SEGMENT AND DISCOUNTS").Sort.SortFields.Add _
Key:=Range("A2:A1000"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("MODEL SEGMENT AND DISCOUNTS").Sort.SortFields.Add _
Key:=Range("B2:B1000"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("MODEL SEGMENT AND DISCOUNTS").Sort
.SetRange Range("A1:1000")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'
' Copy MAKE to "Parameters" worksheet
'
ws1.Range("A1:A1000").Copy
Ws2.Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
'
' Remove duplicate MAKE from "Parameters" worksheet
'
Ws2.Activate
ActiveSheet.Range("$A$1:$A$1000").RemoveDuplicates Columns:=1, Header:=xlYes
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Range("A2:A" & LastRow).Copy
Range("C1").PasteSpecial xlPasteValues, Transpose:=True
'
' Create Named Lists of MODELS for Each MAKE
'
c = 3
r = 2
ws1.Activate
Do While ws1.Cells(r, 1) <> ""
Make = ws1.Cells(r, 1)
rs = r
Do While ws1.Cells(r, 1) = Make
r = r + 1
Loop
ws1.Range("B" & rs & ":B" & r - 1).Copy Destination:=Ws2.Cells(2, c)
c = c + 1
Loop
'
' Create the NAMED ranges .......
'
Ws2.Activate
With Ws2
col = 3
Do While .Cells(1, col) <> ""
Make = Cells(1, col)
Make = Application.WorksheetFunction.Substitute(Make, " ", "_")
'
' Delete existing
'
ActiveWorkbook.Names(Make).Delete
LastRow = .Cells(.Rows.Count, col).End(xlUp).Row
RefersTo = "=Parameters!R2C" & col & ":R" & LastRow & "C" & col
.Cells(1, col).Select
ActiveWorkbook.Names.Add Name:=Make, RefersToR1C1:= _
RefersTo
col = col + 1
Loop
End With
'
Application.ScreenUpdating = True
End Sub
Bookmarks