Excel: Extraia dinamicamente valores separados por vírgulas e retorne um valor adicionado de uma lista separada

0

Eu tenho uma situação em que um usuário fornecerá um conjunto de números separados por vírgula e preencherá uma lista separada de custos de pesquisa. Depois que o usuário inserir os valores, uma célula separada retornará o valor total disso, é algo como abaixo:

[Valores de entrada do usuário] [Valor retornado do custo adicionado]

Células de pesquisa de custo

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

Um exemplo de entrada do usuário pode ser: [1, 4] que deve retornar [$ 500]

Atualmente estou preso a obter um número indefinido de vírgulas para ler. Ele pode não ter entrada sem vírgulas que devam retornar $ 0 ou 200 valores diferentes separados por vírgulas (ou vírgula e espaço, como no exemplo acima).

Meu processo de pensamento era pegar os valores separados por vírgula e dividir cada número em uma nova célula, depois usar um VLOOKUP para obter o valor do custo e adicionar tudo para ter um valor de retorno. Isso tudo funcionaria se eu pudesse obter alguma fórmula para quebrar um número indefinido de valores separados por vírgula. Algo como:

Isso é possível com fórmulas? O usuário não deve fazer nada além de preencher as células de pesquisa e inserir os números de que precisam.

    
por Ashton Fraess 05.04.2018 / 19:47

1 resposta

0

Esta fórmula de matriz funciona com números para a string CO# IF, então você deve remover o -- na fórmula.

Coloque isso em 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 com Ctrl-Shift-Enter em vez de Enter. Em seguida, copie em uma coluna e abaixo o suficiente para manipular todas as linhas necessárias.

Dependendo de onde estiver na lista, as várias instruções IF dividirão a string e retornarão ou todas as partes para a MATCH, que por sua vez retornará todas ou uma das localizações relativas para o INDEX. Em seguida, resume todas as partes ou retorna o valor único correto.

Ele será dimensionado automaticamente conforme necessário.

    
por 05.04.2018 / 20:19