Использовать разделенное запятыми значение одной ячейки в качестве ввода для формулы массива - PullRequest
0 голосов
/ 09 января 2020

Я хочу создать формулу массива, которая принимает в качестве входных данных отдельные значения одной ячейки:

Ячейка A1: 1; 3; 4

Ячейка A2: = {Sum (If ( A3: F3) = A1, A4: F4))}

Как я могу сказать Excel, чтобы интерпретировать строку в A1 как массив? Я попытался настроить пользовательскую функцию vba, но не смог правильно вернуть массив vba в формулу excel.

Может кто-нибудь помочь?

Screenshot

То, что я пробовал с VBA:

Function Matrix(vector)
Dim arr As Variant

arr = Array(Split(vector, ";"))
Matrix = arr


End Function

В приведенной выше формуле я заменяю А1 на Матрицу (А1). Но значения векторов возвращаются в виде строк, а не целых чисел (извините, на самом деле используется немецкий Excel):

Screenshot

Спасибо, Питер

1 Ответ

2 голосов
/ 09 января 2020

Некоторые умные, такие-то и такие-то, дадут вам формулу, которую я ожидаю, но вот решение VBA. Вам нужно передать два аргумента (по крайней мере), я думаю - массив и диапазон поиска.

Function Matrix(vector, r As Range) As Variant

Dim arr As Variant, i As Long, v As Variant

arr = Split(vector, ";")

For i = LBound(arr) To UBound(arr)
    v = Application.Match(Val(arr(i)), r.Rows(1), 0)
    If IsNumeric(v) Then Matrix = Matrix + r(2, v)
Next i

End Function

Формула в С1:

=matrix(A1,A3:D4)

Обратите внимание, что Split возвращает массив.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...