我正在寻找一个 Excel 公式来拖拽大型数据集。我的问题是我有几百个重复的站点,年份各不相同(参见子集 Excel 表格示例)。在前几年的发生中,公式等于相应的 %change 单元格,但第二年将记录当前年份和前一年之间的差异(例如公式为 =D3/D2-1)以及使用平均函数对所有年份的数字进行平均。我想自动执行这些公式并让 Excel 识别站点名称更改。我一直在尝试 IF 语句,但似乎做不到正确。任何帮助都值得感激。TIA
答案1
只要您的数据按照以下方式排序:a)所有站点都分组(如图所示),b)所有年份都按从低到高的顺序排列(如图所示),这非常非常容易。
对于同一站点/同一站点的工作,站点会分组,因此如果它们是同一站点,则该列的单元格相同(因此,例如,A4=A5,即“站点 1”=“站点 1”),如果不同,则它们不相同(因此 A4<>A5 即“站点 2”<>“站点 3”)。然后,一个简单的IF()
测试会判断它们是否匹配,因此可以根据结果分支到两个公式中的任一个。因此,如图所示,假设 2020 年的站点 1 是单元格 A11(因此 2019 年的是 A10),第一个站点 2 是 A2。然后,您可能会在单元格 E11 中看到以下内容:
=IF(A11<>A10,D11,D11/D10-1)
对于 E11,它会看到 A11=A10,因此它会执行第二个公式并得出“1”,而对于 E12,它会看到 A12<>A11 并执行第一个公式,得出“0.104651163”。
然后是平均值。还有一个不错的函数。它被调用SUMIF()
,它允许您测试一系列单元格是否符合条件,如果符合,则对该范围或其他not necessarily obviously
匹配范围求和。因此,您可以将整个 A 列指定为测试范围,然后将条件设置为“这是 A 列值的第一个实例吗(就像上面所做的那样,只是目标不同),如果是,则执行SUMIF()
另一件事来获取平均值,如果不是,则给出结果""
。
另一个功能是 Excel 提供的类似功能: COUNTIF()
它的作用正如其名称所示。这样,您便可以计算平均值的总和,并通过计算平均值来计算要除以的年份数。如下所示:
=IF(A2=A1,"",SUMIF($A$2:$A$13000,"="&$A2,$E$2:$E$13000)/COUNTIF($A$2:$A$13000,"="&$A2))
公式中使用$
's 是为了允许您向下填充,而范围不会发生变化,也不会查看变化的站点的列。