假设有如下数据窗口,数据窗口有两个列a和b,其中有9行数据,数据中a列有重复。
在网上或者PB相关文献上我们经常可以看到(1)中所示的“数据窗口检查重复行”, 及(2)中所示的“如何在DataWindow中快速删除多行”的datawindow操作技巧。
应用是这样写的:
现在,本人将这些方法进行归纳,并提出(3)和(4)两种新的过滤方法。虽然仅有4种过滤方法,但是如果同时考虑primary!和filter!缓冲区中的数据,其实是提供了⑥种过滤后的数据供使用。
(1)仅保留有重复的行中的后N - 1行①(假设a列该值的重复行为N行,如:A值的重复行为2行,则保留后1行;E值的重复行为3行,则保留后2行)
此时filter!缓冲区中的数据为(2)中的数据
(2)留下Distinct a ,去除掉有重复的行中的后N - 1行②(假设a列该值的重复行为N行,如:A值的重复行为2行,则去掉后1行;E值的重复行为3行,则去掉后2行)
此时filter!缓冲区中的数据为(1)中的数据
(3)留下Distinct a ,去除掉有重复的行中的前N - 1行③(假设a列该值的重复行为N行,如:A值的重复行为2行,则去掉前1行;E值的重复行为3行,则去掉前2行)
此时filter!缓冲区中的数据为“有重复的行中的前N - 1行④”
(4)仅保留有重复的行⑤(假设a列该值的重复行为N行,如:A值的重复行为2行,则A全保留;E值的重复行为3行,则E也全保留;B值的没有重复行,则过滤)
此时filter!缓冲区中的数据为“所有没有重复的行⑥”
注意,上述所以filter操作执行的前提是数据窗口中的数据按照所要filter的列进行排序。