VLOOKUP, se existir, use outro valor

VLOOKUP, se existir, use outro valor

Desculpe, não sou muito bom com Excel, mas o que estou tentando alcançar é este vlookup localizado na célula R7 da planilha1:

=VLOOKUP(F2,config!F2:H20,3,FALSE)

Que exibe um número de quarto, por exemplo1

Porém, se a sala já existir na coluna, quero que ela encontre outro valor no VLOOKUP que ainda não exista na coluna.

Verifico se existe na coluna usando (localizado na célula R8 da planilha1):

=COUNTIF(E2:E20,R7)>0

Portanto, se esta consulta for FALSA, não há problema em usar o VLOOKUP acima, mas se retornar VERDADEIRO, deverá continuar pesquisando até encontrar uma que seja FALSA.

Folha1:

insira a descrição da imagem aqui

folha de configuração:

insira a descrição da imagem aqui

Espero que isso faça sentido

Responder1

Então a ideia parece ser que você queira uma lista de quartos que ainda não foram comprometidos. A partir disso, você selecionará um por alguns critérios úteis.

Eu abordaria isso de maneira diferente da que você está tentando. Eu ia:

  1. Crie uma lista em algum lugar com todos os quartos disponíveis. Talvez seja um simples 1-100, talvez mais complicado. Crie-o em uma tabela em uma planilha auxiliar que você mantém oculta ou não. Crie-o como um intervalo nomeado para que seja útil, mas fora da vista e fácil de ser "manuseado" pelos usuários.

  2. Pegue-o e remova as salas que estão na coluna comprometida ("Sala" na Planilha1).

  3. Escolha um método para selecionar quais das salas restantes serão comprometidas.

A seguir, crio uma lista das salas 1 a 12 em C1:C12. A lista de salas já comprometidas está em A1:A4. Você alteraria esses intervalos de acordo: use a lista de todas as salas que você criou e a coluna Sala na Planilha1. Em seguida, faço uma comparação de cada sala da lista "existe" com as da lista "comprometida".

No nível mais íntimo disso está IF()fazer essa comparação. Tem um ""resultado para salas TRUE (já comprometidas). Dei um resultado FALSO, mas na verdade isso não importa e pode ser deixado de lado se o argumento que falta não for desconcertante em um ano em que você quiser atualizar a planilha. Muitos achariam isso desconcertante, então eu coloquei. Mas alguns achariam ISSO confuso, então "tempere a gosto".

A razão pela qual isso não importa é que o teste irá produzir um erro para salas ainda não comprometidas e parar, nunca chegando ao resultado FALSO. Na verdade, você quer todas aquelas salas que apresentam erros. Então eu envolvo isso com um IFERROR()para capturá-los e dar-lhes algum resultado útil: qualquer valor que esteja sendo testado. Então tudo isso lhe dá um monte de espaços em branco e um monte de salas não comprometidas.

Eu costumava UNIQUE()reduzir o número de espaços em branco para apenas 1. Agora você tem uma lista de salas não reservadas e um espaço em branco. Se você não tiver UNIQUE()(a pergunta é de 2019 e o autor da postagem pode ou não tê-la, mas qualquer pessoa com uma versão anterior não teria), você pode executar a etapa a seguir, apenas um pouco diferente.

Em seguida, SORT()alterei o resultado para colocá-los em ordem. Não é necessário se isso não importa, e não é necessário se a sua lista de salas "existentes" estiver correta para começar. Mas coloca o espaço em branco por último. Se não puder SORT()porque não tem a função, o espaço em branco será o primeiro. Fazer isso por último me permite selecionar o PRIMEIRO "todos, exceto um cômodo" usando INDEX()para que o espaço em branco desapareça. Isso é mais fácil do que selecionar o ÚLTIMO "todos menos um cômodo" para removê-lo. Mais fácil de entender. Não é particularmente difícil de fazer, mas é mais complicado e mais difícil de acompanhar daqui a um ano.

Se você não conseguiu reduzir os espaços em branco para apenas 1, então, em vez de fazer o COUNTA()nos resultados que eu faço e subtrair 1 dele, faça o COUNTA()dos resultados e subtraia dele um COUNTA()dos quartos "comprometidos".

Como eu quero apenas a entrada de coluna única como resultado de coluna única, usar "1" para o argumento da coluna INDEX()não é estritamente necessário... às vezes. Se estiver usando um formulário ROW(1:xxx)como eu faço aqui (porque... 2019 e assim por diante), não é necessário. Mas se você fizer isso hoje e usar a SEQUENCE()função legal, certamente será necessária. Por alguma razão, ao usá-lo para um valor em INDEX(), geralmente é necessário especificar o outro valor, quer isso faça muito sentido ou não.

De qualquer forma, agora você tem uma lista ordenada (de uma forma ou de outra) de salas ainda não "comprometidas". Você pode selecioná-lo com outro INDEX()enrolado ,1,1em linha e coluna, ou RANDBETWEEN()usar "1" e uma fórmula para contar os quartos restantes não "comprometidos". Talvez apenas MIN()para selecionar o quarto com número mais baixo e não "comprometido". Ou... bem, você entendeu. Muitas maneiras. Randomize usando RANDBETWEEN()alguma forma apropriada se a randomização do uso da sala for importante, ou apenas siga o caminho mais fácil, MIN()caso não seja. Qualquer ideia que pareça melhor para você. Você pode até fazer isso na lista de salas "existentes", ordenando-as de forma não sequencial. Muitas maneiras de fazer isso.

Responder2

Você pode tentar isto:

insira a descrição da imagem aqui

Fórmula na célula J2:

=SE(AND(F2="Sim",I2="Sim"),"",SE(F2="Sim",INDEX(H2:H11,MATCH("Não",I2:I11,0))," "))

Observação

  • Para melhor compreensão que agreguei valor na Coluna I, você pode modificá-los conforme sua necessidade.
  • Ajuste as referências de células na fórmula conforme necessário.

informação relacionada