Тому у мене є набір даних операцій. У ньому я можу визначити, якій групі транзакцій належить лінія за допомогою свого ідентифікатора. Стовпчик видалення сильно стискається, він позначає, якщо рядок потрібно видалити або залишити. Однак для того, щоб знятий стовпець працював, все треба відсортувати певним способом - ідентифікатор спочатку, дату другий (найстаріший до найновішого), сума 3 (найбільший до найменшого).
Зображення: https://imgur.com/a/mAnqi
Ось такі правила, які я намагаюся слідувати:
1) Якщо негативна транзакція відбувається перед будь-якими позитивними операціями, ми викидаємо її - це загальний зміст того, що відбувається з стовпцем видалення.
2) Необхідно об'єднати негативні транзакції з їх відповідною компенсованою позитивною операцією - однак, позитивна транзакція повинна бути першою (або одночасно).
Я зрозумів, як зробити 1 і 2 - це поточний набір формул. Однак, де я борюся, це:
3) Обмінюйте негативні транзакції з останнім дебетом, а не з першим дебетом, який його буде компенсовано. Приклад того, де це зміниться, виділено жовтим кольором.
Це вже досить інтенсивно обчислюється, і в ідеалі я хотів би, щоб він масштабував понад 600 000 транзакцій (це вже незрозуміло з рахунками - як правило, я знайду найбільший підрахунок того ж самого ідентифікатора, а потім пересуньте лічильники, щоб покрити лише найбільші діапазон). Як я можу, переважно з чистими формулами, прийняти правило 3? Я прийму VBA, якщо це єдиний спосіб зробити це своєчасно.