如何使用过滤器仅在Google表格中显示包含日语的单元格?

时间:2019-05-01 03:59:17

标签: regex google-apps-script google-sheets array-formulas google-sheets-formula

我在自定义公式框中尝试了此公式:

=DETECTLANGUAGE(A:A)=ja

但是它不起作用。所有单元格都被隐藏。我在做什么错了?

2 个答案:

答案 0 :(得分:1)

您可以使用查询的regex(preg):

=QUERY(A:A,"where A matches '.*[\p{Hiragana}\p{Katakana}\p{Han}]+.*'")
  • .*无限匹配任意字符
  • []+匹配一次任意字符,且次数不限
  • \p{...} HanHiraganaKatakana脚本的Unicode类
  • 请注意,正则表达式应与完整单元格匹配。现在的编写方式,即使找到HanHiraganaKatakana字符之一,也将返回单元格。

答案 1 :(得分:0)

请注意,DETECTLANGUAGE不适用于数组/范围,因此:

=IF(DETECTLANGUAGE(A1)="ja", "Japanese", )

0


但是您可以使用脚本:

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))

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), )), "-")