Я пишу пользовательскую функцию с целью выполнения умножения нескольких массивов, содержащих комплексные числа в Excel.Например, у меня есть эти 3 массива, определенные на моем листе Excel:
MATZ1:
0.99995021721684+0.0172827928509254i -0.040624595514759-0.000234038263707613i
0.00490168593281832-0.850839538828158i 0.99995021721684+0.0172827928509254i
MATZ2:
0.996262283629251+0.149720806155247i -0.952677113437938-0.0475875415517989i
0.0156809592632005-0.313924412139317i 0.996262283629251+0.149720806155247i
MATZ3:
0.998558978121825+0.0929765994909912i -0.128534373384092-0.00398493017536902i
0.0448308688243513-1.44602474297277i 0.998558978121825+0.0929765994909912i
И я написал следующую функцию в VBA:
Function IMATMULT(rng1 As Range, rng2 As Range) As Variant
Dim i As Integer
Dim j As Integer
Dim l As Integer
Dim temp As String
Dim NumColumns As Variant
Dim NumRows As Variant
Dim NumRows2 As Variant
NumRows = rng1.Rows.Count - 1
NumColumns = rng2.Columns.Count - 1
If (rng1.Columns.Count = rng2.Rows.Count) Then
NumRows2 = rng1.Columns.Count
Else
IMATMULT = "non compatible arrays"
Exit Function
End If
Dim matrix() As String
ReDim matrix(NumRows, NumColumns)
For i = 0 To NumRows
For j = 0 To NumColumns
temp = "0"
For l = 1 To NumRows2
temp = WorksheetFunction.ImSum(temp, WorksheetFunction.ImProduct(rng1(i + 1, l).Value, rng2(l, j + 1).Value))
Next l
matrix(i, j) = temp
Next j
Next i
IMATMULT = matrix()
End Function
, которая может умножить два сложныхмассивы вместе.Когда я пишу следующую строку кода в Excel, я получаю правильный результат:

Однако, когда я пытаюсь умножить более двух массивов, яполучить сообщение об ошибке:

Я знаю, что могу просто просто умножить один массив за раз, но я хотел бы знать, почему с помощьюмоя функция дважды не работает, так как мои текущие знания VBA не позволяют мне понять причину этого.
Большое спасибо.
EDIT1:
ItКазалось бы, проблема в том, что вывод этой функции отличается от формата ввода.Чтобы работать так, как мне нужно, эта функция должна принимать массив текста в качестве входных данных.Однако я не знаю, как передать такой массив в функцию, любая помощь будет приветствоваться.