我使用 INSTR 和 MID 函数的组合来搜索文本字段中的特定值,如果找到该值,我将返回此文本之后的所有内容,直到找到句点。 如果未找到特定值,我想返回“N/A”,但会获取 #Error 值。如果找到该值,它会正确显示,但我无法显示“N/A”;它总是返回#Error。我使用 INSTR 函数定义两个字段;一个显示找到该值的第一个位置,第二个显示周期所在的位置并在 MID 函数中使用这些值。我注意到,如果未找到该值,INSTR 函数将返回整数值 0,因此我编写了 MID 函数来检查该值是否为 0,如果是,则返回“N/A”;即,
IIF(Fields!Starting_Position_of_Text.Value=0, "N/A",
MID(Fields!Comments.Value,
Fields!Starting_Position_of_Text.Value,
(Fields!Location_of_Period_in_Text.Value - Fields!Starting_Position_of_Text.Value)
)
)
。 如果文本值存在,则效果很好,但否则它会显示#Error 而不是“N/A”。
这个问题是因为 IIF 的两个部分每次都会被评估,即使结果从未显示。
我现在无法测试这个,但您需要测试
Starting_Position_of_Text
每个部分的 MID()
值,所以像这样..
IIF(Fields!Starting_Position_of_Text.Value=0, "N/A",
MID(Fields!Comments.Value,
IIF(Fields!Starting_Position_of_Text.Value=0, 0, Fields!Starting_Position_of_Text.Value),
IIF(Fields!Starting_Position_of_Text.Value=0, 1, (Fields!Location_of_Period_in_Text.Value - Fields!Starting_Position_of_Text.Value))
)
)
因此,起始位置是 0,然后我们将 0 和 1 传递给 mid 函数来获取第一个字符,它是什么并不重要,因为它永远不会显示。
注意:这假设
Comments
字段始终至少有一个字符长。