首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >更快地更改基于值的单元格颜色

更快地更改基于值的单元格颜色
EN

Stack Overflow用户
提问于 2017-07-08 21:23:17
回答 4查看 287关注 0票数 0

我有基于内容改变单元格颜色的vba代码,目前我使用行和列索引的for循环和select case语句分别遍历13000个单元格,但这需要大约30秒。有谁知道更快的方法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-09 10:38:28

我怀疑从单元格读取每个值会占用大量的时间。尝试将数据读取到一个数组中,然后创建15个范围,每种颜色一个范围。然后,您只需在每个范围的末尾填充适当的颜色即可。

话虽如此,13,000个细胞着色将需要一些时间。我不能超过10秒。如果你只需要做一次,那么30秒似乎并不是那么糟糕?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dim r As Long, c As Long, i As Long, rOff As Long, cOff As Long
Dim data As Variant
Dim dataRange As Range, cell As Range
Dim colourRanges(14) As Range
Dim colours(14) As Long

'Define the colours
colours(0) = 255
colours(1) = 65535
colours(2) = 5296274
colours(3) = 12611584
colours(4) = 10498160
colours(5) = 49407
colours(6) = 192
colours(7) = 5287936
colours(8) = 15773696
colours(9) = 6299648
colours(10) = 5540756
colours(11) = 9803737
colours(12) = 13083058
colours(13) = 9486586
colours(14) = 14474738

'Define the target range
With Sheet1
    Set dataRange = .Range(.Range("A2"), _
                           .Cells(.Rows.Count, "A").End(xlUp)) _
                    .Resize(, 103)
End With

'Calculate offsets from "A1"
With dataRange
    rOff = .Cells(1).Row - 1
    cOff = .Cells(1).Column - 1
End With

'Read data
data = dataRange.Value2


'Test the data
For r = 1 To UBound(data, 1)
    For c = 1 To UBound(data, 2)
        Select Case data(r, c)
            Case 1: i = 0
            Case 2: i = 1
            Case 3: i = 2
            Case 4: i = 3
            Case 5: i = 4
            Case 6: i = 5
            Case 7: i = 6
            Case 8: i = 7
            Case 9: i = 8
            Case 10: i = 9
            Case 11: i = 10
            Case 12: i = 11
            Case 13: i = 12
            Case 14: i = 13
            Case 15: i = 14
            Case Else: i = -1
        End Select

        'Build the colour ranges
        If i <> -1 Then
            With Sheet1
                Set cell = .Cells(r + rOff, c + cOff)
                If colourRanges(i) Is Nothing Then
                    Set colourRanges(i) = cell
                Else
                    Set colourRanges(i) = Union(colourRanges(i), cell)
                End If
            End With
        End If
    Next
Next

'Colour the ranges
Application.ScreenUpdating = False
For i = 0 To 14
    colourRanges(i).Interior.Color = colours(i)
Next
Application.ScreenUpdating = True
票数 1
EN

Stack Overflow用户

发布于 2017-07-09 05:29:39

这是我从另一个问题中得到的一些示例代码。您应该能够看到设置autofilter是多么容易,一旦它根据您的标准进行筛选,只需为您想要为可见单元格设置的任何颜色执行interior.colorindex,然后更改下一个颜色的标准,漂洗并重复。我还建议在子集计算开始时将计算改为手动,同时屏幕更新为假,并启用事件假,然后在子集计算结束时将计算恢复为自动,并再次使其他两件事为真。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Private Sub CommandButton2_Click()
Dim IMBacklogSh As Worksheet, logoffSh As Worksheet, deniedsh As Worksheet

Set IMBacklogSh = ThisWorkbook.Worksheets("Backlog")
Set logoffSh = ThisWorkbook.Worksheets("Claims Logged off")
Set deniedsh = ThisWorkbook.Worksheets("Claims Denied")

With IMBacklogSh
    If .AutoFilterMode Then .AutoFilterMode = False
    With .Cells(1, 1).CurrentRegion
        .AutoFilter field:=13, Criteria1:="#N/A"
        .AutoFilter field:=14, Criteria1:="C"
        With .Resize(.Rows.Count - 1, Columns.Count).Offset(1, 0)
            If CBool(Application.Subtotal(103, .Cells)) Then
                .Copy Destination:= _
                    logoffSh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
                'optionally delete the originals
                .EntireRow.Delete
            End If
        End With
        .AutoFilter field:=14, Criteria1:="<>C"
        With .Resize(.Rows.Count - 1, Columns.Count).Offset(1, 0)
            If CBool(Application.Subtotal(103, .Cells)) Then
                .Copy Destination:= _
                    deniedsh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
                'optionally delete the originals
                .EntireRow.Delete
            End If
        End With
    End With
    If .AutoFilterMode Then .AutoFilterMode = False
