目标是找到两个最相似的运营日,并返回生产测量的平均值。这将有助于未来的运营规划。
所以我有一份过去90天的设施及其运营数据清单。因此每个设施每天将有一排。此信息在其自己的工作表上,并从基于Excel的查询中提取。所以基本上这个标签" PDA"列有" Facility"," Date"和" Total Output"。
在第二个标签上," Analyzer",我有类似的设置。但它的未来日期。我想做的是采取" CPWTotal" (未来日期的总产出)并从" PDA"中找到两个最相似的日子。选项卡并返回这两个"总输出"。我尝试使用索引(小)和最小(绝对)函数的混搭来找到最小的差异,但它并没有像我希望的那样工作。
以下是我最接近的,但与建筑物编号的比较是一个主要的问题。
PDA!AB包含历史输出数据,PDA!W包含历史数据建筑物编号,A3包含未来计划建筑物编号,C3包含未来输出预测。
{=INDEX(PDA!$AB$2:$AB$10000,MATCH(($A3 = PDA!$W$2:$W$10000)*MIN(ABS(PDA!$AB$2:$AB$10000-$C3)),ABS(PDA!$AB$2:$AB$10000-$C3),0))}
我知道()* Min()部分可能会绊倒我,但我的逻辑是如果建筑物编号不匹配则为0 * Min(),因此为该行返回0匹配,我还没有找到更好的方法。
这不是最后一步,但我需要设置索引(匹配)以拉出我需要平均的其余操作数据。
我也对VBA解决方案持开放态度。
编辑:示例数据:
选项卡1:PDA返回(我希望返回输出的工作表)1和2是将返回最接近和第二近似匹配的列。
Bulding#2016 CPW Forecast 1 2
4505 29-Feb-16 1789
4505 01-Mar-16 2270
4505 02-Mar-16 2108
4505 03-Mar-16 2028
4505 04-Mar-16 1912
4600 29-Feb-16 1653
4600 01-Mar-16 2264
4600 02-Mar-16 2232
4600 03-Mar-16 2013
4600 04-Mar-16 1876
4650 29-Feb-16 1799
4650 01-Mar-16 2254
4650 02-Mar-16 2181
4650 03年3月3日至16日
4650 04-Mar-16 1910
Tab 2(PDA)包含我要搜索的信息:
建筑#2016 CPW总产量
4505 29-Feb-16 1799
4505 01-Mar-16 2250
4505 02-Mar-16 2118
4505 03-Mar-16 2025
45014 04-Mar-16 1914
4600 29-Feb-16 1654
4600 01-Mar-16 2262
4600 02-Mar-16 2231
4600 03-Mar-16 2016
4600 04-Mar-16 1826
4650 29-Feb-16 1789
4650 01-Mar-16 2244
4650 02-Mar-16 2161
4650 03-Mar-16 1912
4650 04-Mar-16 1920
我不知道如何上传示例excel文件,但您应该能够复制/粘贴这些表格。
答案 0 :(得分:0)
你将不得不两次使用伪MINIFS;一次返回最小天差,再次返回第一个匹配的行号。
出于动态范围分配的目的,以下将通过AB列中最后一个日期的行号定义每个范围的范围。范围
PDA!W$2:W$14
变为PDA!W$2:INDEX(PDA!W:W, MATCH(1E+99, PDA!AB:AB))
所有范围都将以这种方式定义。完整列引用应不与AGGREGATE function一起使用。数据的添加和删除将自动调整为
D3中的标准公式是
=INDEX(PDA!$AC:$AC,
AGGREGATE(15, 6, ROW(PDA!AC$2:INDEX(PDA!AC:AC, MATCH(1E+99, PDA!AB:AB )))/
((PDA!W$2:INDEX(PDA!W:W, MATCH(1E+99, PDA!AB:AB ))=A$3)*
(ABS(PDA!AB$2:INDEX(PDA!AB:AB, MATCH(1E+99, PDA!AB:AB))-C$3)=
AGGREGATE(15,6,ABS(PDA!AB$2:INDEX(PDA!AB:AB, MATCH(1E+99, PDA!AB:AB ))-C$3)/
(PDA!W$2:INDEX(PDA!W:W, MATCH(1E+99, PDA!AB:AB ))=A$3),1))),ROW(1:1)))
返回第一场比赛。如果存在,请填写第二,第三等比赛。
来自[excel-2010]解决方案的