(não é possível adicionar como comentário, pois não tenho 50 reputação)
Para exibir meses, é possível usar o seguinte formato (observe que isso não atende diretamente às suas necessidades exatas, mas você pode modificá-lo conforme apropriado). Também adicionei algumas cores às minhas strings para esclarecer os intervalos de tempo: no exemplo principal Vermelho por mais de um dia, preto por um dia. O segundo exemplo tem vermelho para o ano +, azul esverdeado entre um quarto e um ano e azul caso contrário. Obviamente, você pode usar diferentes especificações de formatação conforme desejar.
[Red][>1]yy\y mm\m dd\d hh:mm:ss;[Black][<=1]hh:mm:ss;[Red]-0.000000;[White]@
ou
[Red][>=364.5]yy\y mm\m dd\d;[Color50][<=122]mm\m dd\d;[Color5]mm\m dd\d;[Black]@
Para formatar "32,5" como 32d 12:00:00, você pode usar [d]\d hh:mm:ss
, observe os colchetes, indicando que deseja incluir valores maiores que 31 para o número de dias.
A notação \ instrui o excel a incluir especificamente a letra após o símbolo \, em vez de interpretá-la como metadados para o comando (por exemplo, d, sem barra, produziria imediatamente os dias novamente). Isso é equivalente à notação "" que você vê em outros exemplos.
Algumas limitações e / ou bugs:
1) você não pode especificar mais de quatro tipos de formatação, o último dos quais deve ser apenas para texto. Isso significa que apenas três são utilizáveis para formatar datas, a terceira das quais não pode conter comparações maiores ou menores que as.
2) o mm em meses é realmente alto em 1 ao fazer uma diferença de data (a partir do Excel 2010), pois o Excel realmente armazena as diferenças de data como DateTimes completos e não há 0 mês, mas janeiro é o primeiro mês. Os dias parecem não ter esse problema, pois "1.1" é exibido como 1 dia e 0,9 é exibido como 0 dias (ambos com 1 mês: P). Eu não sei como fazer contas no diálogo de estilo de célula (por exemplo, (mm-1) \ m); portanto, se você realmente deseja que esses números sejam precisos (subtraia 1 do mês), será necessário escrever um vB script para convertê-lo e exibir a sequência final de texto.
3) O Excel não lida adequadamente com as diferenças de horário negativas
Como alternativa, você pode fazer a formatação na própria célula com uma fórmula como
=IF((B2-A2)>1,DATEDIF(A2,B2,"y")&"y "&TEXT(DATEDIF(A2,B2,"ym"),"00")&"m "&TEXT(DATEDIF(A2,B2,"md"),"00")&"d",TEXT(A2-B2,"hh:mm:ss"))
Isso exibirá as informações como hh: mm: ss se for menor que um dia e y MM dd se for maior que um dia. Isso não estará sujeito ao erro de menos de um mês, como acima. No entanto, essa célula é realmente texto e não é mais um valor numérico. Portanto, você não pode (diretamente) fazer mais cálculos com isso.