Extrair campos a partir da direita

Recebi um arquivo em PDF e, preciso realizar alguns cálculos. Através do Reader, gravei em TXT, abri no Writer, excluí cabeçalhos, rodapés, etc , gravei como csv e ao importar para o calc, todos os dados foram abertos na mesma linha, como exemplo abaixo:

DOSAGEM;DE;CORTISOL;1;9,86;9,86;MAC;Grupo
DOSAGEM;DE;RENINA;1;13,19;13,19;MAC;Grupo
RADIOGRAFIA;OCLUSAL;1;3,51;3,51;MAC;Grupo
URETROCISTOGRAFIA;1;52,11;52,11;MAC;Grupo
LARINGOSCOPIA;78;47,14;3.676,92;MAC;Grupo

Conversao.png

O problema é que ao gerar o PDF ele não trabalha com nomes compostos,separando um em cada coluna, ou seja, o relatório é esteticamente bonito mas, não funcional.
Gostaria de poder extrair os valores separados por ; (ponto e vírgula), a partir da direita, tomando o exemplo da laringoscopia:

78  47,14  3676,92 MAC Grupo.

O nome do procedimento não é necessário, pois tenho o código (não apresentado aqui) e consegui realizar a extração, através da formula ESQUERDA(Célula;Caracteres).
Tentei conversores online mas, em função da estrutura do arquivo, várias células mescladas, realizei um trabalho de reedição e questionei se fosse contar manualmente, demoraria menos.
Como o ultimo campo não varia (Grupo), pode ser copiado e colado ou extraído através de DIREITA(Célula;5).
Consegui extrair o penúltimo campo, exemplo MAC, utilizando

=SE(CONT.SE(CELULA;"*MAC*")=1;"MAC";"XXXX").

Não consegui extrair os 3 próximos.

Agradeço desde já, pela ajuda.

Se você ainda não consegui resolver esse problema me avisa que eu tenho uma ideia.

Coloque este Código que fiz em VBA. Acredito que possa te ajudar.
Como possuí diversas variáveis iguais para pesquisa “;”, então fica mais fácil num procedimento.

Rem Attribute VBA_ModuleType=VBAModule
Option VBASupport 1

Sub Separar ()

	Dim Dados 			as String
	Dim Valor	 			as String
	Dim ValorFinal 		as String
	Dim Verifica 			as String
	Dim Caracteres 		as Integer
	Dim i, m, n			as Integer
	
	m = 1
	
	For n = 2 to 6
	
	Dados = Worksheets ("Plan1").Cells(n,1).Value

	Caracteres = Len (Dados)
	
		For i = 1 to Caracteres
	
			Verifica = Mid(Dados,i,1)
			
				If Verifica <> ";" Then
					Valor = Valor & Verifica
				Else
					ValorFinal = Valor
					Cells(n, m + 1) = ValorFinal
					Valor = ""
					m = m + 1	
				End If
			
			ValorFinal = Valor
			Cells(n, m + 1) = ValorFinal
		
		Next i
		
		Verifica = 0
		Valor = ""
		m = 1
		
	Next n
	
End Sub

Coloque suas informações a partir da célula A2 para baixo até a A6.

Prezado Grafeno:
Agradeço sua dedicação e resposta.
Funcionou com nomes simples…
Os nomes compostos “Dosagem de Cortisol,etc”, acabam “empurrando” os demais campos para frente, por isso que imaginei algo com a função DIREITA.
Utilizando o exemplo acima, o que efetivamente procuro é uma função/fórmula que mostre 1 9,86 9,86, porque MAC e Grupo, já consegui.
A lista compreende um número variável de procedimentos e gostaria de reduzir o trabalho de edição.

@NewtonLN, quem apresentou a resposta foi o @Conras. Eu apenas ajustei a formatação do código.

O texto do campo inicial estão em caixa alta? Se não, pode colocar o mesmo selecionando-os (no Writer faz). Pode desprezar os mesmos? os últimos campos são sempre os mesmos, como no exemplo?

Caso sim para as perguntas, sugiro fazer uma cópia do arquivo.

Abrir a cópia no Writer e usar o Localizar e substituir. Marcar “Expressões regulares” digitar na caixa de procura: [:upper:] e no substituir deixa nada, manda substituir todos.

Depois elimina os “;” duplicados…

Caso precise apagar algum “;” que ficou sozinho no início ou no final veja aqui um exemplo.

Não tenho como fazer um teste efetivo, o meu foi parcial e por isto considere minha resposta só um chute!

Se usar o [:alpha:] tudo o que for letra vai ser localizado e pode ser substituído. Mas o [:upper:] pode ser mais interessante, por que os últimos campos são fáceis de selecionar(no calc) e mudar para minúsculo, por exemplo, isto pode ajudar mais como opção.