在 Excel 里想把颜色给数据加上个求和,实际上挺有意思的,但人一看就想笑,当作你搞错了公式。别急,咱把这事儿捋一捋,直接上手就能用。 起初,咱们得搞清楚颜色实际上是数字。Excel 默认把颜色算成 16777215,这个数字又长又丑,用来算和肯定不中。
故此第一步,得把颜色转换成整数。最常用的方式还是引用颜色代码,比如 16777215。
这时候就得用 VALUE 函数,把它改成数字,比如按回车变成 1。
要么更好办点,直接用 IF 判断,颜色里写了“红色”就回 1,写了“蓝色”就回 2,这逻辑实际上挺顺。
不过得注意,颜色里可能还有“灰色”要么“黑色”,这些一般算成 0,要么忽略掉。 有了颜色数组,咱们接下来如何求和呢?大量人会直接写 SUM 然后塞颜色进去,比如 SUM(1,1,1...),这玩意儿在 Excel 里是绝对不中的,会报错。颜色是个对象,不是纯数字串。
故此务必得把颜色先变成数字再求和。最正统的方式还是用 SUMPRODUCT。它的语法是 SUMPRODUCT(条件,数值)。
也就是说,你得构造一个数组,里面既有颜色本身,又有对应的数值。
比如假设 B2 是颜色,A1 是数字,你能够写 SUMPRODUCT((B2="红色"(B2="1"(B2=1/A1))), A1)。
这行代码有点长,但逻辑没难题。换个说法,就是先判断 B2 是不是红色,要是是,再判断 B2 是不是对应的颜色值,接着除以 A1 算出比例,最终加起来。
这中间全是嵌套的引用和逻辑判断,读起来确实费劲,但能行。 还有一种更轻量级的方式,也就是用 SUM 配合一个自定义公式。
比如在单元格 C1 输入=SUM(16777215),然后在 B 列输入颜色,比如输入 1 表示红色,输入 2 表示蓝色,输入 0 表示忽略。
然后直接写 C2=SUM(B2:B100),这个SUM函数会自动把整个 B 列当成了一个数组求和。
只要颜色转换成数字了,就连能够直接输入颜色字符串求和,Excel 会自动识别。
这实际上就是利用了宏的本事,把颜色变成了数字序列。 举个具体的例子,假设 A 列是数值,B 列是颜色。我在 B1 输入红色,B2 输入绿色,B3 输入蓝色。公式 C1=SUM(A2:A100) 算出总和。目前要在 B 列加上颜色,把红色加 10,蓝色加 5。
这时候不能硬塞数字。
比如 B1=1, B2=2, B3=0。在 D1 单元格,我输入了=SUMPRODUCT(A2:A100, (B2="红色"(B2="1"(B2=1/A2)))+(B2="蓝色"(B2="2"(B2=2/A2)))+(B2="绿色"(B2="3"(B2=3/A2))))。
要么更骚一点,在 D1 写=SUMPRODUCT(A2:A100, (B2:A100="1"+"2"+"3"))。
这里有个技巧,就是把颜色当成数字字符串来加,配合 SUMPRODUCT 里的逻辑判断,能实现颜色加权求和的效果。 实际上还有一种不用 SUMPRODUCT 的解法,就是用 LEVELS 函数配合颜色。假设颜色是 1 到 10,你在 B1 写颜色代码,在 B2 写一个等于 10 的表格,里面填入 1 到 10。
然后 C1 写=SUM($B1:$B$100/LEVELS($B1:$B$100,B2))。
这个公式挺玄乎,但它把颜色代码和表格里的数值对应上了,利用 LEVELS 函数根据颜色代码查表,算出权重,最终求和。 最终,咱得提一下,实际上颜色求和这事儿,大量时候只是想换个格式,让数据好看点,而不是确实要把颜色作为权重。
比如把红色变成 1,蓝色变成 2,这样一操作,原来的求和就自动变成了加权求和,效果立竿见影,并且不用写那些复杂的公式,改改 B 列的颜色格式就行。自然,要是真有复杂的条件颜色权重,那也得回归到 SUMPRODUCT 要么 SUM+IF 的逻辑上来。
总而言之,颜色求和,要么是用颜色当数字直接求和,要么是用 SUMPRODUCT 做加权,选哪种得看你的数据规模和复杂度。 (字数统计:约 1600 字)