Excel更改条件格式公式

2024-03-18

我有一个表,其中包含许多代表时间线的单元格(每分钟一个单元格,宽度非常小),我想在该表中可视化包含三个阶段的操作。 (一条线上可以有多个手术,代表一个手术室)

例如,如果准备工作在 10:00 开始,实际操作在 10:23 开始,则这些时间之间的所有 23 个单元格都应变为红色,接下来的 55 个单元格(表示 10:23 到 11:18 之间的实际操作)应变为红色。是绿色的,等等,像这样:

   17    18      19    20    21      22     23     00     01      02      03     04
   |      |      |      |     |      |      |      |      |       |       |      |
OR1______________++++=================****______________++=========***____________
OR2______________________+++++======================*****_________________________

如果每个单元格的时间值(取自额外行)介于两个开始/结束值之间,则对每个单元格进行格式化,特殊情况是午夜前后的数字。

为了自动化此操作(有很多操作),我编写了一个宏,它遍历时间表(四个时间列用于三个阶段的开始和结束,一个代表手术室)并分配大中的每一列表(带有彩色单元格)三种条件格式,应该可以正常工作(我手动检查了它们):

T = time.Address(RowAbsolute:=True, ColumnAbsolute:=False)
Z1 = t1.Address
Z2 = t2.Address
Z3 = t3.Address
Z4 = t4.Address

fnc1 = "=OR(AND(" & Z1 & "<=" & T & ";" & T & "<" & Z2 & ");AND(" & Z2 & "<" & Z1 & ";" & Z1 & "<=" & T & ");AND(" & T & "<" & Z2 & ";" & Z2 & "<" & Z1 & "))"
fnc2 = "=OR(AND(" & Z2 & "<=" & T & ";" & T & "<" & Z3 & ");AND(" & Z3 & "<" & Z2 & ";" & Z2 & "<=" & T & ");AND(" & T & "<" & Z3 & ";" & Z3 & "<" & Z2 & "))"
fnc3 = "=OR(AND(" & Z3 & "<=" & T & ";" & T & "<" & Z4 & ");AND(" & Z4 & "<" & Z3 & ";" & Z3 & "<=" & T & ");AND(" & T & "<" & Z4 & ";" & Z4 & "<" & Z3 & "))"

Dim currentLine As Range
Set currentLine = Range(Cells(dline, data.Column), Cells(dline, data.Column).Offset(0, width))

Set frmt1 = currentLine.FormatConditions.Add(XlFormatConditionType.xlExpression, Formula1:=fnc1)
Set frmt2 = currentLine.FormatConditions.Add(XlFormatConditionType.xlExpression, Formula1:=fnc2)
Set frmt3 = currentLine.FormatConditions.Add(XlFormatConditionType.xlExpression, Formula1:=fnc3)

frmt1.Interior.Color = RGB(255, 0, 0)
frmt2.Interior.Color = RGB(0, 255, 0)
frmt3.Interior.Color = RGB(0, 0, 255)

't1' .. 't4' 是表格中包含开始/结束时间的单元格,'time' 是可视化表格中每列的额外行,其中包含文字时间(10:01、10:02、... ,与'data'宽度相同),'data'是可视化表,'dline'是当前格式化的行号,根据操作室计算。 'width' 现在通常为 300,但一般为 60 * 显示的小时数(因此只是该时间的分钟数)。

整个过程没有错误,并且生成了正确的格式字符串(我在调试模式下检查了 fnc1..fnc3)。他们看起来像这样,他们应该这样做:

=OR(AND($KR$10<=C$13;C$13<$KS$10);AND($KS$10<$KR$10;$KR$10<=C$13);AND(C$13<$KS$10;$KS$10<$KR$10))

C13 是第一个时间单元,KR10 和 KS10 是本次操作的“t1”和“t2”(准备开始、实际操作开始/准备结束)。

