Я хочу написать функцию, которая возвращает все j-тые элементы заданных элементов. Элементы содержат отдельные ячейки, диапазоны ячеек или оба.
Хотя можно вернуть все элементы (test1), все первые элементы (test2), я не могу вернуть элементы каждую секунду (или выше).
С учетом таблицы Excel
B C D
2 X 1 333
3 X 2 666
4 Z 3 999
=test1((B2;C2;D2);B3:D3;(B4:C4;D4))
возвращает X 1 333 Y 2 666 Z 3 999
=test2((B2;C2;D2);B3:D3;(B4:C4;D4))
возвращает X Y Z
Но =test3((B2;C2;D2);B3:D3;(B4:C4;D4))
возвращает Y 2 3
, что неверно. Должен вернуть 1 2 3
.
Код VBA-функций следующий:
Function Test1(ParamArray argArray() As Variant)
' return all elements of all items = OK
For Each outer_arg In argArray
For Each inner_arg In outer_arg
Test1 = Test1 & " " & inner_arg
Next inner_arg
Next outer_arg
End Function
Function Test2(ParamArray argArray() As Variant)
' return only the 1st elemtent of each item = OK
For Each outer_arg In argArray
Test2 = Test2 & " " & outer_arg(1)
Next outer_arg
End Function
Function Test3(ParamArray argArray() As Variant)
' return only the 2nd elemtent of each item = FAILS
For Each outer_arg In argArray
Test3 = Test3 & " " & outer_arg(2)
Next outer_arg
End Function
Как правильно адресовать определенные элементы?