繁体   English   中英

JXLS 2.0 条件格式论坛未按行更新

[英]JXLS 2.0 Conditional Formatting Forumla not updated per row

尝试创建一个 JXLS excel 模板,应该可以将条件格式从特定行的单元格复制到下一个生成的行。

在模板中,我创建了我的格式。 如果单元格中的值等于“是”,则该行应为红色。

模板在此处输入图像描述

条件格式

Formula: =$B2="yes"
Applies to: $A$2:$B$2

在此处输入图像描述

我知道这个公式适用于已经填充的 excel 表这是一个示例https://trumpexcel.com/highlight-rows-based-on-cell-value/

但是,当我使用 excel 模板和 JXLS 2.0 执行此操作时,它会失败。 它将公式原样复制到每个新生成的行。 因此,现在不再是整个工作表的一个条件,而是与行一样多。 这里的问题是它会按原样复制它,这意味着每个条件中的公式将基于单元格 C2 中的值。 因此,即使单元格 C3 生成的值为“no”,它也会显示为红色,因为它基于 C2 中的值。

Output excel 在此处输入图像描述

条件格式 output excel 在此处输入图像描述

有关如何直接在模板中解决此问题的任何提示?

使用jxls 2.9.0 jxls-poi 2.9.0

一种方法是修改模板中的公式以达到我们想要的效果。

公式: =INDIRECT("$B" & ROW())="yes"

描述:

  1. ROW()返回当前行号。
  2. "$B" & ROW()给出单元格引用。 例如,在第 5 行,我们将得到B5
  3. 最后,使用INDIRECT(...)我们在单元格引用处获取值并检查是否为“是”。

Output excel: 在此处输入图像描述

您遇到的是标准 Excel 行为。 为了实现您想要的,您有 2 个选项:使用常规范围或动态表。 我会使用后者。

使用常规范围

您需要从至少 2 行开始,如下所示:
在此处输入图像描述
然后只在第一行之后和最后一行之前插入行。 从来没有在第一个或最后一个之后。 新行采用相同的格式,因为基础范围正在扩大。 例如,在中间插入 4 行会导致:
在此处输入图像描述

使用动态表

假设您有标题(您不需要),您 select 您的起始范围,然后将其格式化为表格:
在此处输入图像描述
您可以通过将出现的对话框中的复选框来选择表格是否有标题。

然后添加相同的条件格式: 在此处输入图像描述

现在不同的是,当您添加新行时,条件格式会自动展开。 表格本身会自动扩展,因此其他所有内容(格式、验证、公式等)都会随之扩展。

只需确保您在File/Options/Proofing/AutoCorrect Options/AutoFormat As You Type/Include new rows and columns in table下为表格启用了自动扩展选项。 您也可以以编程方式执行此操作(我知道在 VBA 中您需要将Application.AutoCorrect.AutoExpandListRange设置为 True)。 顺便说一句,默认值为 True。

无论您的表格有多大,您都会扩展格式。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM