3

我有一个连续的表格,列出了取样的时间和这些样品中不同化学物质的含量。我想格式化单元格以显示化学水平何时超出范围。我的问题是,它们会随着每个采样时间而变化。.3 对于 10 小时的样本来说太高了,但对于 30 小时来说没问题。下面是我的连续形式的示例。

采样时间乳酸糖
10 小时 .085 15.2
20 小时 .125 12.8
30 小时 .345 8.4
40 小时 .405 4.2
50 小时 .415 1.9

所以我想说“如果 Lactics > .2 在 20 小时,那么让单元格变红”等等,对于每个时间段和我正在跟踪的每个组件。如何使用 VBA 进行设置?

4

2 回答 2

4

创建一个表格来保存您的“超出范围”规则。

Sample Time Lactics_limit
10 hour                .3
20 hour               .35
30 hour                .4
40 hour               .45
50 hour                 ?

然后将您的表单基于一个查询,该查询将您的原始表连接到 value_limits 表,并带有一个计算字段 ,lactics_flag它指示值何时超出范围。并将您的条件格式设置在lactics_flag.

SELECT
    y.[Sample Time],
    y.Lactics,
    y.Sugar,
    IIf(y.Lactics > v.Lactics_limit, True, False) AS lactics_flag
FROM
    YourTable AS y
    INNER JOIN value_limits AS v
    ON y.[Sample Time] = v.[Sample Time];

Expression Is将该方法的简单性与表达相同规则所需的列表的复杂性进行比较:

([Sample Time]="10 hour" And [Lactics]>0.3) Or ([Sample Time]="20 hour" And [Lactics]>0.35) Or ([Sample Time]="30 hour" And [Lactics]>0.4) Or ([Sample Time]="40 hour" And [Lactics]>0.45) Or ([Sample Time]="50 hour" And [Lactics]>?)

这种方法的另一个优点是,当规则存储在表中而不是作为条件格式表达式存储在表单中时,更容易维护规则。并且这些规则可以很容易地重新用于其他表格或报告。

如果您没有规则 every [Sample Time],您可以将它们排除在value_limits表之外并LEFT JOIN在查询中使用 a 。

于 2012-12-18T17:12:59.957 回答
2

您可以使用 Expression Is 带有值列表:

 ([sample]=10 And [Lactics]>=0.2) Or ([sample]=20 And [Lactics]>=0.35)

有条件的

于 2012-12-18T16:59:46.837 回答