同比公式在 Excel 里实际上挺好办的,但搞砸了之后总认定逻辑有点绕。
实际上说白了,就是把这一年的数据跟去年的数据一一对比,算出个差异率。
要是想算这个差异,最直接的方式就是新建个列,把这一年的数值拷下来,再减去去年的数,最终除以去年的数,这样算出来的就是一个百分比了。 大量人一启动都会想用 `=YEAR(CURRENTYEAR)-YEAR(APPLECOST)` 这种硬 кост 的方式,结局发现年份是年份,没法比,得先搞清楚年份是数字格式还是文本格式。
要是年份是文本格式,直接减就废了,得先用 `TEXT(CURRENTYEAR, "YY")` 要么 `VALUE()` 把它变成数字再减。
不过说实话,要是数据量大了,手动一个个去改年份格式,那多费事啊,全公司几千个员工,改一年就耽误半天。 最稳妥的办法还是利用 `YEARFRAC` 函数。
这个函数直接算出两个日期之间的年数比例,把工夫变成纯数字,这样跟金额要么数值直接相除就不存有格式兼容的难题了。
比如 `=YEARFRAC(DATE(2024,1,1),DATE(2023,1,1))` 就能算出精确的 1 年。
要是想算同比差异,那就用 `=YEARFRAC(当前日期,上一年的同一天)` 要么直接用相对参照符 `=YEARFRAC(TODAY(),TODAY()-365)`。
这个公式一写出来,不管数据是 2023 年还是 2025 年,都能自动匹配,不用你手动去套公式。 要是认定 `YEARFRAC` 忒精,略微粗糙一点也能够。直接在数据表里右键点一下,选“设置单元格格式”,把区域格式改成“百分比”,这样就算出来了也不用自己乘以 100,等于直接显示成 12.5% 这种样子,看着舒服。
不过有时候显示成 12.5% 的人反而不忒习惯,要是嫌费事,还是得手动乘个 100 最踏实。
实际上不管选哪种,核心逻辑都是“今年的数”减去“去年的数”,再除以“去年的数”。 举个例子,我想算双十一的销量同比去年增长了多少。假设今年 A1 是 1000,A2 是去年的销量 800。在 B1 写 `=A1/A2-1`,结局就是 0.25,也就是 25%。再在 B2 写 `=A2/A3-1`,算出 12.5% 的增长。并且这个公式要是放在整个数据表里,像 A3:A100 这种区域,它会自动套用到每一行,一行就一行。
要是想一次性算出全体数据,再用 `=SUMPRODUCT((A:A)/(B:B)-1)` 这种公式就省事多了,一行搞定全表。 实际上大量时候我们不是非要算出个百分比,而是想看绝对的增长额。
这时候用 `=A2-A3` 就能直接拿到今年比去年多了多少,不用管比例,直接看数字挺大还是挺小。
要是想做个动态图表,用 `=YEARFRAC` 算出来的数值作为 Y 轴,`=AVERAGE((A:A)/(B:B)-1)` 算出来的是增长率,这两者配合起来,分析起来有多有意思。 还有个细节要注意,要是日期格式是数字格式,直接减年份就对了;要是文本格式,就得先转换。转换的时候能够用 `VALUE()` 函数,要么用 `CATCHERROR` 来防止出错。
要是数据里有空值要么误输入,`YEARFRAC` 会把空值当成小数处理,这样别的数据可能就被它带偏了,故此最好先 `=IF(IsBlank(A1),"",A1)` 先把空值删了再用 `YEARFRAC`。 要是想算同比,实际上还有个更直观的方式,就是直接用 `YEAR` 函数取年份局部,然后 `MINUS` 掉去年的年份。
比如 `=YEAR(A1)-YEAR(B1)`,这个公式好办粗暴,要是年份是数字格式,直接减就行;要是文本格式,就得提前格式化。
不过这个公式有个小坑,要是去年数据是负的,今年数据是正的,算出来的年份可能变成负数要么零,再减一次可能还是负数,这时候公式就失效了,得靠 `ABS()` 要么检查年份有没有变。 实际上说白了,同比的核心就是“相对变化”,就是把今年的数和去年的数拉齐,看哪位大。用 `YEARFRAC` 函数是目前最推荐的,出于它不管年份是 2020 还是 2030,都能自动算出准的年比例,不用你操心年份格式对不对。
要是数据量大,那就用 `SUMPRODUCT` 批量算,不然一个个单元格点来点去忒累了。 最终提个建议,要是做报表,别光看同比数字,要多看同比趋势。
要是连续几年都在涨,那说明业务在放量;要是年份数在变大,但金额没变,那可能是通货膨胀要么汇率难题;要是年份数变小,但金额变小了更多,那可能是行业下行。把这些数字放进图表里,一眼就能看出业务的健康程度。
反正快乐点,Excel 老了也没事,反正咱也能把数据算得明明白白,把同比公式设得稳稳当当。