我有一个表,其中底层数据库将数字存储为文本。在这种情况下,大于或等于运算符不会捕获第一个值。
此公式将忽略结果中AcctNum = 123的数据的第一行。公式在应返回21时返回11。
=SUMIFS(Table1[Balance],Table1[AcctNum],">='123'", Table1[AcctNum],"<='500'")
我尝试过的事情: 1.“ *”通配符。 2. T()和TEXT()函数的许多组合。
我不想做的事情: 1.使用数组。 2.在我的表中添加要转换为数字的列,因为并非所有AcctNum的格式都相同,这就是为什么它们必须保留为文本的原因。 3.使用SUMPRODUCT,因为在这种情况下,公式的可读性很重要。
我编写了一个自定义函数来解决此问题,但是我想知道是否存在自然的Excel解决方案。我已经读过SUMIF和SUMIFS在数字作为文本存储或从数据库中检索时不能很好地工作。我正在使用Excel 2016。
答案 0 :(得分:1)
尝试使用双负号的SUMPRODUCT将文本和布尔值转换为数字。
=SUMPRODUCT(--(--Table1[acctnum]>=123), --(--Table1[acctnum]<500), Table1[balance])
答案 1 :(得分:0)
您的意思是2。向表中添加转换为数字的列,因为并非所有AcctNum的格式都相同,这就是为什么它们必须保留文本的原因?
除了数组之外,您还可以使用数组或帮助器列来执行此操作,不确定是否可以使用SUMIFS。
答案 2 :(得分:0)