我有一个连续的表格,列出了采集样本的时间以及这些样本中不同化学物质的水平。我想格式化细胞以显示化学物质水平何时超出范围。我的问题是,它们会在每个采样时间内发生变化。 .3对于10小时的样品来说太高了,但是30小时都没问题。下面是我的连续形式的示例。
Sample Time Lactics Sugar 10 hour .085 15.2 20 hour .125 12.8 30 hour .345 8.4 40 hour .405 4.2 50 hour .415 1.9
所以我想说“如果Lactics> .2在20小时,然后让细胞变红”等等,每个时间段和我正在跟踪的每个组件。如何使用VBA进行设置?
答案 0 :(得分: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]>?)
这种方法的另一个优点是,当它们存储在表中而不是作为表单中的条件格式表达式时,更容易维护规则。这些规则可以很容易地重复用于其他表格或报告。
如果您没有每个[Sample Time]
的规则,则可以将它们排除在value_limits
表之外,并在查询中使用LEFT JOIN
。
答案 1 :(得分:2)
您可以将Expression Is与值列表一起使用:
([sample]=10 And [Lactics]>=0.2) Or ([sample]=20 And [Lactics]>=0.35)