所以我有一个交易数据集。在其中,我可以通过其 ID 识别一行属于哪组交易。删除列是高度压缩的 - 它标记一行是否需要删除或保留。但是,为了使删除列正常工作,所有内容都需要以特定方式排序 - ID 优先,日期第二(从最旧到最新),金额第三(从最大到最小)。
图片:https://i.stack.imgur.com/bhr6k.jpg
以下是我想遵循的规则:
1)如果负面交易发生在任何正面交易之前,我们就会将其抛弃 - 这是删除列的一般要点。
2)我们需要将负交易与其对应的抵消正交易配对 - 但是,正交易需要先发生(或同时发生)。
我已经弄清楚如何实现 1 和 2 - 这是目前给出的一组公式。然而,我遇到的困难是:
3) 将负数交易与其最近的借记配对,而不是将其与抵消该交易的第一笔借记配对。黄色突出显示了此更改的示例。
这已经是相当计算密集型的了,理想情况下我希望它能够扩展到 600,000 笔交易(countif 已经很混乱了 - 通常我会找到相同 ID 的最大计数,然后滑动 countif 以仅覆盖最大范围)。我怎样才能(最好使用纯公式)实现规则 3?如果这是及时完成的唯一方法,我会接受 VBA。