Reduzir, Alterar, ou Simplificar Tamanho de Macro

Tenho o seguinte código implementado em um arquivo no intuito de extrair e rearranjar alguns dados na planilha:

Sub IfAndFormula()
Dim oSheet as Object, EndRow as Long
	GlobalScope.BasicLibraries.LoadLibrary("Tools")
	oSheet = ThisComponent.getCurrentController.getActiveSheet()
	EndRow = GetLastUsedRow( oSheet )

'--------------------------------------------------
'	Usado atualmente:
'--------------------------------------------------
	For i = 3 To EndRow
		oSheet.getCellByPosition(6, i-1) _
			.setFormula("=IF(AND(A" & i & "<>" & Chr$(34) & "" & Chr$(34) & ";" & _
										"D" & i & "=$G$2);C" & i & ";" & 	Chr$(34) & "" & Chr$(34) )
		oSheet.getCellByPosition(7, i-1) _
			.setFormula("=IF(AND(A" & i & "=" & Chr$(34) & "" & Chr$(34) & ";" & _
										"D" & i & "=$H$2);C" & i & ";" & Chr$(34) & "" & Chr$(34) )
	Next i	
End Sub

—EDIT—
Necessito de algumas sugestões, alterações ou ideias de como reduzir isso.
Arquivo teste:
ExemploAsk.ods (32,1,KB)

Fiz alguns testes, alterei algumas linhas de código. Sem sucesso. Já estou nisso tem um tempo.

Minha intenção real no arquivo exemplo era extrair as informações que estão todos em apenas 1 coluna, e separá-los em duas colunas de tal forma que as informações ficassem alinhadas.
.
No tópico está apenas uma faixa do código.
.
Posto abaixo para registro, com arquivo exemplo:

Option Explicit

Public oDoc			as Object
Public oSheet		as Object
Public oRange 		as Object
Public oSvc			as Object
Public i			as Long

Sub ExtraiTransmitente()

	oDoc = ThisComponent	'Retorna o doc atual
	oSheet = oDoc.CurrentController.getActiveSheet()	'Retorna planilha ativa
	oSvc = createUnoService( "com.sun.star.sheet.FunctionAccess" )	'Cria instancia do objeto
	oRange = oSheet.getCellRangeByName("D:D").queryContentCells(4).RangeAddresses(0)	'Retorna endereço do intervalo que tenha conteudo
	
	'Faz leitura do intervalo e insere formula cont.se para extrair os transmitentes
	For i = oRange.StartRow+2 To oRange.EndRow
		oSheet.getCellRangeByName("E" & i).Value = _
			oSvc.callFunction("COUNTIF", Array(oSheet.getCellRangeByName("D" & i), Ucase("Transmitente") ) )
		'Se o resultado for > 0, então obter nomes
		If oSheet.getCellRangeByName("E" & i).Value > 0 then
			oSheet.getCellRangeByName("E" & i).String = oSheet.getCellRangeByName("C" & i).String
		Else
			oSheet.getCellRangeByName("E" & i).String = ""
		End If
	Next i
	
	'Se igual a transmitente, concatenar
	For i = oRange.StartRow+2 To oRange.EndRow
		If oSheet.getCellRangeByName("D" & i).getString = Ucase("Transmitente") then
			oSheet.getCellRangeByName("F" & i).String = oSvc.callFunction("CONCAT", Array(oSheet.getCellRangeByName("E" & i), Chr$(10), oSheet.getCellRangeByName("E" & i+1) ) )
		End If
	Next i
	'Deleta coluna usada primeiro para extrair os transmitentes
	oSheet.getColumns().removeByIndex(4, 1)

End Sub

