当其中一个范围包含文本和数值

时间:2015-08-03 12:56:33

标签: excel excel-formula

我正在尝试使用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,但我不想改变导入的数据,因为这会导致我的其他地方出现问题工作簿。

2 个答案:

答案 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

这些行使用<作为分隔符将文本转换为列。由于此字符不会显示在列中,因此文本将保留在其原始列中,但会转换为数值 - 如果可能的话。