Não há uma maneira simples de fazer isso com funções de planilha, porque você precisa acompanhar uma lista de comprimentos arbitrários de preços de compra, que muda com o tempo.
Supondo que o número de unidades é um número inteiro positivo, posso fazê-lo com uma coluna auxiliar. Digamos que os dados estejam nas colunas A-D e a coluna auxiliar seja E.
Em E2, coloque
=IF(D2="Buy",E1&REPT(C2&",",B2),MID(E1,1+FIND("*",SUBSTITUTE(E1,",","*",B2)),32767))
Em seguida, no final, a célula final conterá uma string de texto que você precisa transformar em uma fórmula =AVERAGE()
usando um dos métodos em link
Infelizmente, é provável que você encontre o limite de comprimento da célula, que é 32768 caracteres.