Não sabe como encurtar uma fórmula

4

Eu criei esta fórmula:

=IF(B8="Jan","Feb",IF(B8="Feb","Mar",IF(B8="Mar","Apr",IF(B8="Apr","May",IF(B8="May","Jun",IF(B8="Jun","Jul",IF(B8="Jul","Aug",IF(B8="Aug","Sep",IF(B8="Sep","Oct",IF(B8="Oct","Nov",IF(B8="Nov","Dec",IF(B8="Dec","Jan"))))))))))))

para que, quando o usuário escolhe uma abreviação do mês, a próxima célula tenha o mês consecutivo. IE: o usuário digita Oct, a próxima célula se torna Nov.

No entanto, acho que usar esse tipo de fórmula é desajeitado, longo e, a longo prazo, diminuirá a velocidade do meu documento.

Se você tiver alguma idéia ou souber como reduzir essa fórmula, seria muito apreciado.

    
por polarbearmike 31.05.2018 / 14:19

4 respostas

5

Você pode usar o EOMONTH, que permite o deslocamento mensal com o segundo critério:

=TEXT(EOMONTH(B8 & " 1",1),"mmm")

O B8 & " 1" cria uma string que o Excel pode interpretar como uma data.

O EOMONTH(...,1) retorna o último dia do próximo mês.

Os formatos TEXT(...,"mmm") que datam como apenas o nome abreviado do mês.

    
por 31.05.2018 / 16:13
3

Experimente uma de: (a primeira é a minha resposta melhorada à luz da resposta de PeterH, a segunda é a minha resposta original)

=TEXT(DATE(2000, MONTH(1 & B8) + 1, 1), "mmm")
=TEXT(DATE(2000, MONTH(DATEVALUE(B8 & " 1")) + 1, 1), "mmm")

Isso lida automaticamente com a rolagem de 12 + 1 = 13 para 1 (interpretado como o primeiro mês do ano seguinte).

AfunçãoDATEVALUE()pegaráadatatextualeretornaráo" número de série " da data. No nosso caso, estamos usando DATEVALUE(B8 & " 1") ... mas por quê?

O uso de DATEVALUE("Jan") falhará com um erro #VALUE! .

Para contornar isso, adicionamos um " 1" para torná-lo DATEVALUE("Jan 1") , que o Excel interpreta como "1 Jan 2001" - por sorte, não nos importamos com o ano.

YEAR(DATEVALUE("Jan 1")) == 2001

De acordo com a resposta de PeterH, MONTH(DATEVALUE(B8 & " 1")) pode ser simplificado para apenas MONTH(1 & B8) , também mostrado acima.

Aqui 1 & B8 resolve para 1Jan , que o Excel analisa felizmente.

    
por 31.05.2018 / 14:33
2

Outra opção seria usar CHOOSE :

=CHOOSE(MATCH(B8,{"JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"},0),"FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC","JAN")

Ou, para simplificar ainda mais, você pode usar MONTH para calcular qual número do mês está em B8 e usá-lo como o valor do índice em CHOOSE :

=CHOOSE(MONTH(1&LEFT(B8,3)),"FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC","JAN")
    
por 31.05.2018 / 14:49
-2

Com uma abordagem diferente, gostaria de sugerir que o nome do mês pode ser alternado na célula adjacente.

Verifique a captura da tela:

Sigaestasetapas:

:Editado:

  • Crieumalistademesesusandoapenastrêscaracteres,comocrieiem ColunaA.
  • SelecioneumalistademesesnacolunaAeamp;nomeieointervalo,onomedadoé,MnthName.
  • NacélulaD91,apliqueValidaçãodedados,em"Setting Tab", selecione "List" e em "Source" escreva o intervalo nomeado, MnthName .
  • Na célula F91, escreva esta fórmula:
    =TEXT(DATE(2018,MATCH($D$91,MnthName,0)+COLUMNS($F$91:F91),1),"mmm") .

  • Selecione o nome do mês na lista suspensa, na célula F91 que você encontra o nome da próxima mariposa.

N.B.

  • Ajuste o endereço da célula conforme sua necessidade.
por 02.06.2018 / 20:35