Easy one, with named ranges. You have to do:
- Select all data
- Create named ranges using FORMULAS->Create from selection
- In the Dialogbox, make sure you choose Top row

This will create instantly 4 named ranges, and each name will be the top row (WheelSize,NoTyre, Budget, Premium)
Then your UDF can be just a SUMIF
Function GetValue(vWheelSize As String, VTyreType As String)
GetValue = Application.WorksheetFunction.SumIf(Sheet2.Range("WheelSize"), vWheelSize, Sheet2.Range(VTyreType))
End Function
Because you are getting a number, you can use SUMIF instead of VLOOKUP or INDEX or MATCH. You want to sum up the tyre type range chosen, and your criteria is the wheelsize.
Notice I forced the UDF to be volatile to make sure it takes any change, you if you use this UDF at the same time in thousands of cells, it may overcharge your file.
But in your form and taking values from 2 comboboxes, it should not be a problem at all.
OPTION 2:
This is what I recomend, indeed. I don't know if your data is just a range or a table (a ListObject)
I would indeed use a ListObject so if you add new data, those new values are autoincluded. With named ranges from first solution, you need to manually update the size of the range.
Let's say you create a Table named WHEELS with four columns with headers WheelSize,NoTyre, Budget, and PRemium. In this case, you don't need to create the named ranges. You just need this code for your UDF:

Function GetValue(vWheelSize As String, VTyreType As String)
Application.Volatile True
GetValue = Application.WorksheetFunction.SumIf(Range("WHEELS[WheelSize]"), vWheelSize, Range("WHEELS[" & VTyreType & "]"))
End Function