ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6006|回复: 5

[已解决] 若单元格有颜色则返回1,若没有颜色返回0,可否用函数解决?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-4-8 18:23 | 显示全部楼层 |阅读模式

如果每行有多个单元格,需要全部单元格都有颜色才返回1,如果不全有颜色就返回0。这个能用函数解决吗?

请问各位大神有没有什么建议?
示例.png

TA的精华主题

TA的得分主题

发表于 2020-4-8 18:28 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-8 20:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-4-9 07:22 | 显示全部楼层
看看这个测试

Book6.zip

6.63 KB, 下载次数: 45

TA的精华主题

TA的得分主题

发表于 2020-4-9 07:48 | 显示全部楼层
  1.     '【参数1: Sum_range】      单元格矩形区域
  2.     '【参数2: ColorCell】      指定底色的单元格(单一单元格)
  3.     '【参数3: ColorId_Type】   指定底色的颜色代码ColorIndex 或模式,默认=0
  4.     '【功能】返回单元格底色颜色代码
  5.     '           /或按指定单元格底色进行范围内数值求和统计/或统计区域内同底色单元格个数
  6. Private Function SC(Sum_range, ColorCell, Optional ColorId_Type = 0)
  7.     If ColorId_Type > 0 And ColorId_Type < 57 Then
  8.         C_Index = ColorId_Type                      '如果第3参数值不为0 且数值在1-56范围内则该参数用作指定底色的颜色代码
  9.    Else
  10.         C_Index = ColorCell.Interior.ColorIndex     '否则以第2参数指定单元中的底色作为指定底色
  11.         If ColorId_Type = -2 Then                   '如果第3参数=-2则函数返回当前指定单元格底色的颜色代码
  12.             SC = C_Index                            '「-2」時、色コード出力
  13.         If SC = -4142 Then SC = 0                   '当默认无底色时结果转为=0输出
  14.             Exit Function                          '结束函数过程退出
  15.         ElseIf ColorId_Type = -3 Then              '如果第3参数=-3 则返回指定单元格的字体颜色FontColor
  16.             SC = ColorCell.Font.ColorIndex
  17.         If SC = -4105 Then SC = 0                   '如果字体默认黑色结果转为=0输出
  18.             Exit Function                           '结束函数过程退出
  19.         End If
  20.     End If

  21.     '当第3参数默认=0或第3参数=-1时,已将第2参数中单元格底色作为标准色
  22.    '下面开始统计第1参数对象区域中,所有相同底色单元格中的结果
  23.     For i = 1 To Sum_range.Cells.Count '遍历区域中所有单元格
  24.         If Sum_range.Cells(i).Interior.ColorIndex = C_Index Then '如果底色相同则
  25.             If ColorId_Type < 0 Then
  26.                 SC = SC + 1                       '如果第3参数=-1时,仅仅统计同底色单元格的个数
  27.             Else                                  '如果第3参数默认=0时
  28.                 If IsNumeric(Sum_range.Cells(i)) Then
  29.                     SC = SC + Sum_range.Cells(i)
  30.                                                   '如果同底色单元格中为数值(含文本数值)时求总和。
  31.                 End If
  32.              End If
  33.         End If
  34.     Next
  35. End Function
复制代码

用自定义函数吧=(Sc(A1:L1,$L$1,-1)=12)*1

TA的精华主题

TA的得分主题

发表于 2024-7-21 21:57 | 显示全部楼层

实现如图:

CELL_EX函数实现若单元格有颜色则返回1,若没有颜色返回0

CELL_EX函数实现若单元格有颜色则返回1,若没有颜色返回0

  1. =--AND(BYCOL($A1:$D1,LAMBDA(x,IF(CELL_EX(,x)<>16777215,1,0))))
复制代码


详见帖子:CELL_EX函数实现根据单元格颜色或字体、字体颜色等条件进行数据统计、提取 1楼附件
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-21 19:29 , Processed in 0.030108 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表