条件格式,检查值是否位于带回车符的字段的第 3 行的访问表达式 returns

Conditional Formatting, access expression that checks if value is on 3rd line of field with carriage returns

我为报告创建了一个矩阵查询,该报告将多个字段与回车连接起来 returns:

TheValue: Max([CLCraftLevel]) & Chr(13) & Chr(10) & Max([CTrainingLevel]) & Chr(13) & Chr(10) & Max([CSignatory]) & Chr(13) & Chr(10) & Max([CAuthDate]) & Chr(13) & Chr(10) & First([CAuthorisedBy])

结果可能如下所示([] 是没有值的行):

1

[]

S

19/01/2021

求职博客

或者这个:

[]

2

[]

[]

[]

或者这个:

[]

[]

S

19/10/2021

求职博客

如果第三行有一个“S”,那么我需要条件格式来在我的报告中将字段变成蓝色,然后如果第二行有一个“2”而第三行没有一个“S”然后我需要条件格式来将字段变成黄色。 我已经尝试了很多表达式选项,最幸运的是:

Left(Mid$([Col8],4,InStrRev([Col8],Chr(13))-1),1)="2"

但是我必须根据看起来填充了多少行来更改 4。
我通常不使用表达式,所以有点迷茫。如果这是更好的方法,我也愿意使用 vba 解决方案。

建议使用 VBA 自定义函数。 Split() 函数将字符串解析为从零开始的一维数组(第三行将是元素索引 2)。由于知道要查看哪个数组元素(不需要循环数组来完成某事),因此不需要完整的数组对象。

Function GetColor(s As String)
If Split(s, vbCrLf)(2) = "S" Then
    GetColor = "Blue"
ElseIf Split(s, vbCrLf)(1) = 2 Then
    GetColor = "Yellow"
End If
End Function

从条件格式规则调用该函数:
表达式为:GetColor([Col8])="Blue"
表达式为:GetColor([Col8])="Yellow"