Excel 字符串与转义字符比较,使用布尔值、匹配或求和
Excel string comparisons with escape character, using boolean, match or sumif
当我在我的数据库中处理文本比较时,我注意到一些奇怪的行为。在我的数据库中,我想根据包含字符串的列对值求和。在此示例中,我想使用以下字符串值创建一个组 str
和一个组 txt
。
str 2
str1 1
str2 0
txt 1
txt1 2
tx2 3
如果我将文本与 simpel 布尔值进行比较,即 =("str"="str*"),它 returns False
,因为 *
是附加字符。这在某种程度上是有道理的。然而,当我使用其他两种技术时,比较的处理方式不同:
首先,下面是简单的SUMIFS函数:
=SUMIFS(B:B;A:A;"str*")
和 =SUMIFS(B:B;A:A;"txt*")
分别包含 "str" 和 "txt" 处的值,表明比较是 True
。
二、=Match("str*";{Cell containing "str"};0)
returns 1,说明比较也returns True
.
为什么布尔字符串比较returnFalse
,而MATCH
和SUMIFS
假设True
?
只有有限数量的 Excel 工作表函数可以使用通配符来过滤结果。像 COUNTIF
、VLOOKUP
、MATCH
和 here 中列出的其他函数是一些使用通配符的 Excel 函数。
除了 link 中列出的函数外,通配符 *
在双引号中使用时被视为文字。
在我看来,这两个函数应用了星号的通配符解释,而您与“=”的直接比较公式将其视为引号内字符串中的另一个(额外)字符,因此使两个字符串不同。
在函数 Match() 中:
如果 match_type 为 0,lookup_value 为文本,则 lookup_value 可以包含通配符星号 (*) 和问号 (?)。星号匹配任何字符序列;问号匹配任何单个字符。
我希望这是有道理的。
当我在我的数据库中处理文本比较时,我注意到一些奇怪的行为。在我的数据库中,我想根据包含字符串的列对值求和。在此示例中,我想使用以下字符串值创建一个组 str
和一个组 txt
。
str 2
str1 1
str2 0
txt 1
txt1 2
tx2 3
如果我将文本与 simpel 布尔值进行比较,即 =("str"="str*"),它 returns False
,因为 *
是附加字符。这在某种程度上是有道理的。然而,当我使用其他两种技术时,比较的处理方式不同:
首先,下面是简单的SUMIFS函数:
=SUMIFS(B:B;A:A;"str*")
和 =SUMIFS(B:B;A:A;"txt*")
分别包含 "str" 和 "txt" 处的值,表明比较是 True
。
二、=Match("str*";{Cell containing "str"};0)
returns 1,说明比较也returns True
.
为什么布尔字符串比较returnFalse
,而MATCH
和SUMIFS
假设True
?
只有有限数量的 Excel 工作表函数可以使用通配符来过滤结果。像 COUNTIF
、VLOOKUP
、MATCH
和 here 中列出的其他函数是一些使用通配符的 Excel 函数。
除了 link 中列出的函数外,通配符 *
在双引号中使用时被视为文字。
在我看来,这两个函数应用了星号的通配符解释,而您与“=”的直接比较公式将其视为引号内字符串中的另一个(额外)字符,因此使两个字符串不同。
在函数 Match() 中: 如果 match_type 为 0,lookup_value 为文本,则 lookup_value 可以包含通配符星号 (*) 和问号 (?)。星号匹配任何字符序列;问号匹配任何单个字符。
我希望这是有道理的。