Como eu posso combinar o VLOOKUP dentro de uma instrução IF onde o índice da coluna da função VLOOKUP é um número extrapolado de um texto?

4

Eu tenho as seguintes tabelas no Excel:

e

.

Atabeladeaçõesdoproduto(PST)émaisextensadoqueisso,masparaospropósitosdestaquestãoeuareduzi.

EuqueropesquisarovaloremumacolunanatabelaAnálisedeestoque(SAT)correspondeaovalornacolunaTamanhodatabelaEstoquedoproduto.

Porexemplo,nestecaso,ovalornacolunaTamanhodaminhatabeladeestoquedeprodutos(PST)é8,portanto,queroprocurarovalornocolunatamanho8daminhatabeladeanálisedeações.Semeuvalorfor5,pesquiseTamanho5emminhatabeladeanálisedeestoque(SAT).

ObservequeavalidaçãodedadosfoirealizadaparagarantirqueosvaloresnacolunaTamanhodatabelaMeuestoquedeprodutossejambaseadosnadimensãoespecificada,portanto,terãoapenasumintervalodetamanhosquetambémsãoascolunasdaAnálisedeEstoquemesa

TambémfoiinseridaumafórmulaparagarantirqueapróximalinhadoSATsempreteráumnúmerodelotequeéummaismaiorquealinhaanterior(ouseja,háumaumentode1acolunaBatchNoparacadanovalinha)paragarantirquenãohajarepetiçãodelotesnoSAT

Oqueeutenhoatéagoraé:

=IF(PST[BatchNo]=SAT[BatchNo,VLOOKUP(PST[BatchNo],PST,Stuckhere,FALSE),"")

O que eu preciso sobre o col_index_num é igualar o valor na minha coluna "Tamanho" do meu PST ao último caractere da string nos cabeçalhos de SAT excluindo o cabeçalho Batch No (isso pode não afetá-lo embora). Quando houver uma correspondência, informe o número da coluna na tabela.

Isso fornecerá o valor abaixo da coluna que corresponde ao nº do lote

Espero que isso seja bastante compreensível.

Eu não gostaria muito de me aprofundar no VBA

    
por MrMarho 02.05.2017 / 11:43

2 respostas

10

Algo parecido com isto?

AfórmulaemH12é:

=VLOOKUP(E12,$C$6:$H$8,MATCH("Size "&F12,$C$5:$H$5,0),FALSE)

Editar: como a fórmula em H12 funciona.

A parte que fornece um número de coluna,

MATCH("Size "&F12,$C$5:$H$5,0)

concatena primeiro o prefixo "Size " com o valor de F12 (= 8), resultando em uma string "Size 8" . Então isso olha através das células na linha de cabeçalho $C$5:$H$5 para encontrar essa string de chave e retorna um número da célula correspondente, ou seja, 6 (a última célula no cabeçalho). Então a fórmula

=VLOOKUP(E12,$C$6:$H$8,MATCH("Size "&F12,$C$5:$H$5,0),FALSE)

essencialmente se torna

=VLOOKUP(E12,$C$6:$H$8,6,FALSE)

que procura o conteúdo de E12 (= 1) na primeira coluna do intervalo $C$6:$H$8 . Em outras palavras, ele seleciona a linha, que corresponde a Batch No=1 , qual é 1 . E dado os números de linha (= 1) e coluna (= 6) no intervalo $C$6:$H$8 , VLOOKUP retorna um valor armazenado em H6 , que é 7 .

    
por 02.05.2017 / 13:20
2

Experimente a função index com correspondência para o texto Lote # e o tamanho:

=INDEX(C6:H8,MATCH($E12,$C$6:$C$8,0),MATCH("Size "&$F12,$C$5:$H$5,0))
    
por 02.05.2017 / 18:05