excel如何统计相同颜色单元格中相同数值的次数

一张工作表中有不同颜色的单元格,很乱,单元格里全部为数值,有些数值一样,现在要统计相同颜色单元格中相同数值出现的次数,(不是同颜色单元格的数量),简单的说就是对COUNT... 一张工作表中有不同颜色的单元格,很乱,单元格里全部为数值,有些数值一样,现在要统计相同颜色单元格中相同数值出现的次数,(不是同颜色单元格的数量),简单的说就是对COUNTIFS函数再加上指定单元格颜色的条件,比如此表格中统计白色背景单元格中数值1出现的次数。谢谢! 展开
 我来答
Rocliuofrz
2016-04-15 · TA获得超过1312个赞
知道小有建树答主
回答量:1110
采纳率:71%
帮助的人:473万
展开全部
Sub Test()

    

    '程序运行时,以选择统计数据区域中的空单元格为循环截止标志,因此,在选择的数据区域内不能存在空单元格,如存在需删除。

    

    

    Dim R As Single '行数变量

    Dim C As Single '列数变量

    Dim DigtalColor(300) As String '数字变量数组,默认值为300个数据的一维数组

    Dim Dig As Single '数字变量

    Dim K As Single

    Dim No As Single

    Dim MAX1 As Single '输出格式与内容相同的单元格数量的变量

    Dim ColSave As Single

    

    R = 2 '数据起始行序号

    C = 2 '数据起始列序号

   

    Dig = 1

       

   '以下代码将数据存储在一个数组中

    

    Do While Sheet1.Cells(R, C).Text <> ""

    

       Do While Sheet1.Cells(R, C) <> ""

     

            DigtalColor(Dig) = Sheet1.Cells(R, C) & " " & Sheet1.Cells(R, C).Interior.color

    

            Dig = Dig + 1

        

            C = C + 1

        Loop

        

     C = 2

     R = R + 1

     

    Loop

    

   ' 以下代码将数组中的数据整理并输出到特定单元格中

    

    

   ColSave = 20 '通过改变此行的数据,调整输出数据存放位置的起始行号,20代表自第20行开始存放数据

   K = 1

    

   Do Until K > Dig

        

     If DigtalColor(K) <> "" Then

        

        If Sheet1.Cells(ColSave, 1).Interior.color <> Right(DigtalColor(K), 8) And Sheet1.Cells(ColSave, 1) <> Left(DigtalColor(K), Len(DigtalColor(K)) - 8) Then

            Sheet1.Cells(ColSave, 1).Interior.color = Right(DigtalColor(K), 8)

            Sheet1.Cells(ColSave, 1) = Left(DigtalColor(K), Len(DigtalColor(K)) - 8)

        End If

        

        No = 1

        

            Do Until No > Dig

                

                If DigtalColor(No) <> "" Then

                    If DigtalColor(No) = Sheet1.Cells(ColSave, 1) & " " & Sheet1.Cells(ColSave, 1).Interior.color Then

                        MAX1 = MAX1 + 1

                        DigtalColor(No) = ""

                    End If

                End If

                No = No + 1

            Loop

       

            Sheet1.Cells(ColSave, 2) = MAX1

        

            ColSave = ColSave + 1

    End If

    

    K = K + 1

    MAX1 = 0

  Loop

  

    

End Sub

1、excel尽管可以对单元格设置背景色,但无法对单元格颜色进行识别统计;

2、如果只能通过单元格背景色或者字体颜色等来对内容进行区分和统计,只能通过VBA编程来实现;

3.将上述代码复制到一个已经备份过的类似表格中的VBA模块中,默认在sheet1运行,调整代码中的相应数据代码可以调整统计范围以及大小,默认自第2行第2列开始统计,背景颜色种类和数字种类决定了程序形成的数组的大小,代码行有相应注释参考。

4,office 2007中后台编制。

5、如果加入输入对话框采集数据,或许更完善,也或者有更好的方案也不一定,期待高手完美方案!

怪兽E
2016-04-05
知道答主
回答量:5
采纳率:0%
帮助的人:2.3万
展开全部
因为你没说数据量的大小或是是不是需要频繁处理,当然最稳妥简单的方法是用VBA编个宏,一下解决。不过如果就一次,可以先按颜色筛选或是排序,然后增加一列标示,比如red或是其他的,然后使用数据透视表计数就可以解决。希望能帮到你。

如果表特别多或者数据量特别大,确实不好弄,着急的话也可以去淘宝或者其他地方找一些专业的处理人员外包给他们。搜Excel数据处理就行。有很多标价1元起的,别相信他们,找一些明码标价的比较好。比如说,数理协创、数据小怪兽、matheory什么的,挺多的。
追问
非常感谢,请问怎样编写宏啊
非常感谢,请问怎样编写宏啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式