但是:一旦格式字符串保存到 Excel(宏完成),它们就不再相同了。通常是这样的

=OR(AND($KR$10<=XCS$13;XCS$13<$KS$10);AND($KS$10<$KR$10;$KR$10<=XCS$13);AND(XCS$13<$KS$10;$KS$10<$KR$10))

出现 - “时间”单元格的值(这是唯一相对的单元格)更改为奇怪的高值(“XCS”、“WTC”、“XBR”...)。如果我也使行相对,它也会改变(我得到了像 163552 这样的数字)。

这似乎与宏无关,因为我第一次在 IronPython 中尝试了整个过程,它以相同的方式工作(我实际上从该代码翻译了宏)并产生了相同的错误。

当我手动分配公式进行测试时,我什至有时会遇到同样的错误,所以我强烈怀疑Excel是真正的错误......

现在,由于我找不到任何有关类似错误的信息,这是否与内存有关?比如,细胞太多?或者特定于我的计算机/安装/代码/...的东西?

我使用Excel 2007。“数据”表的单元格没有特殊格式,时间都是hh:mm:ss。

我希望我已经足够清楚地说明了整个事情是如何运作的;否则,只需索取更多代码或所需的任何信息。感谢您的任何提示,我已经被困在这个问题上一周了,我已经没有想法了......


(图片来源:蒂姆·威廉姆斯)

该问题似乎与活动单元格的位置有关,并在此过程中发生变化。下面的代码可以工作并将被使用(我还纠正了另一个我以前看不到的错误):

T = time.Address(True, False)
' here I initially forgot to update the row (not related to problem)
Z1 = Cells(tline, t1.Column).Address
Z2 = Cells(tline, t2.Column).Address
Z3 = Cells(tline, t3.Column).Address
Z4 = Cells(tline, t4.Column).Address

fnc1 = "=OR(AND(" & Z1 & "<=" & T & ";" & T & "<" & Z2 & ");AND(" & Z2 & "<" & Z1 & ";" & Z1 & "<=" & T & ");AND(" & T & "<" & Z2 & ";" & Z2 & "<" & Z1 & "))"
fnc2 = "=OR(AND(" & Z2 & "<=" & T & ";" & T & "<" & Z3 & ");AND(" & Z3 & "<" & Z2 & ";" & Z2 & "<=" & T & ");AND(" & T & "<" & Z3 & ";" & Z3 & "<" & Z2 & "))"
fnc3 = "=OR(AND(" & Z3 & "<=" & T & ";" & T & "<" & Z4 & ");AND(" & Z4 & "<" & Z3 & ";" & Z3 & "<=" & T & ");AND(" & T & "<" & Z4 & ";" & Z4 & "<" & Z3 & "))"

Dim currentLine As Range
Set currentLine = Range(Cells(dline, data.Column), Cells(dline, data.Column).Offset(0, width))
currentLine.Select ' <- neccessary change solving the problem

Set frmt1 = currentLine.FormatConditions.Add(XlFormatConditionType.xlExpression, Formula1:=fnc1)
Set frmt2 = currentLine.FormatConditions.Add(XlFormatConditionType.xlExpression, Formula1:=fnc2)
Set frmt3 = currentLine.FormatConditions.Add(XlFormatConditionType.xlExpression, Formula1:=fnc3)

