继续介绍列表数据处理。 上一次我们介绍了列表数据的交集(列表数据处理:交集 - Excel函数式编程)。 今天我们介绍列表的差集。 假设两个集合分别是A,B,其差集A - B指的是只在A中出现,不在B中出现的元素: 以实际例子来说, A列表示setA,C列表示setB, setA - setB的结果就是: {a, c}。 上一节我们介绍了交集的实现,其自定义函数这这么定义的,
其中,最关键的就是第三行生成筛选条件。 我们的思路是循环setA,然后计算其中每一个元素 x 在setB中出现的次数。 只要 x 在setB中出现了,就表示这个元素需要出现在最后的交集中。 所以,我们的思路顺利成章,只要 x 在setB中出现,就表示这个元素不能出现在最后的差集中。 注意,这里很多人会犯一个错误,就是将第三行中的”=“改为"<>",
乍看上去没什么问题,我就是统计一下那些没有在setB中出现的元素吧。 但是看一看例子,假设考虑setA的第一个元素“b", 比较setB <> "b",会得到数组, TRUE FALSE FALSE 经过--处理后,变成数值数组: 1 0 0 SUM求和后,就会得到结果1,作为筛选条件,”a“将会出现在最后的差集中。 正确的方法是判断一下setB中等于元素 x 的个数是否等于0。因为只有等于0的才表示不在setB中出现,
于是,可以实现下面的自定义函数:
使用方式如下: 详情咨询客服(底部菜单-知识库-客服) Excel+Power Query+Power Pivot+Power BI 自定义函数 底部菜单:知识库->自定义函数 面授培训 底部菜单:培训学习->面授培训 Excel企业应用 底部菜单:企业应用 |
|