Excel: Динамическое извлечение значений, разделенных запятыми, и возврат добавленного значения из отдельного списка.

Excel: Динамическое извлечение значений, разделенных запятыми, и возврат добавленного значения из отдельного списка.

У меня есть ситуация, когда пользователь вводит разделенный запятыми набор чисел и заполняет отдельный список затрат на поиск. После того, как пользователь вводит значения, отдельная ячейка возвращает общую стоимость, которая будет выглядеть примерно так:

[Значения, введенные пользователем][Возвращаемое значение добавленной стоимости]

Ячейки поиска стоимости

  1. 100 долларов
  2. 200 долларов
  3. 300 долларов
  4. 400 долларов и т.д.

Примером пользовательского ввода может быть: [1, 4 ], который должен вернуть [$500]

В настоящее время я застрял на получении неопределенного количества запятых для чтения. Это может быть не входные данные без запятых, которые должны возвращать $0, или это может быть 200 различных значений, разделенных запятыми (или запятой и пробелом, как в примере выше).

Мой ход мыслей был таков: взять значения, разделенные запятыми, и разбить каждое число на новую ячейку, затем использовать VLOOKUP, чтобы получить сумму стоимости, и сложить все это, чтобы получить возвращаемое значение. Это все сработаетеслиЯ могу получить какую-то формулу, чтобы вывести неопределенное количество значений, разделенных запятыми. Что-то вроде:

введите описание изображения здесь

Возможно ли это вообще с формулами? Пользователю не нужно ничего делать, кроме как заполнить ячейки поиска и ввести нужные ему числа.

решение1

Эта формула массива работает с числами. ЕСЛИ CO# есть строка, то необходимо удалить символ --в формуле.

Поместите это в D2:

=IF(LEN($E$1)-LEN(SUBSTITUTE($E$1,",",""))+1>=ROW($A1),INDEX(A:A,MATCH(--TRIM(MID(SUBSTITUTE($E$1,",",REPT( " ",99)),(ROW($A1)-1)*99+1,99)),$A:$A,0)),IF(ROW($A1)=LEN($E$1)-LEN(SUBSTITUTE($E$1,",",""))+2,IF(COLUMN(A$1) = 1, "$",SUM(INDEX($B:$B,MATCH(N(IF(1,--TRIM(MID(SUBSTITUTE($E$1,",",REPT( " ",99)),(ROW(INDEX($AAB:$AAB,1):INDEX($AAB:$AAB,LEN($E$1)-LEN(SUBSTITUTE($E$1,",",""))+1))-1)*99+1,99)))),$A:$A,0)))),""))

Подтвердите с помощью Ctrl-Shift-Enter вместо Enter. Затем скопируйте на один столбец и вниз достаточно, чтобы обработать все необходимые строки.

В зависимости от того, где в списке он находится, различные операторы IF разделят строку и вернут одну или все части в MATCH, который в свою очередь возвращает все или одну из относительных позиций в INDEX. Затем он либо суммирует все части, либо возвращает правильное одно значение.

Он автоматически изменит размер по мере необходимости.

введите описание изображения здесь

введите описание изображения здесь

Связанный контент