Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3435|回复: 10

[已解决]用VBA数组或字典把F列一万行填充颜色

[复制链接]
发表于 2017-6-21 08:10 | 显示全部楼层 |阅读模式
本帖最后由 laoau138 于 2017-6-21 16:31 编辑

用VBA数组或字典把F列一万行填充颜色
最佳答案
2017-6-21 13:20
  1. Sub tc()
  2. Dim arr
  3. Dim i As Long
  4. arr = Range("a1:f" & Cells(Rows.Count, 1).End(xlUp).Row)
  5. For i = 2 To UBound(arr)
  6.     If arr(i, 6) > 2000 Then
  7.         Range(Cells(i, 1), Cells(i, 6)).Select
  8.     With Selection.Interior
  9.         .Pattern = xlSolid
  10.         .PatternColorIndex = xlAutomatic
  11.         .Color = 255
  12.         .TintAndShade = 0
  13.         .PatternTintAndShade = 0
  14.     End With
  15.     End If
  16. Next i
  17. End Sub
复制代码
用VBA数组或字典把F列一万行填充颜色.png

用VBA数组或字典把F列一万行填充颜色.rar

95.95 KB, 下载次数: 9

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-6-21 13:20 | 显示全部楼层    本楼为最佳答案   
  1. Sub tc()
  2. Dim arr
  3. Dim i As Long
  4. arr = Range("a1:f" & Cells(Rows.Count, 1).End(xlUp).Row)
  5. For i = 2 To UBound(arr)
  6.     If arr(i, 6) > 2000 Then
  7.         Range(Cells(i, 1), Cells(i, 6)).Select
  8.     With Selection.Interior
  9.         .Pattern = xlSolid
  10.         .PatternColorIndex = xlAutomatic
  11.         .Color = 255
  12.         .TintAndShade = 0
  13.         .PatternTintAndShade = 0
  14.     End With
  15.     End If
  16. Next i
  17. End Sub
复制代码

评分

参与人数 1 +9 收起 理由
laoau138 + 9 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-6-21 13:36 | 显示全部楼层

这个代码也不行,速度太慢了,

你喜欢录制宏?

给你两个代码好好学习

Sub 字典填充()
Dim d As Object
Dim arr As Variant
Dim i As Integer
Set d = CreateObject("scripting.dictionary")
ActiveSheet.[a1].CurrentRegion.Interior.ColorIndex = xlNone
arr = ActiveSheet.[a1].CurrentRegion
For i = 2 To UBound(arr)
If arr(i, 6) > 2000 Then
If Not d.exists(arr(i, 6)) Then
Set d(arr(i, 6)) = ActiveSheet.Range("a" & i).Resize(1, UBound(arr, 2))
Else
Set d(arr(i, 6)) = Union(d(arr(i, 6)), ActiveSheet.Range("a" & i).Resize(1, UBound(arr, 2)))
End If
End If
Next i
x = d.keys
For i = 0 To UBound(x)
d.items()(i).Interior.ColorIndex = 3
   Next i
End Sub



’用数组填充颜色比字典要快些
Sub 数组填充()
Dim  rng As Range
Dim arr As Variant
Dim i As Integer, t
t = Timer
ActiveSheet.[a1].CurrentRegion.Interior.ColorIndex = xlNone
arr = ActiveSheet.[a1].CurrentRegion
For i = 2 To UBound(arr)
If arr(i, 6) > 2000 Then
If rng Is Nothing Then
Set rng = ActiveSheet.Range("a" & i).Resize(1, UBound(arr, 2))
k = 1
Else
Set rng = Union(rng, ActiveSheet.Range("a" & i).Resize(1, UBound(arr, 2)))
k = k + 1
If k > 30 Then
rng.Interior.ColorIndex = 3
k = 0
Set rng = Nothing
End If
End If
End If
Next i
   MsgBox Timer - t
End Sub



回复

使用道具 举报

发表于 2017-6-21 16:10 | 显示全部楼层
真的有點慢,感謝你的指導
回复

使用道具 举报

发表于 2017-6-21 16:12 | 显示全部楼层
想請問你,你是從事什麼行業的,當老師?怎麼有那麼多的題目,單是提供題目,我猜連版主都沒有那麼多的問題可以問喔
回复

使用道具 举报

 楼主| 发表于 2017-6-21 16:30 | 显示全部楼层
idnoidno 发表于 2017-6-21 16:12
想請問你,你是從事什麼行業的,當老師?怎麼有那麼多的題目,單是提供題目,我猜連版主都沒有那麼多的問題 ...

什么也不对,VBA菜鸟一个了
回复

使用道具 举报

发表于 2017-6-21 17:30 | 显示全部楼层
那你的行業是什麼呢
回复

使用道具 举报

 楼主| 发表于 2017-6-21 19:52 | 显示全部楼层
idnoidno 发表于 2017-6-21 17:30
那你的行業是什麼呢

没有行业专门收垃圾,你有工作好介绍
回复

使用道具 举报

发表于 2017-6-21 21:37 | 显示全部楼层
這邊被依例一休搞得烏煙瘴氣了
工作不好做了
回复

使用道具 举报

 楼主| 发表于 2017-6-22 08:19 | 显示全部楼层
idnoidno 发表于 2017-6-21 21:37
這邊被依例一休搞得烏煙瘴氣了
工作不好做了

依例一休是谁
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 07:05 , Processed in 0.592194 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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