使用 OpenOffice sCalc - 如何将 IF 函数与 REGEX 捕获一起使用,如果为真则打印捕获到单元格

Posted

技术标签:

【中文标题】使用 OpenOffice sCalc - 如何将 IF 函数与 REGEX 捕获一起使用,如果为真则打印捕获到单元格【英文标题】:Using OpenOffice sCalc - How to use IF function with REGEX capture and if true print capture to cell 【发布时间】:2014-03-19 13:12:42 【问题描述】:

我有一个包含许多数据行的工作表 (OpenOffice sCalc),其中大部分的年份都包含在 () 中

其中一个牢房有这样的内容:玛丽有一只小羊,莎拉·约瑟夫·海尔 (Sarah Josepha Hale) (1830)

我想捕捉年份并将其保存在右侧的单元格中。

这个 stmt 会告诉我是否存在年份:

=IF(COUNTIF(L115; ".*[(][0-9]4,4[)].*");"hooray"; "boo")

当我尝试在这个 stmt 中用 $1 替换“万岁”时,我收到一个错误:

=IF(COUNTIF(L115; ".*([(][0-9]4,4[)]).*");$1; "boo")

我明白了:#REF!

什么是正确的语法?提前谢谢!

【问题讨论】:

【参考方案1】:

在搜索/替换中可以进行正则表达式捕获(必须在“更多选项”下启用),但我不知道您是否可以在公式中使用捕获。

另一种方式:

=VALUE(MID(L115;FIND("(";L115)+1;4))

【讨论】:

这将起作用,但在那些日期未包含在 () 中的情况下,stmt.是?我尝试了几种变体,但我不断收到错误。 请发布您数据的所有格式变化的示例,然后也许我们可以制定一个公式。例如。可以使用=VALUE(MID(A1,SEARCH("\d4",A1),4)) 在单元格中查找 4 位数字。 (看起来 SEARCH 支持正则表达式,但 FIND 不支持。) Weiss and Kline, Excavating, 14,1 (1962) Weiss and Kline, Excavating, 14,1 1962我所做的是将工作表导出为 csv 文件,然后使用 Perl 将年份插入到正确的列中,然后将其重新导入 sCalc - 不优雅,但它可以工作 试试=VALUE(MID(A1;SEARCH("[0-9]4";A1);4))。 (似乎不支持字符类\d。)这将获得第一次出现的4位数字。

以上是关于使用 OpenOffice sCalc - 如何将 IF 函数与 REGEX 捕获一起使用,如果为真则打印捕获到单元格的主要内容,如果未能解决你的问题,请参考以下文章

使用 LibreOffice 的 'scalc' 从命令行将制表符分隔的文本转换为 Excel

如何使用 OpenOffice API 将 HTML 文本放入 OpenOffice 文档

如何将多层 OpenOffice 绘图导出为多层 PDF 文件?

我应该如何使用 OpenOffice 自动化将 HTML 文件转换为 RTF?

如何将复选框导出到 OpenOffice 中的 .doc 文档?

Scalc SBT 编译失败