Então, eu tenho um conjunto de dados de transações. Nela, posso identificar a qual grupo de transações uma linha pertence a seu ID. A coluna remove é altamente compactada - sinaliza se uma linha precisa ser removida ou permanece. No entanto, para que a coluna removida funcione, tudo precisa ser classificado de uma maneira específica - ID primeiro, data segundo (mais antigo para o mais recente), terceiro (maior para o menor).
Imagens: link
Então, aqui estão as regras que estou tentando seguir:
1) Se uma transação negativa ocorrer antes de qualquer transação positiva, nós a descartamos - essa é a essência geral do que está acontecendo com a coluna remove.
2) Precisamos emparelhar as transações negativas com sua transação positiva de compensação correspondente - no entanto, a transação positiva precisa vir primeiro (ou ao mesmo tempo).
Eu descobri como fazer 1 e 2 - esse é o conjunto atual de fórmulas dadas. No entanto, onde estou lutando é:
3) Pare as transações negativas com o débito mais recente, em vez do primeiro débito que irá compensá-lo. O exemplo de onde isso mudaria é destacado em amarelo.
Isso já é bastante intensivo em cálculos e, idealmente, eu gostaria que ele escalasse mais de 600.000 transações (já está confuso com os countifs - geralmente eu vou encontrar a maior contagem do mesmo ID, então deslize os countifs para apenas cobrir o maior alcance). Como posso, preferencialmente com fórmulas puras, implementar a regra 3? Eu aceitarei o VBA se essa for a única maneira de fazê-lo em tempo hábil.