Originalmente, interpretei mal sua pergunta. Você tem os dados à direita e deseja convertê-los para os dados à esquerda? Eu não sou profissional, mas o jeito que eu faço é como mostrado na foto aqui (eu não sei tem bastante representante para postar fotos em linha).
Essencialmente, eu criei um par de índices auxiliares à esquerda, o primeiro rastreia a posição atual da linha que incrementa se houver dados a serem obtidos, caso contrário, ele é zerado:
=IFERROR(IF(INDEX(data,A3+1,B3)<>"",A3+1,1),1)
O IFERROR é apenas porque eu tinha uma matriz (dados) nomeada que tem um limite e eu não queria verificar se esse limite tinha sido atingido. A3 é a referência à linha usada anteriormente que está logo acima da célula atual, enquanto B3 é uma referência à coluna usada anteriormente (acima e à direita).
A fórmula do índice da coluna apenas pega a linha atual e, se for 1, significa que iniciamos uma nova coluna, então pegue a coluna usada anteriormente e adicione 1, caso contrário, ficaremos na mesma coluna.
=IF(A4=1,B3+1,B3)
A coluna de data apenas pega o índice da coluna atual e o obtém usando "index"
=IFERROR(INDEX(dates,1,B4),"")
A coluna de valor apenas pega os índices de linha e coluna e exibe o valor da tabela:
=IFERROR(INDEX(data,A4,B4),"")
Os índices iniciais para linha / coluna são definidos como 1 para começar, o restante é gerado automaticamente. Espero que isso ajude!