我想要一個可以從文本中提取帶有度量單位的數字的函式。
例如在 A2 我有:
這個箱子重5公斤,另一個箱子重10公斤。
所以我想要一個將回傳的函式:
5公斤 10公斤
注意:我希望該函式適用于任何測量單位,而不僅僅是“kg”。
我是谷歌表格的初學者,所以如果你能為我提供一個作業功能,那將非常有幫助。
uj5u.com熱心網友回復:
您可以使用此示例自定義函式來提取以數字開頭、后跟一個字符的單詞。
/**
* @customfunction
*/
function EXTRACTMEASUREMENT(input) {
// match all words which starts with a number
var result = input.match(/\d [a-zA-Z] \S*/g)
// combine array into a string separated with spaces
result = result.join(' ');
// Remove special characters(except whitespace) in the string
result = result.replace(/[^\/a-zA-Z0-9\s]/g, '')
return result;
}
輸出:

限制:
- 無法檢測值和單位之間有空格的測量值。(
A5當 中存在空間時,請參閱單元格中的結果10 kg.) - 不管數字后面的字符是否為有效單位,都會被提取出來。(見單元格
A5中的結果,其中20yy不是有效的測量單位) - 如果要免除某些不被洗掉的字符,可以將它們添加到大括號中
[^\/a-zA-Z0-9\s](示例/不會被洗掉)。筆記:
如果您可以列出應支持的有效度量單位,則可以改進這一點。
uj5u.com熱心網友回復:
嘗試
=arrayformula(substitute(transpose(query(flatten(split(
REGEXREPLACE(A1,"([0-9.,/] [ ]{0,1}[a-z1-3/.\-""] )","??$1?")
,"?")),"select * where Col1 like '?%' ")),"?",""))

uj5u.com熱心網友回復:
還有一種選擇:
=ArrayFormula(IF(LEN(A:A),
SPLIT(
REGEXREPLACE(
REGEXREPLACE(A:A,"("&
REGEXREPLACE(
REGEXREPLACE(
REGEXREPLACE(A:A,"(\d [.,/]*\d*(?:\w |\s\w )[\""./\-\w ]*)",""),
"\s \.","|\\."),
"\s ","|")
&")",""),
"(\d)\s","$1")
," ",,1)
,))

uj5u.com熱心網友回復:
嘗試:
=INDEX(SPLIT(FLATTEN(QUERY(TRANSPOSE(IFERROR(SUBSTITUTE(
REGEXEXTRACT(SPLIT(REGEXREPLACE(A1:A, "(\d .\d |\d )", "×$1"), "×"),
TEXTJOIN("|", 1, {"\d .\d ","\d .\d ","\d ","\d "}&
SORT({"nm";"mm";"cm";"dm";"km";"m";"t";"kg";"dg";"g";"l";"ml";"dl"},
LEN({"nm";"mm";"cm";"dm";"km";"m";"t";"kg";"dg";"g";"l";"ml";"dl"}), 0))),
" ", ))),,9^9)), " "))

更新:
全部在一個單元格中:
=INDEX(TRIM(FLATTEN(QUERY(TRANSPOSE(IFERROR(SUBSTITUTE(
REGEXEXTRACT(SPLIT(REGEXREPLACE(A1:A, "(\d .\d |\d )", "×$1"), "×"),
TEXTJOIN("|", 1, {"\d .\d ","\d .\d ","\d ","\d "}&
SORT({"nm";"mm";"cm";"dm";"km";"m";"t";"kg";"dg";"g";"l";"ml";"dl"},
LEN({"nm";"mm";"cm";"dm";"km";"m";"t";"kg";"dg";"g";"l";"ml";"dl"}), 0))),
" ", ))),,9^9))))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/360227.html
上一篇:在單個GoogleSheetsApp腳本中組合兩個onEdit()
下一篇:鎖定谷歌表格中的公式值
