您的位置: 首页 > EXCEL技巧 > ExcelVBA >

VBA批量设置图标集条件格式

时间:2014-10-12 整理:docExcel.net

在Excel 2007/2010中设置图标集条件格式时,通常是同时对区域中的全部单元格进行设置的。但有时也有例外,如下图中C2:C1000区域中的各单元格的值为同行A列与B列的差值,需要在C列中设置图标集:

    

要求如下图:

在这种情况下,由于C列单元格中的图标集仅仅与其他列中的单元格值有关,而与本列中的其他单元格无关,因而无法直接对C2:C1000区域同时设置图标集。如果手动对C列中的每个单元格逐一设置图标集,在数据量较大的情况下几乎无法实现。要实现这个目的,可以用下面的两种方法:

方法一:用VBA代码

1.按Alt+F11,打开VBA编辑器,在代码窗口中粘贴下列代码:

Sub IconSet()
Dim rCell As Range
Application.ScreenUpdating = False
Range("c2:c1000").FormatConditions.Delete
For Each rCell In Range("c2:c1000")
   rCell.FormatConditions.AddIconSetCondition
   With rCell.FormatConditions(1)
       .IconSet = ActiveWorkbook.IconSets(xl3Symbols2)
       With .IconCriteria(2)
         .Type = xlConditionValueNumber
         .Value = 0
         .Operator = 7
       End With
       With .IconCriteria(3)
         .Type = xlConditionValueFormula
         .Value = "=OFFSET($A$1,ROW()-1,0)*0.2"
         .Operator = 5
       End With
   End With
Next
Application.ScreenUpdating = True
End Sub

2.关闭VBA编辑器,按Alt+F8,打开“宏”对话框,选择“IconSet”宏名执行代码。

上述代码对C2:C1000区域中各单元格逐一设置图标集,选择C列中的某个单元格,如C8,在“开始”选项卡的“样式”组中单击“条件格式→管理规则”,在弹出的对话框中单击“编辑规则”,可以看到上述代码所设置的图标集条件格式,如图。

由于在条件格式的图标集、色阶、数据条中无法使用相对引用,因而使用下面的公式:

=OFFSET($A$1,ROW()-1,0)*0.2

该公式在图标集条件格式中总可以引用同行A列单元格的值。

方法二:用辅助列

方法是在C列在左侧插入一个辅助列,然后在辅助列中设置图标集条件格式,设置后看上去类似直接在D列中设置的图标集。

1.在C列左侧插入辅助列,先前的C列变为D列。选择C2单元格,在其中输入公式:

=D2/A2

然后向下填充公式到C1000单元格。

2.选择C2:C1000区域,在“开始”选项卡的“样式”组中单击“条件格式→新建规则”,在弹出的对话框中,默认已选择了“基于各自值设置所有单元格格式”。在下方的区域中,选择“格式样式”为“图标集”,“图标样式”选择“三个符号(无圆圈)”,类型都选择为“数字”,分别设置为“0.2”和“0”。勾选“仅显示图标”,如下图。

3.单击“确定”。Excel会在C列中设置图标集,最后设置适当的列宽即可。


