在 A 列中具有相同值的所有行中,确定 B 列中哪个值与键值最接近

在 A 列中具有相同值的所有行中,确定 B 列中哪个值与键值最接近

Excel 2013

我有一组大型模型输出(215K 行)A 列是大约以 2 小时为增量的儒略日期,B 列是大约以 0.6 米为增量的深度,但起始深度可变。(可能是0.1, 0.7, 1.3...或可能是0.05, .65, 1.25....或可以从不同的小值开始)

数据按日期升序分组,然后按深度升序分组。对于每个日期,深度数量始终相同,但其精确值略有不同。我想比较最接近我的校准日期的每个日期的行,这些行是在深度 1.5、3、6、12、18 和 55 处收集的。

一个想法是创建 C 列,指示哪一行包含深度字段中的值最接近同一日期的所有测量中的几个关键深度之一。

为了解释这一点,假设我想找到深度最接近 1.5 和 3 的行:

  ColA   ColB  ColC
 70.001 0.322   -
 70.001 0.949   -
 70.001 1.559   1.5 <--Selected because 1.559 is closer to 1.5 than is any other depth with date=70.001
 70.001 2.169   -
 70.001 2.779   3  <--Selected because 1.2.779 is closer to 3 than is any other depth with date=70.001
 70.001 3.389   -
 70.001 3.999   -
[54 rows trimmed]
 70.084 0.443   -
 70.084 1.191   -
 70.084 1.801   1.5
 70.084 2.411   -
 70.084 3.021   3
 70.084 3.631   -
 70.084 4.241   -
 70.084 4.851   -
[54 rows trimmed]
 70.167 0.382   -
 70.167 1.069   -
 70.167 1.679   1.5
 70.167 2.289   -
 70.167 2.899   3
 70.167 3.509   -
 70.167 4.119   -
 70.167 4.729   -
[54 rows trimmed]
 70.25  0.485   -
 70.25  1.276   1.5
 70.25  1.886   -
 70.25  2.496   -
 70.25  3.106   3
 70.25  3.716   -
 70.25  4.326   -
 70.25  4.936   -
[215200 rows trimmed]

我有一个有效的公式。这是一个仅识别最接近 1.5 的深度的版本:(第 6 行的版本) IF(AND(ABS(B6-1.5)<1,ABS(B6-1.5)<ABS(B7-1.5),ABS(B6-1.5)<ABS(B5-1.5)),1.5, "")

基本上,如果给定行的深度与 1.5 的距离小于 1,并且比前一行或后一行更接近 1.5,我们就会得到一个结果。它工作正常,但如果我设置嵌套来挑选其他关键深度,我最终会得到一个非常长的公式:

=IF(AND(ABS(B6-1.5)<1,ABS(B6-1.5)<ABS(B7-1.5),ABS(B6-1.5)<ABS(B5-1.5)),1.5, IF(AND(ABS(B6-3)<1,ABS(B6-3)<ABS(B7-3),ABS(B6-3)<ABS(B5-3)),3, IF(AND(ABS(B6-6)<1,ABS(B6-6)<ABS(B7-6),ABS(B6-6)<ABS(B5-6)),6, IF(AND(ABS(B6-12)<1,ABS(B6-12)<ABS(B7-12),ABS(B6-12)<ABS(B5-12)),12, IF(AND(ABS(B6-18)<1,ABS(B6-18)<ABS(B7-18),ABS(B6-18)<ABS(B5-18)),18, IF(AND(ABS(B6-30)<1,ABS(B6-30)<ABS(B7-30),ABS(B6-30)<ABS(B5-30)),30, IF(AND(ABS(B6-55)<1,ABS(B6-55)<ABS(B7-55),ABS(B6-55)<ABS(B5-55)),55,"")))))))

这个公式有效,但它非常丑陋,计算起来有点慢。我发帖是因为我想知道是否有人有更优雅和/或更高效的方法。

相关内容