从Excel中的二维数据数组中的每一列中减去一列

从Excel中的二维数据数组中的每一列中减去一列

我有一个需要重新归零的二维数据数组。也就是说,我必须从矩阵的每一列中减去我计算出的列向量。

在此处输入图片描述

用数学术语来说,如果我们定义一个“身份向量”,其中每个元素都是 1,那么我需要执行以下操作:

在此处输入图片描述

我已设法将矩阵从 500k 行(几百列)缩小到 160k 行(不到一百列),但它相当大并且手柄拖动似乎会导致 Excel 崩溃。

答案1

对于正常大小的数据集,使用增量列向量“$”锁定的简单逐个单元格减法即可工作,例如

=B2 - $I2

但是,您的问题似乎更多地与数据大小有关,并且 Excel 在进行简单的减法计算时崩溃。可能是所需的内存量超出了您的计算机可用的内存量。以下是一些建议:

1. 从其他工作表/工作簿计算,并手动计算

如果您将归零表放在新工作表/工作簿中,并手动进行计算,结果会怎样?在新工作表中准备公式:

=Sheet1!B2-$I2

复制并粘贴,然后按计算。

2. 尝试使用数组公式,因为 Excel 会进行批量计算

或者,您可以尝试使用每列数组公式 =(B2:B1000 - $I2:$I1000) 和 CTRL+SHFT+ENTER,同时选择整个输出列 L2:L1000。不确定这是否真的能加快速度,但值得一试。

3. 将文件保存为 Excel 二进制文件 (*.xlsb)

以二进制格式保存文件可能会减少内存需求,或者至少减少保存文件或自动备份时的处理负载。请参阅此处https://www.spreadsheet1.com/how-to-save-as-binary-excel-workbook.html

4. 尝试使用基于云或其他电子表格

尝试在 Office Online 或 Google Sheets 中处理数据。或者尝试安装 Open Office Calc?

5. 使用 64 位计算机和 64 位版本的 Excel

您可以通过按“Windows 按钮”+“暂停/中断”来检查您正在运行的 Windows 类型(32 位或 64 位)。点击此处了解您正在从 Office 运行的是哪种类型https://www.howtogeek.com/288001/how-to-find-out-which-version-of-microsoft-office-youre-using/

6. 将撤消堆栈深度设置为 0

您可以通过将撤消堆栈深度设置为 0 来暂时关闭撤消:https://support.microsoft.com/en-us/help/211922/how-to-modify-the-number-of-undo-levels-in-excel

7. 信任文件

还可以尝试在信任中心将文件位置添加为信任区域。请参阅此处https://support.microsoft.com/en-us/office/add-remove-or-change-a-trusted-location-7ee1cdc2-483e-4cbb-bcb3-4e7c67147fb4

8.不要使用Excel

作为最后的手段,使用 Matlab 或 Octave 或 SciLab 等开放替代方案处理数据。

/悲伤的脸/

相关内容