我在自定义公式框中尝试了这个公式:
=DETECTLANGUAGE(A:A)=ja
但它不起作用。所有细胞都被隐藏了。我究竟做错了什么?
请注意,DETECTLANGUAGE
不适用于数组/范围,所以只有:
=IF(DETECTLANGUAGE(A1)="ja", "Japanese", )
但你可以使用一个脚本:
function NIPPON(input) {
var output = [];
for (i = 0 ; i < input.length; i++){
try {
output[i] = LanguageApp.translate(input[i], '', 'ja');
}
catch(err) {
output[i] = err.message;
}
} return output; }
=ARRAYFORMULA(FILTER(A1:A, IF(LEN(A1:A)=LEN(NIPPON(A1:A)), LEN(A1:A), )>0))
在数组中使用DETECTLANGUAGE
进行英语检测的示例:
=IFERROR(ARRAYFORMULA(IF(LEN(A5:A),
IF({DETECTLANGUAGE(A5)="en";
DETECTLANGUAGE(A6)="en";
DETECTLANGUAGE(A7)="en";
DETECTLANGUAGE(A8)="en";
DETECTLANGUAGE(A9)="en";
DETECTLANGUAGE(A10)="en"},
LEN(A5:A), 0), )), "-")
您可以使用查询的正则表达式(preg):
=QUERY(A:A,"where A matches '.*[\p{Hiragana}\p{Katakana}\p{Han}]+.*'")
.*
无限次匹配任何角色[]+
在一次和无限次之间匹配任何角色\p{...}
,Han
和Hiragana
脚本的Katakana
Unicode类Han
,Hiragana
和Katakana
字符之一,它也将返回单元格。