Sub ExtraiAdquirente()

	oDoc = ThisComponent	'Retorna o doc atual
	oSheet = oDoc.CurrentController.getActiveSheet()	'Retorna planilha ativa
	oSvc = createUnoService( "com.sun.star.sheet.FunctionAccess" )	'Cria instancia do objeto
	oRange = oSheet.getCellRangeByName("D:D").queryContentCells(4).RangeAddresses(0)	'Retorna endereço do intervalo que tenha conteudo
	
	'Faz leitura do intervalo e insere formula cont.se para extrair os adquirentes
	For i = oRange.StartRow+2 To oRange.EndRow
		oSheet.getCellRangeByName("F" & i).Value = _
			oSvc.callFunction("COUNTIF", Array(oSheet.getCellRangeByName("D" & i), UCase("Adquirente") ) )
		'Se o resultado for > 0, então obter nomes
		If oSheet.getCellRangeByName("F" & i).Value > 0 then
			oSheet.getCellRangeByName("F" & i).String = oSheet.getCellRangeByName("C" & i).String
		Else
			oSheet.getCellRangeByName("F" & i).String = ""
		End If
	Next i
	
	For i = oRange.StartRow+2 To oRange.EndRow
		If oSheet.getCellRangeByName("D" & i).getString = Ucase("Adquirente") then
			oSheet.getCellRangeByName("G" & i).String = oSvc.callFunction("CONCAT", Array(oSheet.getCellRangeByName("F" & i), Chr$(10), oSheet.getCellRangeByName("F" & i+1) ) )
		End If
	Next i

	For i = oRange.StartRow+2 To oRange.EndRow
		If oSheet.getCellRangeByName("G" & i).String = "" then
			oSheet.getCellRangeByName("H" & i).String = oSheet.getCellRangeByName("G" & i+1).String
		Else
			oSheet.getCellRangeByName("H" & i).String = ""
		End If
	Next i

	For i = oRange.StartRow+2 To oRange.EndRow
		If oSheet.getCellRangeByName("H" & i).String = "" then
			oSheet.getCellRangeByName("I" & i).String = oSheet.getCellRangeByName("H" & i+1).String
		Else
			oSheet.getCellRangeByName("I" & i).String = ""
		End If
	Next i
	'Deleta colunas usadas para extrair os adquirentes
	oSheet.getColumns().removeByIndex(5, 3)

End Sub

ExemploAsk.ods (30,3,KB)

Olá, @FelipeAle , tem algo errado quando acionada a macro do Adquirente…

Sim. Esse era um dos problemas iniciais.
.
No tópico, que editei a fim de focar só na parte do código, também havia essa dúvida.
.
1) Na qualificação transmitentes, puxa corretamente por ter uma quantidade máxima de nomes que quero extrair. No máximo 2. Deu mais ou menos certo.
.
2) Nessa planilha, quando na coluna Resumo (Transação) está escrito PARTILHA, as colunas a direita (nome e qualificação), não seguem o mesmo padrão de ordem.
.
Na primeira linha preenchida com matrícula, ao invés de ficar:
matricula - resumo - nome (transmitente) - qualificação (transmitente)
.
Fica:
matricula - resumo - nome (adquirente) - qualificação (adquirente)
.
Tentei usar algumas fórmulas, como CONT.SE(S), a fim de padronizar a coluna primeiro, antes de aplicar o código, mas não tive muito sucesso ainda.
.
Se puder me ajudar a pensar em algo, fico muito agradecido. Estou nisso a semanas. rs
.
Ainda iria abrir outro tópico, melhor explicado, para focar só nisso.

Já tentou, replicar os dados das Colunas A e B e depois Classificar Crescente coluna A e B e Decrescente a coluna D. Para depois acionar as Macros !!!

Não entendi muito bem quanto a replicar as colunas A e B. Mas ordenar decrescente as colunas D e C, eu já tentei.
.
Teoricamente funciona bem para o que quero, desde que seja selecionado o intervalo de nome e qualificação referente a partilha apenas, a fim de não afetar os demais dados.
.
Por isso acabei pensando em fazer por formula.