【问题标题】:Wrong data type value错误的数据类型值
【发布时间】:2016-01-08 05:40:59
【问题描述】:

我一直在 windows Excel 中处理一个项目,但现在我必须将其更改为 LibreOffice Calc 并且该函数返回#VALUE!,但在Excel

这是函数(它在特定的列和行中搜索一个值

=IFERROR(INDEX($B$3:$B$1400; SMALL(IF(ISNUMBER((SEARCH($F$3;$B$3:$B$1400))*
(SEARCH($G$3;$D$3:$D$1400))); ROW($D$3:$D$1400)-MIN(ROW($D$3:$D$1400))+1;"");ROW(A21)));"")

这是我在 LibreOffice Calc 中的 Worksheet aka SpreadSheet 的样子

我在某处读到引号不应该在那里,所以我尝试删除/替换它们并从一个单元格中获取价值:

-当我删除 引号“”时,它返回了一个随机单元格值

-当我替换 引号 "" 与数字 1 时,它返回第一个人的值,但在下一个单元格中(因为它应该找到每个具有特定名称的人,或者如果留下 Blank 它应该在文件中找到 every Person

【问题讨论】:

    标签: libreoffice-calc


    【解决方案1】:

    在 Excel 中,SEARCH 函数会将空白搜索单元格与所有查找单元格匹配。在 Calc 中,将空白单元格作为搜索条件将返回错误。

    要获得“如果搜索单元格为空白,则返回所有”行为,您需要将每个搜索包装在 IF 中,在搜索的情况下返回一个数字(因此 ISNUMBER 函数返回 TRUE)单元格为空白:

    IF($F$3<>"";SEARCH($F$3;$B$3:$B$1400);1) * IF($G$3<>"";SEARCH($G$3;$D$3:$D$1400);1)
    

    因此,您的完整公式将在单元格 F8 中输入 Ctrl+Shift+Enter(因为这是一个数组公式):

    =IFERROR(INDEX($B$3:$B$1400;SMALL(IF(ISNUMBER(IF($F$3<>"";SEARCH($F$3;$B$3:$B$1400);1) * IF($G$3<>"";SEARCH($G$3;$D$3:$D$1400);1)); ROW($D$3:$D$1400) - MIN(ROW($D$3:$D$1400))+1;"");ROW(A1)));"")
    

    复制并粘贴您需要的任意多个单元格。如果要粘贴到大量单元格,可以通过在名称框(在公式栏左侧)键入范围(例如 F9:F1405,然后按 Enter)将它们全部突出显示。

    请注意,在 LibreOffice 版本早于 4.4.4.6 中,IFERROR 函数不会抑制错误(请参阅bug 95226)。在较新的版本中,它应该可以正常工作。

    编辑

    IFERRORISERROR 函数都通过此特定错误而不是返回 TRUE 或 FALSE(在 OpenOffice 和 LibreOffice 的当前版本中似乎是一个错误 - 请参阅 OpenOffice wiki 页面的“问题”部分https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_ISERROR_function#Issues)。

    一个潜在的解决方法是不将任何文本值传递给SMALL 函数。 (如果找不到匹配项,上面的公式会将空文本字符串传递给SMALL 函数,从而产生错误)。我们将传递数组中的最后一个行号而不是"" - 为此,范围内最底部的单元格,在这种情况下为第 1398 行,必须是一个空格(或者,如果它是,它可能是空的确定工具→选项→OpenOffice Calc→查看→取消选中“显示零值)。

    我们还将确保不要告诉SMALL 函数查找大于所提供范围大小的排名。像这样:

    =INDEX($B$3:$B$1400;SMALL(IF(ISNUMBER(IF($F$3<>"";SEARCH($F$3;$B$3:$B$1400);1) * IF($G$3<>"";SEARCH($G$3;$D$3:$D$1400);1)); ROW($D$3:$D$1400) - MIN(ROW($D$3:$D$1400))+1;1398);MIN(ROW(A1),1398)))
    

    【讨论】:

    • 我还有一个问题,因为那些没有找到任何值的单元格返回 #VALUE! 我想知道,需要将哪些更改应用于留下一个空白空间。否则功能和解释都很棒,非常感谢!
    • @McBooley 我在 4.4.4.3 版本中进行了测试,发现未找到的单元格返回 #Value! 而不是空白;我从我链接到的错误中的注释中认为这将在较新的版本中得到修复。但听起来您有一个更新的版本,并且仍然看到 #Value! 被错误地推送到 IFERROR 函数?
    • 我有5.0.4版本
    • @McBooley 我已经编辑了我的答案以包含潜在的部分解决方法
    • 我从最后一个函数中得到了 Err.509,但是提示 传递最后一个单元格而不是 " "Unchecking显示零值对我有用。非常感谢您的耐心和努力!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多