End With

结束子对象

票数 1
EN

Stack Overflow用户

发布于 2017-07-08 21:25:56

也许是按照你用颜色编码的标准进行排序,然后改变范围,最后再回到原来的顺序。以这样一种方式对其进行排序,即不需要更改颜色的那些将显示在末尾。然后你就可以更快地退出..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44990871

复制
相关文章
在浏览器中本地运行Node.js
一切要从收到一封邮件开始 大早上,我收到一封邮件,StackBlitz说正在与Next.js和Google的团队合作开发一项新技术 几年前,StackBlitz意识到网络正朝着关键的拐点发展。WebAssembly和新功能API的出现使编写基于WebAssembly的操作系统似乎变得可能,该操作系统功能强大到可以完全在浏览器中运行Node.js。我们设想了一个比本地环境更快,更安全和一致的高级开发环境,以实现无缝的代码协作而无需设置本地环境 技术名为:WebContainers WebContainer
Peter谭金杰
2022/03/22
3.7K0
在浏览器中本地运行Node.js
为什么在物联网中创造良好的用户体验如此困难?
07.17-Product-Manager-1068x656_副本.jpg 在物联网领域创造良好的用户体验是困难的。现在有更多的技术层,更多的用户需要取悦,更多的团队需要协调。作为产品经理,你准备好带
用户4122690
2020/06/04
5570
为什么在物联网中创造良好的用户体验如此困难?
在本地运行 fyne 官网
要深入学习和理解一个框架,官方文档是必须要仔细阅读的。fyne 官网有非常系统和详尽的文档。官方网站:https://fyne.io/。有时候我们会有这样一个需求——离线查看文档。我经常乘坐高铁来往杭州、上海两地,地铁、高铁上通常网络比较差,甚至没有网络。为此我特地去研究了一番怎样搭建 fyne 离线文档。
用户7731323
2020/09/08
6.2K0
使用Jupyterlite在浏览器中运行Jupyter Notebook
Jupyter是一个交互式的 Python 开发环境,以 Ipython Kernel 为执行引擎,支持多种前端(Jupyter Notebook,Jupyter Lab,VS Code Jupyter 拓展),围绕.ipynb 格式的 notebook 文件,支持将代码、文档、图表、数学公式等内容整合在一起,方便用户进行交互式的开发。
杜逸先
2023/04/13
2.7K0
使用Jupyterlite在浏览器中运行Jupyter Notebook
原程序运行良好,Pyinstaller
昨天决定分享一下最近写的exhentai爬虫程序,参考了这篇文章,看了下里面几个常见打包软件的简介表格(可惜没nuitka) 因为是给小白用户使用,做成单个文件形式,只能在Pyinstaller和py2exe之间选择 去各自官网看了下,发现py2exe很久没更新了,对python3新版本的支持也不是太好,就决定用Pyinstaller来封装/打包 这里略过Pyinstaller的安装和使用,重点说明症状,分析过程,解决办法和教训
py3study
2020/01/03
1K0
Apereo CAS(一)在本地运行
Apereo CAS,是CAS协议official reference implementation,也差不多是当前开源的SSO解决方案最好、最成熟的一个了。 当前版本是6.5,https://github.com/apereo/cas-overlay-template/tree/6.5。
dhyuan
2022/11/08
2.2K0
python代码为什么在函数中运行更快
不知道有没有人注意过同样的代码是否封装在函数里,运行速度是不同的。比如以下两个代码:
生信编程日常
2020/04/01
2.5K0
在Hadoop系统中运行WordCount案例失败解决方法
报错提示: mapreduce.shuffle set in yarn.nodemanager.aux-services is invalid 请在yarn-site.xml中添加 <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapredu
指剑
2022/07/15
8790
带有-i选项的sed命令在Linux上执行成功,但在MacOS上失败
就地编辑文件(如果提供了后缀,则进行备份),可见参数后缀 SUFFIX 是可选的,即带或者不带这个参数都可以执行。
程序熵
2023/09/25
3700
带有-i选项的sed命令在Linux上执行成功,但在MacOS上失败
云爆发架构中哪些应用可以良好运行?
云爆发是管理峰值业务的一个方法,但对于特定的应用说,这很难实现。因此,你知道哪些类型的应用可以最好地爆发到公有云中? 混合云的一个卖点就是IT团队可以达到的成本效益,当他们以合适的私有云规模来匹配平均工作负载,然后爆发到公有云中来满足峰值需求时。 但是,尽管有云爆发架构有一些优势,但却也存在挑战。例如,有些企业正在努力奋斗于做出最好的定位数据文件,因为在云环境之间复制数据很耗时。 IT行业解决云爆发相关的延迟问题有几种方法。例如,在公有云中把私有云作为单租户部署,或者把存储做为服务来架构数据交付,这么做
静一
2018/03/27
6990
云爆发架构中哪些应用可以良好运行?
ShenYu 网关开发:在本地启用运行
无论什么方式安装,都需要先初始化数据库,这里我选择了在本地通过 Docker 启用一个 mysql 5.7
晓晨
2022/09/01
1.1K0
ShenYu 网关开发:在本地启用运行
在本地PC运行 Stable Diffusion 2.0
Stable Diffusion 2.0在前几天已经发布了,新版本在上一个版本的基础上进行了许多改进。OpenCLIP中新的深度检测和更好的文本到图像模型是主要的改进之一。
deephub
2023/02/01
1.7K0
Hiplot 在线绘图工具的本地运行/开发库开源
Hiplot 项目发起于 2019 年,是由国内生物信息学开源社区 Openbiox 和多家单位和机构共同建设的一个免费、易用、部分开源的综合在线绘图系统(生物医学为主)。截至目前,该网站已提供超过 230+余个在线可视化分析功能,涵盖了基础科研绘图、组学可视化和部分临床模型可视化功能。总的注册用户已超过 2 万 5 千人,总访问量超过 300 万次,每日任务数已超 4000 余次。
王诗翔呀
2022/06/27
7670
Hiplot 在线绘图工具的本地运行/开发库开源
Wasm 玩出花?在浏览器中运行虚拟机!
最近在 Github 上看到了一个挺有意思的项目:运行在浏览器环境中的虚拟机:WebVM。
ConardLi
2022/02/18
2K0
Wasm 玩出花?在浏览器中运行虚拟机!
漫谈设计模式在 Spring 框架中的良好实践
好的,我们开始进入正题。设计模式实践里面提供了许多经久不衰的解决方案和最佳方案。这里,GOF 设计模式主要分为三大类:创建模式、结构模式和行为模式。创建模式对于创建对象实例非常有用。结构模式通过处理类或对象的组合来作用于企业级应用的设计结构,从而降低了应用的复杂性,提高了应用的可重用性和性能。行为模式的意图是一组对象之间的交互作用,以执行单个对象无法自己执行的任务。它描述了类或对象交互以及职责的分配。
用户1516716
2019/10/12
6250
漫谈设计模式在 Spring 框架中的良好实践
如何构建运行良好的Vue组件
作者:Kevin Ball 译者:前端小智 来源:vuejsdevelopers 很少有人最初编写Vue组件时打算将其开源。我们大多数人都是从自己编写组件开始的——我们有一个问题,然后决定通过构建一个
前端小智@大迁世界
2020/05/12
3.7K0
如何构建运行良好的Vue组件
在浏览器调起本地应用的方法
最近公司有个需求,要求在浏览器中点击某个按钮,自动调起电脑中的一个应用。 首先,将以下代码复制到一个 reg 文件,例如 test.reg。
谭光志
2020/09/28
9270
Tomcat闪退问题 Tomcat在eclipse运行失败
1.环境配置问题 2.端口被占用 3.直接修改 startup.bat 和 shutdown.bat 文件,在前面添加 jdk 和 jre 的安装路径 …还有很多 这些方法随便一搜到处都是
全栈程序员站长
2022/08/26
1.1K0
Tomcat闪退问题 Tomcat在eclipse运行失败
漫谈设计模式在 Spring 框架中的良好实践
好的,我们开始进入正题。设计模式实践里面提供了许多经久不衰的解决方案和最佳方案。这里,GOF 设计模式主要分为三大类:创建模式、结构模式和行为模式。创建模式对于创建对象实例非常有用。结构模式通过处理类或对象的组合来作用于企业级应用的设计结构,从而降低了应用的复杂性,提高了应用的可重用性和性能。行为模式的意图是一组对象之间的交互作用,以执行单个对象无法自己执行的任务。它描述了类或对象交互以及职责的分配。
用户2781897
2019/10/09
1.2K0
Hiplot 在线绘图工具的本地运行/开发库开源啦!
Hiplot 项目发起于 2019 年,是由国内生物信息学开源社区 Openbiox 和多家单位和机构共同建设的一个免费、易用、部分开源的综合在线绘图系统(生物医学为主)。截至目前,该网站已提供超过 230+余个在线可视化分析功能,涵盖了基础科研绘图、组学可视化和部分临床模型可视化功能。总的注册用户已超过 2 万 5 千人,总访问量超过 300 万次,每日任务数已超 4000 余次。
生信技能树
2022/06/27
5730
Hiplot 在线绘图工具的本地运行/开发库开源啦!

相似问题

React.js TypeError:无法读取null的属性'map‘

254

如何在react js中使用.map()处理数组

16

如何在React中使用map中的map?

12

React JS map函数

43

如何在react js中递增.map()中的变量

337
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文