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

  • A列按照以下格式列出了一些bum's Top-250电影的sorting降序列表: Apocalypse Now(1979)
  • 列B具有相同格式的“我的Top-100”的sorting列表。
  • 这两个列表已被复制并粘贴到记事本文本文档中,以确认它们是类似的简单的ASCI文本 – 末尾没有多余的空格 – 等 – 然后粘贴回LibreofficeCalc。

我需要一个列C的function,显示他没有列在(A)中的任何我的电影(B)。

Psudo代码:

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

我已经search并find了这些function – 无论出于何种原因,这些function都不起作用。 我已经将它们修改为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) 

我更喜欢它是一个单一的单元格function,而不是VBA。

我实际上在2001年使用Excel解决了这个问题。 诀窍然后是我不得不编辑单元格,并使用Ctrl-Shift-Enter来创build一个“dynamic数组”,所以函数被放在{}大括号括起来。 但是现在我正在使用最新的LibreOffice Calc,无法获得正确的@ #$ #语法。

谢谢!!

编辑注意:使用“A”和“00001”数字进行testing会产生非常不同的结果。 在两列中值必须看起来像这样:

  • 爱丽丝(1988)
  • Barfly(1987)
  • 无能(1995)
  • 等等

好的,我已经在Open Office中testing了以下结果:

 =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)** 

不幸的是,似乎括号内的string在Libre / Open Office中发生虚假匹配。 我想你可以通过replace来绕过它

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

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

在这里输入图像说明

现在我知道这个归功于@Lyrl的根本原因,还有一个closures正则expression式的选项,或者你可以跳过括号:

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

在这里查看Open Office中有关正则expression式的文档

这应该做到这一点,

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

经testing配方

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