我在开放式办公室有一个专栏:
ABC-23
ABC-32
ABC-1
现在,我需要使用公式和calc中的正则表达式得到数字23,32和1的总和。 我该怎么做?
我试过
=SUMIF(F7:F16,"([:digit:].)$")
但不知怎的,这不起作用。
答案 0 :(得分:1)
从LibreOffice 6.4开始,您可以使用新添加的REGEX function从字符串中提取所有数字:
=REGEX(A1;"[^[:digit:]]";"";"g")
4个函数参数的说明:
A1
:您要从中提取数字的字符串"[^[:digit:]]"
:匹配每个非十进制数字的字符。另请参见list of regular expressions in LibreOffice
[]
封装了要搜索的字符列表^
添加一个 NOT ,表示搜索列表中包含的每个字符 not 都匹配[:digit:]
代表任何十进制数字""
:将匹配的字符(所有非数字字符)全部替换为空=删除它们"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替换它
根据您的需要调整正则表达式