frmt1.Interior.Color = RGB(255, 0, 0)
frmt2.Interior.Color = RGB(0, 255, 0)
frmt3.Interior.Color = RGB(0, 0, 255)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel更改条件格式公式 的相关文章

  • 在 Excel 表格中选择多列的代码

    我是 Excel VBA 新手 我需要修改我的代码 以便我能够进一步进行 我想在 Excel 表格中选择多个表格列 这是我的代码 Dim ws As Worksheet Dim tbl As ListObject Set ws Sheets
  • 如何在VBA编辑器中跳转到行号?

    我在 Office 2010 中使用 VBA 在顶部 有一个带有行号和列号的框 例如 Ln 1480 Col 17 有没有办法在代码编辑中 而不是在执行中 直接跳转到另一个行号 就像我使用的那样Ctrl G在记事本中 这个MSDN答案 ht
  • 当时间为 00:00 时,Pandas 读取 excel 返回类型对象

    在更新版本的 Pandas 中 我使用的是 1 2 3 当从 Excel 文件读取时间时 时间为 00 00 00 时会出现问题 下面的脚本 其中 filepath 是我的 Excel 文件的路径 其中包含一个标题名为 Time 的列 im
  • Office excel将CORS请求作为跨域请求

    我正在尝试从我的 Excel 插件发出跨域请求 正如这里所建议的 http dev office com docs add ins develop addressing same origin policy limitations http
  • 导出到excel时如何显示前导零?

    我正在通过更改内容类型来创建 Excel 报告 Response ContentType application vnd ms excel 我有包含前导零的值 问题是导出到 Excel 时缺少前导零 e g 000123 gt 123 我知
  • 如何在 Excel 中对一组数据进行排序以匹配另一组数据?

    我有一个不按字母或数字顺序排列的数据列表 我想对同一日期的第二个列表进行排序以匹配第一个列表 我无法更改数据的顺序 我的目标是将第二组中的附加数据粘贴回第一个数据集中 DATA SET A DATA SET B 22350 BH160 10
  • VBA 有没有办法了解未使用的变量?

    标准 VBA 编辑器中是否有工具 方法或设置来警告已被修改的变量Dim med 但没有被使用 MZ Tools http www mztools com index aspx将搜索您的代码并告诉您哪些内容未被使用 VBA的版本可以找到her
  • 使用 ObjPtr(Me) 返回自定义类实例的名称?

    我明白那个ObjPtr http support microsoft com kb 199824将返回内存中对象的地址 并且它指向一个名为 IUNKNOWN 的结构 并且其中编码了某种接口定义以公开对象结构 但我不知道如何确定一个对象的接口
  • SQL Server,插入 Excel“链接服务器”时出现“无效列名”错误

    我有一个简单的 Excel 电子表格文档 运行 Office 2013 我使用 Microsoft Office 15 0 Access 数据库引擎 OLE DB 提供程序 将其用作数据库 我可以使用 MS SQL Server Manag
  • 将包含宏的工作簿复制到不带宏的工作簿

    我能够复制工作簿 复制到所需位置 其中在后台包含宏 该副本还包含相同的宏 我的问题是我不希望这个重复的工作簿包含宏 谁能告诉怎么做吗 先感谢您 将您的工作簿保存为无宏 即简单地保存为 Excel 工作簿 对于我的 Excel 2007 这是
  • 我可以获取VBA代码中的注释文本吗

    可以说我有以下内容 Public Sub Information TEST End Sub 有没有办法得到 TEST 结果 不知何故通过VBA 例如 在 PHP 中 有一个获取注释的好方法 这里有什么想法吗 编辑 应该有办法 因为像 MZ
  • VBA 中的匈牙利语好吗?

    我在 Net 中不使用匈牙利语 str int 前缀 但我仍然发现它在 VBA 中很有用 因为在 VBA 中很难看到类型 这很糟糕吗 不必要 也许我错过了一些东西 我真的很感激任何反馈 我想知道有一段时间了 谢谢大家 我想说 这种匈牙利符号
  • 在Excel中,我可以使用超链接来运行vba宏吗?

    我有一个包含多行数据的电子表格 我希望能够单击一个单元格 该单元格将使用该行中的数据运行宏 由于行数总是在变化 我认为每行的超链接可能是最好的方法 ROW MeterID Lat Long ReadX ReadY ReadZ CoeffA
  • 标志状态的 VBA 替换

    根据文档 Outlook 中的 MailItem FlagStatus 属性是已弃用 https msdn microsoft com en us library microsoft office interop outlook maili
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • 我如何以更好的方式编码而不是像这样的VBA编码

    我正在 Excel 中创建一个仪表板 但是我想知道是否有比这更好的编码方式 我想对其进行模块化 而不是这样做以使其更加整洁 Private Sub Afford If af Value True Then af afr Value Shee
  • SQL Excel VBA 运行时错误 3709 无效连接

    这是我的第一个问题 欢迎提出建设性的批评 我正在尝试从 Excel VBA 查询 Access 数据库并将返回信息放入 Excel 范围中 我收到此错误 错误消息 运行时错误 3709 连接无法用于 执行此操作 在此情况下它已关闭或无效 语
  • 有没有更快的方法来使用Powershell解析Excel文档?

    我正在与一个接口MS Excel文件通过Powershell 每个 Excel 文档可能有大约 1000 行数据 目前这个脚本似乎读取了Excel文件并以每 0 6 秒 1 条记录的速率将值写入屏幕 乍一看 这似乎非常慢 这是我第一次阅读E
  • Excel 2003 中的 IFERROR

    我通过阅读几个线程了解到IFERROR在 Excel 2003 中由IF ISERROR 我尝试从 Excel 2007 复制的代码是 IFERROR A1 我知道必须有一个简单的解决方案将其转换为IF ISERROR 但我没有任何效果 意
  • 使用 VBScript 在日期字段值上选择错误的数据

    我有一张包含以下数据的表 现在 Excel 共有 36 个任务 每个任务有 4 列 第一个任务 即 Task1 名称将始终从 L 列开始 144 列描述了 36 个任务 现在我们需要按行进行检查 并需要检查 TNStart 开始日期 你们能

