The approach I used was a combination of a minimal amount of VBA, one formula and some named ranges.
Combobox 1 is linked to a list of pipe sizes, with its named ranges next to it (discussed later)
6 Pipe size Range name
7 10 SizeTen
8 12 SizeTwelve
9 14 SizeFourteen
10 16 SizeSixteen
The linked cell from Combobox 1 which contains the selected pipe size is cell A13 in this example.
On selecting a pipe size, A13 shows the pipe size and A15 uses a Vlookup to return the named range of cells containing the available pipe thicknesses (and associated pipe schedule info.) for that pipe size.
12 Size selection
14 Info. Range
Formula in A15:
The ranges of cells containing the pipe thickness/pipe schedule information for each pipe size are named.
For example in cells N5 to P9 is a table for pipe size 10, (with headings)
The range O6 to P9 contains the data to be displayed in Combobox 2 and is named SizeTen
N O P
5 Pipe size Wall thicknesses Pipe schedule
6 10 0.2 AA
7 10 0.4 AB
8 10 0.6 AC
9 10 0.8 AD
The Combobox 1 change event has the following two lines of code:
Private Sub ComboBox1_Change()
ComboBox2.ListFillRange = Range(Worksheets("Sheet1").Range("A15")).Address
ComboBox2.ListRows = Range(Worksheets("Sheet1").Range("A15")).Rows.Count
The first line of code populates Combobox 2 with the data for the selected pipe size/pipe schedule, and the second line calculates how many rows of data there are in that pipe size's table, and uses that to set the size of the drop down.
Hope this gives you an outline to work from.