我有一个 Excel 文件,其中包含来自 GIS 的数据,该数据有不到 215k 行。
这些数据中有三列我感兴趣:
- GRID_ID(大约 18k 个唯一值)
- 作物类型(15 个唯一值)
- 区域(所有唯一值)
现在我知道我可以通过单元格 C2 中的此公式获得此(Grid_ID 和 Croptype 的每个组合的面积)的汇总表。A 列包含唯一的 GRID_ID(按升序排列),第 1 行包含从 C 列开始的 Croptype。
=Sumproduct((GRID_ID=$A2)*(Croptype=C$1)*AREA)
公式中的列名被替换为数据的实际范围。
现在,这对于较小的数据集来说效果很好,但对于我的数据集来说,它的速度很慢。有没有更有效的方法来计算这个问题?
答案1
使用 SUMIFS()
=SUMIFS(AREA,GRID_ID,$A2,Croptype,C$1)
这应该会更快。但是,即使数量太多也会减慢计算速度。您可能希望 vba 使用变体数组一次性完成所有操作。