對于 Google 表格中的開源聊天分析器,我需要提取子字串 ( Example
) 之后的所有數值,然后將它們合計。
例如,如果一個單元格包含Example1 another text 123 Example500 text
,Example1
并且Example500
應該被提取出來,并且它們的數值總和為501
。
由于需要獲取一列訊息的總數,這進一步復雜化了。
我已經嘗試過的:
=REGEXEXTRACT(A1, "Example(\d )")
:這僅提取第一個匹配值,但有效!=SUM(SPLIT(A1, "Example"))
:這適用于僅包含我的目標字串的訊息,但在包含其他字串時會分崩離析。輸出可能會被過濾為以數字開頭的結果,但這非常混亂并且可能是一個紅鯡魚。CONCATENATE
將我所有的單元格放在一起,然后搜索數字。由于訊息中的附加數字,這很容易出錯。
uj5u.com熱心網友回復:
嘗試:
=LAMBDA(x, REGEXEXTRACT(A1, "(\w )\d ")&
SUMPRODUCT(IF(IFERROR(REGEXMATCH(x, "\w \d ")),
REGEXEXTRACT(x, "\w (\d )"), )))(SPLIT(A1, " "))
更新1:
=LAMBDA(x, REGEXEXTRACT(A1, "(\D )\d ")&
SUMPRODUCT(IF(IFERROR(REGEXMATCH(x, "\D \d ")),
REGEXEXTRACT(x, "\D (\d )"), )))(SPLIT(A1, " "))
更新2:
=INDEX(LAMBDA(xx, REGEXEXTRACT(xx, "(\D )\d ")&
BYROW(LAMBDA(x, IF(IFERROR(REGEXMATCH(x, "\D \d ")),
REGEXEXTRACT(x, "\D (\d )"), ))(SPLIT(xx, " ")), LAMBDA(x, SUMPRODUCT(x))))
(A1:INDEX(A:A, MAX((A:A<>"")*ROW(A:A)))))
如果您從 A2 開始,只需更改A1:
為A2:
uj5u.com熱心網友回復:
另一個想法是將每個替換Example(\d )
為
從@TheMaster 編輯:作為陣列公式,我們可以使用BYROW
=BYROW(A:A;LAMBDA(row; IF(ISTEXT(row);SUM(SPLIT(
REGEXREPLACE(row;"Example(\d )|.";"$1 ");" "));)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/517294.html