VBA批量设置图标集条件格式 问题:VBA批量设置图标集条件格式
回答:在Excel 2007/2010中设置图标条件格式时,通常是同时对区域中的全部单元格进行设置的。但有时也有例外,如下图中C2:C1000区域中的各单元格的值为同行A列与B列的差值,需要在C列中设置图标集:    要求如下图: 在...
Excel2013中用红绿灯图标来标记员工完成情况 问题:Excel2013中用红绿灯图标来标记员工完成情况
回答:...间不知所措,不要慌,下面,Word联盟小编来教大家使用图标集来完成目的。 ①首先启动Excel2013,建立一个简单的表格,选中其中的数据区域,单击菜单栏--开始--条件格式--图标集,选择其他规则。 ②弹出新建格式规则对话...
在Excel2013中利用图标集来标记状态 问题:在Excel2013中利用图标集来标记状态
回答:...用高级版本的时候,发现很多新功能,都不知道怎么用。图标集是2007版本新增的功能,它可以在单元格内加上各式各样的图标,形象的表示状态等等。下面,我就在Excel2013中为大家演示一次。 ①启动Excel2013,创建下图所示的表...
Excel 2007 常用 问题:Excel 2007 常用
回答:    (2) 假如此时添加的图标不能需要,您还可以单击“样式”组中的【条件名目】按钮,在弹出的下拉菜单中执行【法则】呼吁,打开“条件名目法则器”对话框。          (...
Excel2010视频教程:8、快速分析数据之图标集 问题:Excel2010视频教程:8、快速分析数据之图标集
回答:...数据分析的时候,对于某一些特殊的数据,可能需要使用图标来进行下标示,此时,我们可以通过条件格式当中的图标集来完成,在Excel2010当中,不仅丰富了图标集的样式而且还增加了许多新的功能,利用这些功能,我们可以更...
Excel2007中制作自动判断对错的测试题 问题:Excel2007中制作自动判断对错的测试题
回答:...G4,确定。 ⑦选中整个E列,单击菜单栏---条件格式---图标集---其他规则。 ⑧弹出新建格式规则对话框,编辑规则,如下图所示,单击确定。 ⑨我们来测试看看,中国有56个民族,勾选第3个选项,自动打钩,证明回答正确...
相关知识:

下面内容对您也许有用

      话题:EXCEL VBA 如何批量设置指定列格式及科学计数法的问题
      问:做了几个EXCEL文件,数据在文件中移来移去的.貌似因为经常用delete命令所以指定
      答:Columns(i).NumberFormatLocal="0.00_"设置I列为两位小数的数字,这样写是没问题的
      话题:WPS的条件格式用VBA怎么设置
      问:EXCEL中录用的到WPS中不能运行!
      答:您好,很高兴为您解答!wps表格的条件格式一般情况下,用单元格引用和函数就可以使用的。如果您需要学习和使用wps表格宏和vba教程,请您到wps官方论坛学习。WPS WPS与VBA WPS 2010 如何使用VBA
      话题:利用VBA批量重置指定格式文件名
      问:电脑E盘某个文件夹下,有几千张.PNG图片,命名不规则,不方便管理及查阅。请教
      答:在任意Word文档中新建一宏,将下列代码粘贴到此宏中,执行此宏即可完成任务 '以下是需要复制的vba代码:On Error Resume Next:'本例代码将指定文件夹中的指定 怎样使VBA按文件名顺序批量读取 EXCEL中用VBA重命名文件名的问题
      话题:ppt中用vba批量设置图片大小,提示属性的使用无效,高手看看
      问:Sub ImageEdite()For i=1 To ActivePresentation.Slides.Count
      答:我的就执行了啊,我用的ppt2010,不过就是图片的锁定纵横比怎么关闭啊?Sub ImageEdite()For i=1 To ActivePresentation.Slides.Count ActivePresentation.
      话题:如何批量设置EXCEL某个单元格内数字后几位的颜色(用VBA或者
      问:例如 单元格里面的数字如下 332456432.434 65289.322 873924321.209 首先要把
      答:Sub 选择区域万位以下变为灰色()'同时小数点后面设置为2位。Dim r1 As Range Dim i,q,l,k As Long Dim p As String Selection.NumberFormatLocal="#"Selection. excel VBA 数字 颜色 求如何使用EXCEL的函数实现数字
      话题:VBA 批量复制
      问:现在手头上有多个EXCEL 想对所有的EXCEL文件里的H29单元格进行处理 处理如下 把
      答:我以前回答过类似的问题,请你参考一下 链接如下 : zhidao.baidu./question/429391132 ?oldq=1 如何实现用VBA 批量查询并复制 VBA批量增加按钮进行复制粘贴
      话题:关于excel条件格式设置公式
      答:你的EXCEL版本是03版本的吧,03版本的条件格式只能是3个以内 而你的要求有7种条件,所以操作不能实现 方法有2 1、版本升级,换成07版本以上,可以实现。2、VBA
      话题:VBA中设置多条件格式的时候,出现语法错误,求助。代码如下_
      问:Sub 条件格式1()Dim rng As Range For Each rng In Range("g8:l24")If rng.value
      答:Sub 条件格式1()Dim rng As Range For Each rng In Range("g8:l24")If rng.value="Marketcoverage"or rng.value="Marketshare"or rng.value="Discount"or rng. 在调试VBA程序时能自动被检查出 如何用EXCEL里VBA设置条件格式
      话题:用VBA批量处理某列指定特征的内容
      答:vba帮完成 关于vba批量处理的问题 批量修改控件属性(VBA
      话题:想用VBA批量替换日期的格式,例如2012.08.07 替换为08/07/2012
      答:MsgBox Format(Replace("2012.08.07",".","/"),"mm/dd/yyyy") excel 怎样通过VBA实现前列输入 EXCLE用vba实现数字转换日期,
最新评论