excel 同色同名对应值怎样求和?
发布网友
发布时间:2022-04-26 07:58
我来回答
共4个回答
热心网友
时间:2022-06-25 14:09
写了一个思路简单,但是效率比较低的。
思路:A列从上到下查找,每读取一行就先判断是否已经读取过了(判断标准为 颜色+值),如果没有读取过则进入循环,查找该行以下相同值,完成后组织格式方便输出。不写了,自己琢磨下吧。
Private Function MyFunction()
Dim I As Long, J As Long, Flag As Boolean
Dim Str1 As String, Arr, Sum As Long
For I = 1 To UsedRange.Rows.Count '搜索 A 列
Sum = Range("B" & I).Value
For J = I + 1 To UsedRange.Rows.Count '搜索 I 下面的单元格
If InStr(Str1, Range("A" & I).Value & "(" & Range("A" & I).Font.Color & ")") > 0 Then Exit For '如果已经计算过 就退出
If Range("A" & J).Value = Range("A" & I).Value And _
Range("A" & J).Font.Color = Range("A" & I).Font.Color _
Then '判断颜色和值是否都符合
Sum = Sum + Range("B" & J).Value
Flag = True '找到的标志
End If
Next
If Flag Then
Str1 = Str1 & Range("A" & I).Value & "(" & Range("A" & I).Font.Color & ")" & ":" & Sum & vbCrLf '格式化以便输出
Sum = 0 '清零以便下次计算
Flag = False '标志复位
End If
Next
Str1 = Replace(Str1, "255", "红") '将颜色数值转变为 汉字
Str1 = Replace(Str1, "16711680", "蓝") '注意这个和下面的黑位置不能调换
Str1 = Replace(Str1, "0", "黑") '因为蓝的颜色里面有 0 如果先替换 黑的话会把 蓝的 0 替换掉
'注: 如果颜色比较多,可以在上面格式化之前用select case 先替换为汉字再写入 Str1
MsgBox Str1
End Function
热心网友
时间:2022-06-25 14:10
前提,数据量比较大。数据量小就直接手动条件筛选。
具体做法:
建立辅助列,新建一列,分别筛选颜色,然后在输入红,黑,等等(下拉可以自动填充),其中包含的颜色就转换成了文字。
然后在写公式根据辅助列判断颜色,求和。追问按照这种方式,求和时用什么公式?
追答透视表。。。。
不要太方便好用。。。。
热心网友
时间:2022-06-25 14:10
公式不能选不同颜色的字。所以你的要求不能实现。
热心网友
时间:2022-06-25 14:11
还有2003太落后了,至少也要用2007,2010功能更强大,是2007,可以根据字体颜色筛选,然后求和吧