我想计算 Excel 电子表格中每行某列数据集之间的差异。表格/矩阵通常是实现此目的的最佳方式,我使用数据集创建一列和一行,并创建一个简单的公式来计算每个组合的差异。但是,对于非常大的数据集(10,000 行 x 10,000 列),Excel 会变得非常不稳定并不断崩溃。我是否可以通过数据透视表或任何其他方法有效地实现此目的?
答案1
一般来说,我认为如果你试图计算这么多的差异,那你就计算得太多了!你需要显示所有数据的唯一原因是为了让别人看。
一个人不可能一次性查看那么多数据。他们可以通过计算部分项目的差异来获得类似的结果,或者实际上只需稍微改进问题并直接获得结果,而无需计算包含 1 亿个单元格的表格。
综上所述,下面是创建此类连接的一种方式。理论上,以下内容适用于少于 1000 个项目的列表。大于该值的集合与其自身的笛卡尔连接将产生比电子表格中显示的行数更多的行。
使用数据>获取和转换数据>从表/范围在数字列表上创建查询。
在 Power Query 编辑器中,展开左侧的查询列表,然后右键单击刚刚创建的查询并选择“引用”。
现在选择这个新创建的查询,并使用添加列>自定义列并像这样配置它(即将原始查询的名称放在公式中):
完成后,您将看到一个新列,每行都包含单词“表格”。单击该列顶部的双箭头可展开列表。
这现在已经在表和其自身之间创建了笛卡尔连接。
现在添加一列来计算两列之间的差异。使用添加列>自定义列,如下所示:
之后,您将得到集合中每一项与集合中每一项(包括其本身)之间的差异。您可以选择过滤输出,以不包括某项与其本身之间的比较。
现在,您可以使用主页>关闭并加载将数据放回工作簿。对于 1000 个项目的列表,我的计算机花了几秒钟来加载。