首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >A列B列中是否有单元格值?(LibreOffice-Calc)

A列B列中是否有单元格值?(LibreOffice-Calc)
EN

Stack Overflow用户
提问于 2016-04-05 11:49:41
回答 3查看 5.6K关注 0票数 4
  • 列A有一个排序-下降列表的一些流浪汉的前250个电影,格式如下:启示录现在(1979年)
  • 列B有一个排序列表,我的前100名,以相同的格式。
  • 这两个列表都被复制并粘贴到记事本文本文档中,以确认它们是类似的简单ASCI文本--在末尾没有额外的空格--然后粘贴回LibreofficeCalc中。

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

Psudo代码:

  • C1 = B1中的单元格值-它在A1:A 8000中的任何位置吗?如果没有--将B1值放入C1中,否则将留空。
  • C2 = B2中的单元格值-它在A1:A 8000中的任何位置吗?如果没有--将B2值放入C2中,否则将留空。
  • 等。

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

代码语言:javascript
复制
=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)
  • 野兔(1987)
  • “无知”(1995)
  • 等。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-05 12:18:18

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

代码语言:javascript
复制
=IF(ISERROR(MATCH(B1,$A$1:$A$8000,0))=1,B1,"")

提供错误508,因为逗号需要更改为分号。

代码语言:javascript
复制
**=IF(ISERROR(MATCH(B1;$A$1:$A$8000;0))=1;B1;"")**

都没问题。

代码语言:javascript
复制
=IFERROR(MATCH(B1;$A$1:$A$8000;0);"")

给出#的名字?因为IFERROR没有被认出来。

代码语言:javascript
复制
=IFNA(VLOOKUP($B1;$A$1:$A$8000;1;0);"")

给出#的名字?因为IFNA没有被认可。

代码语言:javascript
复制
=IF(ISNA(VLOOKUP($B1;$A$1:$A$8000;1;0));"";VLOOKUP($B1;$A$1:$A$8000;1;0))

起作用了,但结果正好相反。

代码语言:javascript
复制
**=IF(ISNA(VLOOKUP($B1;$A$1:$A$8000;1;0));B1;"")**

会很好的。

代码语言:javascript
复制
=IF(ISNA(VLOOKUP($B1,$A$1:$A$8000,1,0)),"",VLOOKUP($B1,$A$1:$A$8000,1,0))

逗号

代码语言:javascript
复制
=VLOOKUP(B1,$A$1:$A$8000,1,) 

逗号

代码语言:javascript
复制
=MATCH($B1;$A$1:$A$999;0) 

有效,但只给出了比赛的位置。

可能最简单的方法是:-

代码语言:javascript
复制
**=IF(COUNTIF(A$1:A$8000;B1);"";B1)**

不幸的是,带括号的字符串似乎在Libre/Open Office中提供了虚假的匹配。我想你可以通过换人来解决这个问题

代码语言:javascript
复制
=IF(COUNTIF(SUBSTITUTE(SUBSTITUTE(A$1:A$10;"(";"<");")";">");SUBSTITUTE(SUBSTITUTE(B1;"(";"<");")";">"));"";B1)

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

由于@Lyrl,我已经知道了造成这种情况的根本原因,现在还有一个新的选项可以关闭所建议的正则表达式,或者您可以摆脱方括号:-

代码语言:javascript
复制
=IF(COUNTIF(A$2:A$11;SUBSTITUTE(SUBSTITUTE(B2;"(";"\(");")";"\)"));"";B2)

参见Office 这里中关于Regex的文档

票数 4
EN

Stack Overflow用户

发布于 2016-04-05 12:19:34

这样就行了,

代码语言:javascript
复制
=IF(ISNUMBER(MATCH(B1,$A$1:$A$8000,0)),"",B1)
票数 1
EN

Stack Overflow用户

发布于 2016-04-05 12:34:33

试验公式

代码语言:javascript
复制
=IF(ISNA(MATCH(B1,$A$1:$A$8000,0))=TRUE(),B1,"")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36425585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档