Excel查找公式在OpenOffice Calc中不起作用 [英] Excel lookup formula not working in OpenOffice Calc

查看:309
本文介绍了Excel查找公式在OpenOffice Calc中不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近使用名为gnumeric的命令行实用程序将名为template.xlsx的文件转换为template.ods.除以下公式外,所有公式都可以正确转换:

=LOOKUP(2,1/(INDIRECT(CONCATENATE("Import!$F$",Q3,":$F$",M3))>=(S3)*VALUE(SUBSTITUTE($S$1,"LOOKUP FACTOR x",""))),INDIRECT(CONCATENATE("Import!$B$",Q3,":$B$",M3)))

这个公式在某种程度上相当长,但是为了简短起见,我有两张纸,一张叫Import,另一张叫Lookup.我想返回特定范围内的 last 值(并使其行与另一个范围匹配),该值大于或等于S3中的值乘以LOOKUP FACTOR x的值,例如如果为LOOKUP FACTOR x2,则将S3中的值乘以2.

我发现 OpenOffice Calc 从另一个工作表访问范围的方式与 Excel 的方式不同,因此我将公式重写为:

=LOOKUP(2;1/(INDIRECT(CONCATENATE("$Import.$F$";Q3;":$F$";M3))>=(S3)*VALUE(SUBSTITUTE($S$1;"LOOKUP FACTOR x";"")));INDIRECT(CONCATENATE("$Import.$B$";Q3;":$B$";M3)))

此处将工作表名称从Import!$F$更改为$Import.$F$.列$B$相同.

运行此公式时,OpenOffice返回错误#DIV/0!.

因此,如果我将公式分成多个部分:

  • =INDIRECT(CONCATENATE("$Import.$F$";Q3;":$F$";M3))
  • =INDIRECT(CONCATENATE("$Import.$B$";Q3;":$B$";M3))
  • =(S3)*VALUE(SUBSTITUTE($S$1;"LOOKUP FACTOR x";""))

每当我在单独的单元格中执行它们时,我在两个电子表格程序中都得到相同的结果,这意味着它们分别进行 WORK .这让我相信问题出在LOOKUP.

在上述情况下,我使用INDIRECT的原因是因为两个单元格Q3M3都引用了范围的开始和结束:

Q3包含:

{=MIN(IF($Import.$A$1:$A$1048576=A3;ROW($Import.$A$1:$A$1048576)-ROW(INDEX($Import.$A$1:$A$1048576;1;1))+1))}

M3包含的内容大致相同,但使用的是MAX:

{=MAX(...)}

这些将返回数组开始和结束的索引位置.假设A3等于Apple,则Q3将返回Apple的第一次出现的行,而Q3将返回Apple的最后一次出现在Column A的行.

值得重申的是,除了LOOKUP以外, ALL 公式均适用,这意味着上述单元格引用 B3M3返回正确的索引位置(或排).还值得一提的是,该公式确实适用于Excel.

有人知道为什么LOOKUP公式在OpenOffice中不起作用吗?

如果没有LOOKUP,可以这样做吗?

解决方案

不知道它如何在Excel中工作,但是在Calc中,如果左侧的值大于或等于on的值,则>=只是返回true.正确的.因此,听起来我们需要添加IF语句来完成您要问的事情.

以下阵列公式查找条件所在的最高行返回true.然后,它从该单元格中获取值.

=INDIRECT("Import.F"&MAX(IF(INDIRECT(CONCATENATE("$Import.$F$";Q3;":$F$";M3))>=S3*VALUE(SUBSTITUTE($S$1;"LOOKUP FACTOR x";""));ROW(INDIRECT(CONCATENATE("$Import.$F$";Q3;":$F$";M3)));0)))

故障:

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