使用 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?