Excel中的复杂事务配对


0

所以我有一个交易数据集。在其中,我可以通过其ID识别一行所属的交易组。删除列是高度压缩的 - 它标记是否需要删除或保留一行。但是,为了使删除的列工作,所有内容都需要按特定方式排序 - ID优先,日期秒(最旧到最新),金额3(从最大到最小)。

图片:https//imgur.com/a/mAnqi

所以这是我要遵循的规则:

1)如果在任何正面交易之前发生了否定交易,我们就会将其抛弃 - 这是删除列发生的一般要点。

2)我们需要将负面交易与其相应的偏移正交易配对 - 但是,正交易需要首先(或同时)。

我已经弄清楚如何做1和2 - 这是给出的当前公式集。但是,我在努力的地方是:

3)将负面交易与其最近的借记配对,而不是将其抵消的第一笔借记。这将改变的示例以黄色突出显示。

这已经是相当计算密集型的,理想情况下我希望它可以扩展超过600,000个事务(它已经与countifs混乱了 - 通常我会找到相同ID的最大数量,然后将countifs滑动到仅覆盖最大的范围)。我怎样才能,最好用纯公式,实现规则3?我会接受VBA,如果这是及时做到这一点的唯一方法。


我可能遗漏了一些东西,但不会按D列排序解决你的配对问题?理论上,如果您根据金额和金额计数分配项目特定ID,则它们将按时间顺序排列。我很难想象你想要什么,所以我可能会离开。在你的图像中,目标状态是“B”Id线?
jrichall

目标状态是新的日期列 - 我想分配信用抵消的借记日期,以便它们出现在同一天。(我的实际挑战是让它进入同一个月,但我很难想象你可以获得月份而不是白天的情况)
Selkie

对不起,我仍然不确定你真正想要完成什么,但是我会留下一些信息来获取一个月的日期。公式= TEXT([date],“MMM”)将为日期生成一个3个字符的月份。所以,= TEXT(E2,“MMM”)将产生“Jan”。使它成为“1月”的文本(E2,“MMMM”)或“1月18日”的“MMM-YY”
jrichall

我的意思是,按D列排序会起作用 - 技巧就是生成D列,这就是我目前正在做的事情。最终可能会放置一个赏金的问题
Selkie
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.