A列中B列的单元格值是多少? (LibreOffice的-CALC)

时间:2016-04-05 11:49:42

标签: excel libreoffice-calc

  • A栏有一些按照下列格式列出的一些Bum's Top-250电影的降序列表: Apocalypse Now(1979)
  • B列的排序列表为My Top-100,格式相同。
  • 两个列表都已复制并粘贴到记事本文本文档中,以确认它们是类似的简单ASCI文本 - 最后没有多余空格 - 等等 - 然后粘贴回LibreofficeCalc。

我需要一个C列功能,显示他未在(A)中列出的任何MY电影(B)。

Psudo代码:

  • C1 = B1中的单元格值 - 是A1中的任何位置:A8000?如果不是 - 将B1值放入C1,否则留空。
  • C2 = B2中的单元格值 - 是A1中的任何位置:A8000?如果不是 - 将B2值放入C2,否则留空。

我已经搜索并发现了这些功能 - 无论出于何种原因,这些功能都不起作用。我已经将它们修改为8000作为我不认为我会接近的上限。

=IF(ISERROR(MATCH(B1,$A$1:$A$8000,0))=1,B1,"")
=IFERROR(MATCH(B1;$A$1:$A$8000;0);"")
=IFNA(VLOOKUP($B1;$A$1:$A$8000;1;0);"")
=IF(ISNA(VLOOKUP($B1;$A$1:$A$8000;1;0));"";VLOOKUP($B1;$A$1:$A$8000;1;0))
=IF(ISNA(VLOOKUP($B1,$A$1:$A$8000,1,0)),"",VLOOKUP($B1,$A$1:$A$8000,1,0))
=VLOOKUP(B1,$A$1:$A$8000,1,) 
=MATCH($B1;$A$1:$A$999;0) 

我更喜欢它是单细胞功能,而不是VBA。

我实际上是在2001年使用Excel解决了这个问题。诀窍是我必须编辑单元格并使用Ctrl-Shift-Enter创建一个“动态数组”,因此该函数被括在{}大括号中。但现在我使用最新的LibreOffice Calc并且无法正确识别@ #$ #语法。

谢谢!

修改注意:使用" A"进行测试和" 00001"数字产生非常不同的结果。两列中的值必须如下所示:

  • Alice(1988)
  • Barfly(1987)
  • Clueless(1995)

3 个答案:

答案 0 :(得分:2)

好的我已经在Open Office中测试了这些结果,结果如下: -

=IF(ISERROR(MATCH(B1,$A$1:$A$8000,0))=1,B1,"")

给出错误508,因为逗号需要更改为分号。

**=IF(ISERROR(MATCH(B1;$A$1:$A$8000;0))=1;B1;"")**

很好。

=IFERROR(MATCH(B1;$A$1:$A$8000;0);"")

给#Name?因为IFERROR无法识别。

=IFNA(VLOOKUP($B1;$A$1:$A$8000;1;0);"")

给#Name?因为IFNA不被认可。

=IF(ISNA(VLOOKUP($B1;$A$1:$A$8000;1;0));"";VLOOKUP($B1;$A$1:$A$8000;1;0))

有效,但结果相反。

**=IF(ISNA(VLOOKUP($B1;$A$1:$A$8000;1;0));B1;"")**

没关系。

=IF(ISNA(VLOOKUP($B1,$A$1:$A$8000,1,0)),"",VLOOKUP($B1,$A$1:$A$8000,1,0))

逗号

=VLOOKUP(B1,$A$1:$A$8000,1,) 

逗号

=MATCH($B1;$A$1:$A$999;0) 

工作,但只是给出了比赛的位置。

最简单的方法可能是: -

**=IF(COUNTIF(A$1:A$8000;B1);"";B1)**

不幸的是,带有括号的字符串似乎在Libre / Open Office中提供虚假匹配。你可以通过替换来绕过它我猜

=IF(COUNTIF(SUBSTITUTE(SUBSTITUTE(A$1:A$10;"(";"<");")";">");SUBSTITUTE(SUBSTITUTE(B1;"(";"<");")";">"));"";B1)

作为数组公式输入并复制(而不是拉下)或当然全局编辑所有括号: - (。

enter image description here

现在由于@Lyrl,我知道了这个的根本原因,还有一个选项可以按照建议关闭正则表达式,或者你可以转义括号: -

=IF(COUNTIF(A$2:A$11;SUBSTITUTE(SUBSTITUTE(B2;"(";"\(");")";"\)"));"";B2)

请参阅Open Office here

中有关正则表达式的文档

答案 1 :(得分:1)

这应该这样做,

=IF(ISNUMBER(MATCH(B1,$A$1:$A$8000,0)),"",B1)

答案 2 :(得分:1)

经测试的公式

=IF(ISNA(MATCH(B1,$A$1:$A$8000,0))=TRUE(),B1,"")