在openoffice calc中从单元格中提取数字

时间:2012-11-09 06:56:13

标签: openoffice.org openoffice-calc libreoffice

我在开放式办公室有一个专栏:

ABC-23

ABC-32

ABC-1

现在,我需要使用公式和calc中的正则表达式得到数字23,32和1的总和。 我该怎么做?

我试过

=SUMIF(F7:F16,"([:digit:].)$")

但不知怎的,这不起作用。

5 个答案:

答案 0 :(得分:1)

从LibreOffice 6.4开始,您可以使用新添加的REGEX function从字符串中提取所有数字:

=REGEX(A1;"[^[:digit:]]";"";"g")

4个函数参数的说明:

  1. A1:您要从中提取数字的字符串
  2. "[^[:digit:]]":匹配每个非十进制数字的字符。另请参见list of regular expressions in LibreOffice
    • 外部方括号[]封装了要搜索的字符列表
    • ^添加一个 NOT ,表示搜索列表中包含的每个字符 not 都匹配
    • [:digit:]代表任何十进制数字
  3. "":将匹配的字符(所有非数字字符)全部替换为空=删除它们
  4. "g":替换所有匹配项(第一个非数字字符后不要停止)

答案 1 :(得分:0)

不幸的是,Libre-Office仅在查找/替换和搜索中支持正则表达式。 如果这是一次性交易,我会将A列复制到B列,然后在B中使用[data] [text to columns]并使用 - 作为分隔符,留下B列中的所有文本和C栏中的数字。

或者,您可以在B列中使用= Right(A1,find(“ - ”,A1,1)+1),然后对C列求和。

答案 2 :(得分:0)

我认为这不是你想要的,但也许它可以帮助你或其他人。

全部是关于substring(在Calc中称为[MID][1]函数):

首先:选择您的单元格(例如使用" abc-23"内容)。

其次:输入开始时间长度(" british" - > start length 4 = tish)。

之后:要打印所有剩余文字,您可以将[LEN][2]功能(称为长度)与您的单元格一起使用(" abc-23&#34 ;)参数。 代码现在看起来像这样:

D15="abc-23"
=MID(D15; 5; LEN(D15))

输出为:23

编辑数字时(在此示例中为23),没问题。但是,如果您更改之前的任何内容(文字" abc-"),算法会崩溃,因为起始长度定义为" 5"。

答案 3 :(得分:0)

我不会在不知道是否真的有兴趣的情况下打扰解决方案,但是,你可以写一个宏来做到这一点。提取所有数字,然后通过检查文本中包含的数字来实现总和。

答案 4 :(得分:0)

将字符串粘贴到单元格中,打开搜索并替换对话框(ctrl + f)扩展搜索选项标记正则表达式搜索([\ s,0-9])([^ 0-9 \ s])+和用$ 1替换它

根据您的需要调整正则表达式