Я пытался написать упрощенные формы того, что я делаю, в другом файле, и они работали, поэтому я не понимаю, почему это не так.Я только что определил все как вариант, и он все равно не будет работать.Переменные type1 и type2 являются строками, слова - это диапазон строк, а числа - это диапазон чисел.Код находит входные строки в диапазоне строк и выполняет вычисления с соответствующими числами из диапазона номеров.
Function effectiveness(type1 As Variant, type2 As Variant, words As Range, numbers As Range) As Variant
Dim Types() As Variant
Types = words
Dim Multipliers() As Variant
Multipliers = numbers
Dim i As Variant
Dim h As Variant
Dim col As Variant
col = UBound(Types) - LBound(Types) + 1
Dim d As Variant
d = Excel.WorksheetFunction.Index(words, i)
Dim f As Variant
f = Excel.WorksheetFunction.Index(words, h)
For i = 1 To col
If StrComp(type1, d, vbBinaryCompare) = 0 Then '(0 means they match)
Dim sum As Variant
sum = 0
If StrComp(type1, type2, vbBinaryCompare) = 0 Then
Dim x As Variant
Dim a As Variant
For x = 1 To col
a = Excel.WorksheetFunction.Index(numbers, x, i)
sum = sum + a
Next x
Else
For h = 1 To col
If StrComp(type2, f, vbBinaryCompare) = 0 Then
Dim y As Variant
Dim b As Variant
Dim c As Variant
For y = 1 To col
b = Excel.WorksheetFunction.Index(numbers, y, h)
c = Excel.WorksheetFunction.Index(numbers, y, i)
sum = sum + (b * c)
Next y
End If
Next h
End If
End If
Next i
effectiveness = sum
End Function