Excel: extrae dinámicamente valores separados por comas y devuelve un valor agregado de una lista separada

Excel: extrae dinámicamente valores separados por comas y devuelve un valor agregado de una lista separada

Tengo una situación en la que un usuario proporciona un conjunto de números separados por comas y completa una lista separada de costos de búsqueda. Una vez que el usuario ingresa los valores, una celda separada devolverá cuál sería el valor total, se parece a lo siguiente:

[Valores ingresados ​​por el usuario][Valor devuelto del costo agregado]

Celdas de búsqueda de costos

  1. $100
  2. $200
  3. $300
  4. $400 etc.

Un ejemplo de entrada del usuario podría ser: [1, 4] que debería devolver [$500]

Actualmente estoy atascado en conseguir un número indefinido de comas para leer. Podría no tener ninguna entrada sin comas que debería devolver $0, o podrían ser 200 valores diferentes separados por comas (o coma y espacio como en el ejemplo anterior).

Mi proceso de pensamiento fue tomar los valores separados por comas y dividir cada número en una nueva celda, luego usar una BUSCARV para obtener el monto del costo y sumarlo todo para obtener un valor de retorno. todo esto funcionariasiPuedo obtener alguna fórmula para dividir un número indefinido de valores separados por comas. Algo como:

ingrese la descripción de la imagen aquí

¿Es esto posible incluso con fórmulas? El usuario no debería tener que hacer nada más que completar las celdas de búsqueda e ingresar los números que necesita.

Respuesta1

Esta fórmula matricial funciona con números para CO# la cadena IF, luego debe eliminarlos --en la fórmula.

Pon esto en 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)))),""))

Confirme con Ctrl-Shift-Enter en lugar de Enter. Luego copie una columna hacia abajo lo suficiente para manejar todas las filas necesarias.

Dependiendo de dónde se encuentre en la lista, las diversas declaraciones IF, dividirá la cadena y devolverá una o todas las partes al MATCH, que a su vez devuelve todas o una de las ubicaciones relativas al ÍNDICE. Luego resume todas las partes o devuelve el valor único correcto.

Se ajustará automáticamente al tamaño según sea necesario.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

información relacionada