SumProduct,不会返回我的文字和数字。 (仅限号码)

时间:2015-04-01 15:40:01

标签: excel excel-vba vba

首先感谢回答))(这对我很重要:p)

我在A3中有一个号码。

当A列(Sheet1)中有这个数字时,根据例子A7,它将获取单元格B7的值。

 =SOMMEPROD(('Sheet1'!A3:A34=Sheet1!A3)*('Sheet1'!B3:B34))

我使用SOMMEPROD,它只能使用数字,但有时我的单元格中有文字和数字(B栏)。

我已经改变了单元格的格式但是没有用。

非常感谢)))

2 个答案:

答案 0 :(得分:0)

我想你是说B栏中的一些值是用文字表示的,而不是数字,可能是因为它们是从另一个来源导入的。

如果是这种情况:首先,将B列转换为数字,然后使用sumproduct。

例如,FIRST将文本转换为值: 在C3中你会输入

=value(b3)

然后将其复制到C3到C34。

然后

=SOMMEPROD(('Sheet1'!A3:A34=Sheet1!A3)*('Sheet1'!C3:C34))

应该有预期的效果。

请注意,您有时会使用"值"来获取#N / A错误功能,例如,如果有意外的空格。为了安全起见,不要仅仅使用价值,试试这个:

= iferror(value(B3),0)

或者更有创意,你可以尝试:

= iferror(value(substitute(B3," ","")),0)  ' deletes all spaces
= iferror(value(substitute(substitute(b3,char(160),"")," ","")),0)  
'deletes all spaces and "nonbreaking spaces" copied from a web page

答案 1 :(得分:0)

这取决于您尝试使用SumProduct的内容。这个功能出现的原因主要有两个。那些是:

  • 总结两个范围的乘积。
  • 汇总符合多个条件的数字范围。这取决于True = 1False = 0,因此当想要在某些单元格中找到蓝狗的总重量时,您的公式可能看起来像=SUMPRODUCT(1*($A$1:$A$50 = "Blue"), 1*($B$1:$B$50 = "Dog"), $C$1:$C$50)。请注意1*,它保证公式将知道如何乘以结果。毕竟,TrueFalse不会成倍增加。他们的二进制表示(1和0)虽然如此。

虽然人们有时也因为第二次使用而将其记为查找公式,因此希望能够获得文本。这样的方法很容易被误解,但实际上你想要使用INDEX(<Result Array>,MATCH(1,INDEX(1 * (FIRST CONDITION) * (SECOND CONDITION) * (AND SO ON),,),0)。这种方法基本上给你一个没有CTRL-SHIFT-ENTER的数组公式(它不是更快,但因为条件在索引公式中,它可以工作),你的条件可以是任意的(与sumproduct相同)。但它会给你第一个结果,而不是所有结果的总和。

希望有所帮助。

修改:我想到了,您可能希望A1包含ErpB1以包含54,并希望C1包含Erp54 & 1}}。这甚至不需要函数 - 只有C1运算符,它将两个字符串连接在一起 - 所以在=A1 & B1中,您只需要{{1}}。你已经完成了。

相关问题