随机推荐

  • 如何使用 HTML5 Canvas 作为 WebGL 纹理

    我想要 为情况 i 设置统一值 将案例 i 的计算着色器渲染为 HTML5
  • 部署没有依赖项的 Scala 二进制文件

    有没有一种简单的方法可以将 Scala Jar 1MB 复制到服务器 然后让 SBT 提取它所需的依赖项 40MB 并运行它 我见过 sbt onejar 和sbt组装 https github com sbt sbt assembly 但
  • jQuery:将 ajaxForm 绑定到通过 .load() 加载的页面上的表单

    我正在使用 jQuery 的 ajaxForm 插件在我的 web 应用程序上提交表单 然而 在应用程序的一部分中 我通过 jQuery 的 load 加载一些带有表单的内容 问题在于我无法让 ajaxForm 绑定到通过 ajax 加载的
  • 如何使用 tar 提取没有文件夹结构的文件

    我有一个具有以下结构的 tar gz 文件 folder1 img gif folder2 img2 gif folder3 img3 gif 我想提取没有文件夹层次结构的图像文件 因此提取的结果如下所示 img gif img2 gif
  • 为什么在 .NET 中分发应用程序的调试版本是一种不好的做法?

    Reading 这个问题 https stackoverflow com questions 5100947 how can i have different properties and such in a vs 2010 setup p
  • 使用 gettext 和 jinja2 以及金字塔翻译 %%

    使用 Jinja2 和 Pyramid 与 Python 进行 i18n 工作 似乎不知道如何翻译 我开始怀疑这个 bug 存在于 Jinja2 中 所以我做了更多的调查 看来问题更多的是 gettext 而不是 jinja2 如 repl
  • iOs 设备特定资源无法正常工作 - ~iPad 加载默认 XIB - 通用应用程序

    我正在制作一个基于实用程序应用程序模板的通用应用程序 我选择了一个通用应用程序 MainView xib 和 MainView iPad xib 在两种设备类型上都能正常工作 在iPad2上 当我切换到FlipsideView时 它会加载F
  • Django ORM - .update(...) 以及 extra(...) 和 F(...)

    我想做一个 sql 查询来更新 Django 站点中的许多模型 我想更改一个字符列 字段以基于 id 和一些文本 在 MySQL 这个站点就是 中 我会这样做 UPDATE table SET blah prefix id suffix 我
  • C# (.NET) 中是否有更好的 Web 浏览器控件?

    我需要 JavaScript 在我的应用程序中几乎完美地工作 应该能够访问 Web 内容并让用户控制它 但是 webbrowser 组件会在 Internet Explorer 的单独实例 应用程序中弹出新窗口 并且 dotBrowser
  • 整合 ASP.NET MVC 控制器依赖关系 (StructureMap)

    我正在查看我网站中的控制器 它们的大多数构造函数如下所示 public SomeController IServiceOne serviceOne IServiceTwo serviceTwo ILoggingService logging
  • 在 Kafka 中设计生产者和消费者组件

    我在用Kafka and Zookeeper作为我的数据管道的主要组件 该管道每秒处理数千个请求 我在用Samza作为我需要对数据进行小型转换的实时数据处理工具 我的问题是我的一位消费者 比方说ConsumerA 消耗了几个主题Kafka并
  • 创建多个 csv 文件并使用 Rails 将所有内容下载到一个 zip 存档中

    我正在寻找一种方法来创建多个 csv 文件 并在 Rails 应用程序的一个请求中将它们作为一个 zip 存档下载 为了构建存档 我使用 ruby zip gem 只需使用 Rails 内置函数 send data 即可下载它 我遇到的问题
  • 如何在 Android Studio 中导入 dropbox Chooser SDK?

    https www dropbox com developers dropins chooser android https www dropbox com developers dropins chooser android 我正在尝试在
  • 修改Robot Framework中的列表列表

    我有一个在机器人框架中使用的嵌套列表 我想更改机器人框架级别的子列表中的一项 我的清单如下所示 鲍勃 玛丽 六月 七月 八月 我想将 七月 更改为其他名称 例如 九月 机器人框架将允许我更改 bob 或 mary 但如果我尝试插入列表 它会
  • 我们可以从worker/minion节点运行kubectl吗?

    我有 kubernetes 集群设置 我想检查工作程序 minion 节点中的节点 我们可以从工作程序 minion 节点运行 kubectl 吗 是的 您只需要拥有正确的客户端凭据 就可以从可以通过网络访问 apiserver 的任何地方
  • Windows 登录集成

    我正在出于某种目的构建面部识别软件 但是 作为衍生产品 我想使用相同的软件 概念 当我坐在电脑前时自动识别我并登录 处理识别 但是 我需要将其合并到 Windows 中 就像指纹登录的工作方式一样 我可以去哪里获取有关执行此操作的更多信息
  • 使用 wicked_pdf 从生成的 PDF 生成 ZIP

    在我的发票系统中 我需要一个备份功能来一次性下载所有发票到一个 zip 文件中 该系统在 Heroku 上运行 因此只能临时保存 pdf 我安装了 ruby zip 和 wicked pdf gem 我当前在控制器中的代码 def zip
  • 垃圾收集线程太多

    我正在用java开发一个软件 它在接收到事件 来自传感器 时创建一个线程 这些线程的生存时间非常短 传感器发送最多 10 个事件 分钟 这个应用程序在大多数情况下都运行良好 但有时它会挂起 当查看 eclipse 调试器时 我发现有很多线程
  • 你怎么知道用 malloc() 分配多少空间?

    我是一个完全的 C 新手 我来自 C 我一直在学习内存管理和malloc 功能 我也遇到过这段代码 char a persons name malloc sizeof char 2 我不明白这是分配了多少空间a persons name 是
  • Excel更改条件格式公式

    我有一个表 其中包含许多代表时间线的单元格 每分钟一个单元格 宽度非常小 我想在该表中可视化包含三个阶段的操作 一条线上可以有多个手术 代表一个手术室 例如 如果准备工作在 10 00 开始 实际操作在 10 23 开始 则这些时间之间的所