A列中B列中的单元格值吗? (LibreOffice-Calc)
Is a cell value in column B in column A? (LibreOffice-Calc)
- A 列有一些流浪汉的前 250 部电影的降序列表,格式如下:现代启示录 (1979)
- B 列有 My Top-100 的排序列表,格式相同。
- 两个列表都已复制并粘贴到记事本文本文档中,以确认它们是类似的简单 ASCI 文本——末尾没有额外的空格——等等——然后粘贴回 LibreofficeCalc。
我需要一个 C 列的函数来显示他没有在 (A) 中列出的任何我的电影 (B)。
伪代码:
- C1 = B1 中的单元格值 – 它在 A1:A8000 中的任何位置吗?如果不是 – 将 B1 值放入 C1,否则留空。
- C2 = B2 中的单元格值 – 它是否在 A1:A8000 中的任何位置?如果不是 – 将 B2 值放入 C2,否则留空。
- 等等
我搜索并找到了这些功能 – none 无论出于何种原因,其中的功能都有效。我已将它们修改为 8000 作为上限,我认为我永远不会接近它。
=IF(ISERROR(MATCH(B1,$A:$A00,0))=1,B1,"")
=IFERROR(MATCH(B1;$A:$A00;0);"")
=IFNA(VLOOKUP($B1;$A:$A00;1;0);"")
=IF(ISNA(VLOOKUP($B1;$A:$A00;1;0));"";VLOOKUP($B1;$A:$A00;1;0))
=IF(ISNA(VLOOKUP($B1,$A:$A00,1,0)),"",VLOOKUP($B1,$A:$A00,1,0))
=VLOOKUP(B1,$A:$A00,1,)
=MATCH($B1;$A:$A9;0)
我希望它是单个单元格函数,而不是 VBA。
实际上我早在 2001 年就使用 Excel 解决了这个问题。当时的诀窍是我必须编辑单元格并使用 Ctrl-Shift-Enter 创建一个“动态数组”,因此该函数被括在 {} 大括号中。但现在我使用的是最新的 LibreOffice Calc,无法正确使用 @#$# 语法。
谢谢!!
编辑 注意:使用 "A" 和“00001”数字进行测试会产生非常不同的结果。两列中的值必须如下所示:
- 爱丽丝 (1988)
- 醉酒 (1987)
- 无能为力 (1995)
- 等等
好的,我已经在 Open Office 中测试了这些,结果如下:-
=IF(ISERROR(MATCH(B1,$A:$A00,0))=1,B1,"")
给出错误 508,因为逗号需要更改为分号。
**=IF(ISERROR(MATCH(B1;$A:$A00;0))=1;B1;"")**
很好。
=IFERROR(MATCH(B1;$A:$A00;0);"")
给出#Name?因为无法识别 IFERROR。
=IFNA(VLOOKUP($B1;$A:$A00;1;0);"")
给出#Name?因为无法识别 IFNA。
=IF(ISNA(VLOOKUP($B1;$A:$A00;1;0));"";VLOOKUP($B1;$A:$A00;1;0))
有效但给出相反的结果。
**=IF(ISNA(VLOOKUP($B1;$A:$A00;1;0));B1;"")**
就好了。
=IF(ISNA(VLOOKUP($B1,$A:$A00,1,0)),"",VLOOKUP($B1,$A:$A00,1,0))
逗号
=VLOOKUP(B1,$A:$A00,1,)
逗号
=MATCH($B1;$A:$A9;0)
有效,但只给出匹配的位置。
可能最简单的方法是:-
**=IF(COUNTIF(A:A00;B1);"";B1)**
不幸的是,在 Libre/Open Office 中,带有方括号的字符串似乎给出了虚假匹配。我猜你可以通过替换来绕过它
=IF(COUNTIF(SUBSTITUTE(SUBSTITUTE(A:A;"(";"<");")";">");SUBSTITUTE(SUBSTITUTE(B1;"(";"<");")";">"));"";B1)
作为数组公式输入并复制(而不是拉取)下来,或者当然是全局编辑所有括号:-(。
感谢@Lyrl,现在我知道了这个问题的根本原因,还有一个选项可以按照建议关闭正则表达式,或者您可以转义括号:-
=IF(COUNTIF(A:A;SUBSTITUTE(SUBSTITUTE(B2;"(";"\(");")";"\)"));"";B2)
请参阅 Open Office 中有关 Regex 的文档here
应该这样做,
=IF(ISNUMBER(MATCH(B1,$A:$A00,0)),"",B1)
测试公式
=IF(ISNA(MATCH(B1,$A:$A00,0))=TRUE(),B1,"")
- A 列有一些流浪汉的前 250 部电影的降序列表,格式如下:现代启示录 (1979)
- B 列有 My Top-100 的排序列表,格式相同。
- 两个列表都已复制并粘贴到记事本文本文档中,以确认它们是类似的简单 ASCI 文本——末尾没有额外的空格——等等——然后粘贴回 LibreofficeCalc。
我需要一个 C 列的函数来显示他没有在 (A) 中列出的任何我的电影 (B)。
伪代码:
- C1 = B1 中的单元格值 – 它在 A1:A8000 中的任何位置吗?如果不是 – 将 B1 值放入 C1,否则留空。
- C2 = B2 中的单元格值 – 它是否在 A1:A8000 中的任何位置?如果不是 – 将 B2 值放入 C2,否则留空。
- 等等
我搜索并找到了这些功能 – none 无论出于何种原因,其中的功能都有效。我已将它们修改为 8000 作为上限,我认为我永远不会接近它。
=IF(ISERROR(MATCH(B1,$A:$A00,0))=1,B1,"")
=IFERROR(MATCH(B1;$A:$A00;0);"")
=IFNA(VLOOKUP($B1;$A:$A00;1;0);"")
=IF(ISNA(VLOOKUP($B1;$A:$A00;1;0));"";VLOOKUP($B1;$A:$A00;1;0))
=IF(ISNA(VLOOKUP($B1,$A:$A00,1,0)),"",VLOOKUP($B1,$A:$A00,1,0))
=VLOOKUP(B1,$A:$A00,1,)
=MATCH($B1;$A:$A9;0)
我希望它是单个单元格函数,而不是 VBA。
实际上我早在 2001 年就使用 Excel 解决了这个问题。当时的诀窍是我必须编辑单元格并使用 Ctrl-Shift-Enter 创建一个“动态数组”,因此该函数被括在 {} 大括号中。但现在我使用的是最新的 LibreOffice Calc,无法正确使用 @#$# 语法。
谢谢!!
编辑 注意:使用 "A" 和“00001”数字进行测试会产生非常不同的结果。两列中的值必须如下所示:
- 爱丽丝 (1988)
- 醉酒 (1987)
- 无能为力 (1995)
- 等等
好的,我已经在 Open Office 中测试了这些,结果如下:-
=IF(ISERROR(MATCH(B1,$A:$A00,0))=1,B1,"")
给出错误 508,因为逗号需要更改为分号。
**=IF(ISERROR(MATCH(B1;$A:$A00;0))=1;B1;"")**
很好。
=IFERROR(MATCH(B1;$A:$A00;0);"")
给出#Name?因为无法识别 IFERROR。
=IFNA(VLOOKUP($B1;$A:$A00;1;0);"")
给出#Name?因为无法识别 IFNA。
=IF(ISNA(VLOOKUP($B1;$A:$A00;1;0));"";VLOOKUP($B1;$A:$A00;1;0))
有效但给出相反的结果。
**=IF(ISNA(VLOOKUP($B1;$A:$A00;1;0));B1;"")**
就好了。
=IF(ISNA(VLOOKUP($B1,$A:$A00,1,0)),"",VLOOKUP($B1,$A:$A00,1,0))
逗号
=VLOOKUP(B1,$A:$A00,1,)
逗号
=MATCH($B1;$A:$A9;0)
有效,但只给出匹配的位置。
可能最简单的方法是:-
**=IF(COUNTIF(A:A00;B1);"";B1)**
不幸的是,在 Libre/Open Office 中,带有方括号的字符串似乎给出了虚假匹配。我猜你可以通过替换来绕过它
=IF(COUNTIF(SUBSTITUTE(SUBSTITUTE(A:A;"(";"<");")";">");SUBSTITUTE(SUBSTITUTE(B1;"(";"<");")";">"));"";B1)
作为数组公式输入并复制(而不是拉取)下来,或者当然是全局编辑所有括号:-(。
感谢@Lyrl,现在我知道了这个问题的根本原因,还有一个选项可以按照建议关闭正则表达式,或者您可以转义括号:-
=IF(COUNTIF(A:A;SUBSTITUTE(SUBSTITUTE(B2;"(";"\(");")";"\)"));"";B2)
请参阅 Open Office 中有关 Regex 的文档here
应该这样做,
=IF(ISNUMBER(MATCH(B1,$A:$A00,0)),"",B1)
测试公式
=IF(ISNA(MATCH(B1,$A:$A00,0))=TRUE(),B1,"")