使用布尔值,匹配或sumif,使用转义字符对Excelstring进行比较
当我在数据库中进行文本比较时,我注意到一些奇怪的行为。 在我的数据库中,我想根据包含string的列SUM值。 在这个例子中,我想使用下面的string值来创build一个组str
和一个组txt
。
str 2 str1 1 str2 0 txt 1 txt1 2 tx2 3
如果我用simpel boolean比较文本,即=(“str”=“str *”),它将返回False
,因为*
是一个额外的字符。 这在某种程度上是有道理的。 但是,当我使用其他两种技术时,比较处理方式不同:
首先,以下简单的SUMIFS函数: =SUMIFS(B:B;A:A;"str*")
和=SUMIFS(B:B;A:A;"txt*")
包括“str”和“ txt“,表明比较是True
。
第二, =Match("str*";{Cell containing "str"};0)
返回1,表示比较结果也返回True
。
为什么布尔string比较返回False
,而MATCH
和SUMIFS
都假设为True
?
在我看来,这两个函数使用星号的通配符解释,而用'='的直接比较公式将其作为引号内string中的另一个(额外)字符,因此使两个string不同。
在Match()函数中:如果match_type为0且lookup_value为文本,则lookup_value可以包含通配符星号(*)和问号(?)。 星号匹配任何字符序列; 问号匹配任何单个字符。
我希望这是有道理的。
只有有限数量的Excel工作表函数可以使用通配符来筛选结果。 这里列出的function(如COUNTIF
, VLOOKUP
, MATCH
等)是一些使用通配符的Excel函数。
除了链接中列出的function之外,通配符*
在双引号中使用时将被视为文字。