我正在尝试使用SUMPRODUCT函数来汇总下表(Import)中的数据。我还使用了一个控制表,允许用户选择他们想要显示的信息的“处理程序”。控制表上的Handler字段定义为'Controls_Handler'。
DateOfAudit Handler ConTotalNumeric
01/06/2015 Dave 0.69
17/07/2015 Dave N/A
05/06/2015 Dave 0.53
09/06/2015 Steve 0.98
我想显示所选处理程序的平均ConTotalNumeric,但我遇到的问题是'ConTotalNumeric'列包含数字和文本值(字段可以采用的唯一文本值是'N / A')。 / p>
我尝试汇总数据的表格在第10行中有日期。
我认为可行的公式是(注意:我必须使用格式Table[range]:[range]
使列引用为绝对值):
=SUMPRODUCT(--(TEXT(Import[[DateOfAudit]:[DateOfAudit]],"mmm 'yy")=TEXT(O$10,"mmm 'yy")), --(Import[[Handler]:[Handler]]=Controls_Handler), --(Import[[ConTotalNumeric]:[ConTotalNumeric]]<>"N/A"), (Import[[ConTotalNumeric]:[ConTotalNumeric]]))/SUMPRODUCT(--(TEXT(Import[[DateOfAudit]:[DateOfAudit]],"mmm 'yy")=TEXT(O$10,"mmm 'yy")), --(Import[[Handler]:[Handler]]=Controls_Handler), --(Import[[ConTotalNumeric]:[ConTotalNumeric]]<>"N/A"))
这个想法是除法运算符之前的公式部分应该返回所有ConTotalText范围的总和,除法运算符之后的部分应返回ConTotalText为数字的所有声明的计数;但是,返回的值为零。
我已将公式的两个部分分开,看起来下半部分有效,但上半部分没有;它返回零值。
我尝试用星号替换逗号,并尝试使用ISNUMBER()
代替<>"N/A"
比较,但没有成功 - 最多我最终得到#value!错误。
N.B。主数据表是从数据库导入的,虽然我可以编写一个宏来替换工作簿打开时“N / A”和“”或0,但我不想改变导入的数据,因为这会导致我的其他地方出现问题工作簿。
答案 0 :(得分:0)
将ifna(您的副产品配方,0)添加到您的配方中怎么样?
答案 1 :(得分:0)
我刚刚意识到将数据库导入Excel后,ConTotalText列中的数值将作为文本导入。菜鸟错误!
我需要做的就是在我用来刷新工作簿中的数据的结束宏中添加几行:
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="<", FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
这些行使用<
作为分隔符将文本转换为列。由于此字符不会显示在列中,因此文本将保留在其原始列中,但会转换为数值 - 如果可能的话。