这对 Excel(我)来说是一个有趣的挑战。我有一个包含以下列的电子表格:
Customer Date lat. long.
现在,初始数据集中有 10,000 个这样的数据。我想要一个公式,它能够让我:
- 查找未来六个月内的所有其他记录。
- 计算此客户与#1 中的其他每个记录之间的距离。
- 计算六个月以内和一英里以内的数字。
- 对数据集中的每个客户重复此操作。
我知道有计算距离的方法,但最主要的是要弄清楚如何同时计算未来六个月的距离和距离,而无需预先计算 10K x 10K 网格中的所有距离。
现在,如果我使用一种语言,我只需进行循环并检查每个项目并让它运行。然而,挑战在于制作原型并向朋友证明这在 Excel 中是可行的。
根据评论添加附加说明:
对我来说,主要问题不是距离计算,而是获取每个结果的数量,然后遍历整个列表。例如:
FIRST 12/01/1990 20 30
SECOND 04/02/1991 40 50
THIRD 05/16/1991 10 20
FOURTH 07/22/1991 50 60
现在假设我想要的是:未来六个月的计数以及任何 xy(最后两位数字),当它们相加时距离当前行当前添加的 xy 都小于 51。
对于少量条目,我可以简单地创建另一列,首先计算并进行计数。我不确定如何设置,以便它只需要接下来的六个月,然后只在单个单元格中对 xy 计算运行 countif。在我看来,我想要一个日期足够接近的数组结果,然后对数组中的每个成员进行距离计算,然后计算所有出现正数的成员。但在 Excel 中实现它有点困难。
有什么建议或其他指示吗?
感谢:D
答案1
您可以使用SUMPRODUCT
:
- 统计未来 6 个月的客户数量:
=SUMPRODUCT(([date]-[@date]<=183)*([date]-[@date]>0))
- 使用非常简单的公式(例如在平面上)计算距离少于 20 个单位的客户:
=SUMPRODUCT((SQRT(([@[lat.]]-[lat.])^2+([@[long.]]-[long.])^2)<20)*1)
- 在一个公式中结合两个标准:
=SUMPRODUCT(([date]-[@date]<=183)*([date]-[@date]>0)*(SQRT(([@[lat.]]-[lat.])^2+([@[long.]]-[long.])^2)<20))