乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel如何统计相同颜色单元格中相同数值的次数

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

作者:乔山办公网日期:

返回目录:excel表格制作


可用自定义函数处理,我自定义的函数名称为testcolor(统计区域,指定颜色的单元格)
1、打开excel,在菜单栏选择开发工具,点击Visual Basic(或按Alt+F11),打开 Visual Basic 编辑窗口
2、在编辑窗口中菜单栏选择插入-模块命令,插入一个新的模块1。
3、在右边的模块1窗口中输入如下代码:
Function testcolor(rng, col)
For Each r In rng
If r.Interior.ColorIndex = col.Interior.ColorIndex Then
k = k + 1
End If
Next
testcolor = k
End Function
4、然后关闭编辑器窗口,返回到工作表,接下来就可利用这个函数了。
5、如要统计A2:W8区域中与H10颜色相同的个数,请在H11输入公式:
=testcolor($A$2:$W$8,H10)
即可 。

Sub Test()

    

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

    

    

    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、如果加入输入对话框采集数据,或许更完善,也或者有更好的方案也不一定,期待高手完美方案!


1、首先,看这张表格,有些单元格只有颜色标准,没有什么特别的。因此,不能使用内置函数对带有颜色标签的单元格进行统计分析。  

2、选择E2单元格,然后单击菜单栏中的公式-定义名称,打开新建名称对话框。  

3、在“新名称”对话框中,首先创建一个新名称“YSTJ”,输入位置“=get.cell(63,B2)*NOW()”0”,然后单击“确定”。get.cell函数可以获取有关指定单元格的一些信息。参数"63"是返回指定单元格填充颜色的e68a84e8a2ade799bee5baa6e79fa5e98193330代码。  now()函数是一个易失函数,NOW()0的结果是1。您可以在不改变结果的情况下,通过将结果相乘来将结果相乘。当单元格更改时,可以随时刷新公式以获得新公式。

4、在E2单元格中输入“=YSTJ”(即新创建的名称),然后按回车键得到结果3,即红色填充码为3。通过拖动填充手柄将E2单元格复制到E2:G12区域。B2:D12区域的单元格填充颜色代码对应于E2:G12区域的“映射”。使用辅助区域E2:G12,我们可以计算B2:D12区域。  

5、例如,计算红细胞的数量:在单元格I2中输入“=COUNTIF($2:$12,3)”并得到6的结果。计算绿色单元格值的总和:在单元格I3中,输入:"=sumproduct(B2:d12,(E2:g12=10)*1)(绿色填充代码为10),结果为330。  

6、因为使用了宏表函数,所以当工作表用完时,它应该以“启用宏的工作簿”文件格式保存,并允许在打开宏时启用。



你这个有两个方法,第一种是VBA的方法编制一个自定义函数,还有一个方法是用Get.cell宏表函数,下面我来绍一下第二种方法

假设单元格背景源数据在A列,这里需要一个辅助列(用以输出背景色的参数),选中B1,插入——名称——定义,如下图:

名称栏内输入你想要的名称,比如cellcolor,在引用位置中输入=GET.CELL(63,A1)

这里要注意一点,宏表函数在使用时是没有参数的,所以这里的插入位置与引用位置的相对关系要记住。

在B1中输入=cellcolor,向下填充

下面就简单了,在C1中输入=countif(B:B,6)+countif(B:B,5)就可得到黄色背景与蓝色背景的单元格个数了

相关阅读

关键词不能为空
极力推荐
  • 用vb读取Excel中某个单元格的数据

  • 1,首先我们是用第一个表中竖列的信息填第二个表,所以要用函数vlookup来完成。现在工程B下面输入等于号“=”和函数“vlookup”,再输入括号“()”,再点击“工程B”,再输入“,”

ppt怎么做_excel表格制作_office365_word文档_365办公网