我有一个大型电子表格(>15000 行),其中包含公司名称、位置、生产编号和位置的纬度/经度。 示例表
我试图将每个经纬度坐标与所有其他坐标进行比较,以找到在 0.01 度以内的坐标。让我们将这些位置集合称为“区域”。然后,我想获得每个区域的总销售量/天和销售量/天。我一直在解决这个问题,首先尝试使用如下公式获取现有行 0.01 度要求范围内的所有纬度/经度位置的单元格地址:
=CELL("address",INDEX(AB:AB,MATCH(MIN(ABS(AB:AB-[@Lat])),ABS(AB:AB-[@Lat]),0)))
或者更复杂的公式:
=ABS(RANK([@Lat],AB:AB)-MATCH(MIN(LARGE(AB:AB,ROW(INDIRECT("1:"&COUNT(AB:AB)-2)))-LARGE(AB:AB,ROW(INDIRECT("1:"&COUNT(AB:AB)-2))+2)),LARGE(AB:AB,ROW(INDIRECT("1:"&COUNT(AB:AB)-2)))-LARGE(AB:AB,ROW(INDIRECT("1:"&COUNT(AB:AB)-2))+2),0)-1)<=1
其中 AB 是纬度列。
但它们返回 #N/A 或 0。也许我需要使用 VBA 脚本来迭代纬度/经度比较。但是,我对 Excel VBA 不太熟悉。我已将一小部分数据(<2000 行)复制到另一张表中,以使数组公式更易于测试。
答案1
您可以通过选择数据并转到“插入”->“表格”->“数据透视表”来创建数据透视表。如果您只选择其中一个数据,Excel 可能会正确猜出所有数据的范围。
例如,如果您希望所有公司的经度要求都在 0.01 度以内,请将字段 Long 和 Company 拖放到“行”区域。顺序很重要,必须先是 Long 字段,然后是 Company 字段。然后,您要做的就是按 0.01 度要求对经度进行分组。
有几种方法可以做到这一点。您可以转到数据 -> 大纲 -> 分组,或者您可以转到数据透视表工具 -> 分析 -> 分组 -> 分组选择,或者您可以右键单击单个项目(长数据)并从快捷菜单中选择分组。无论哪种方式,都会出现分组框,Excel 会根据您的值自动设置起始值和结束值。您所要做的就是将 By 设置为 0.01。Excel 会自动根据经度值对所有公司进行分组,并按 0.01 要求进行分组。