Как отобразить, используя фильтр, только ячейки, которые содержат японский язык в Google Sheets? - PullRequest
0 голосов
/ 01 мая 2019

Я попробовал эту формулу в поле пользовательской формулы:

=DETECTLANGUAGE(A:A)=ja

Но это не работает.Все клетки скрыты.Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Вы можете использовать регулярное выражение запроса (preg):

=QUERY(A:A,"where A matches '.*[\p{Hiragana}\p{Katakana}\p{Han}]+.*'")
  • .* Совпадение с любым персонажем неограниченное количество раз
  • []+ Совпадение любого символа внутри от одного до неограниченного количества раз
  • \p{...} класс Unicode для сценариев Han, Hiragana и Katakana
  • Обратите внимание, что регулярное выражение должно соответствовать полной ячейке. Как написано сейчас, он вернет ячейку, даже если найден один из символов Han, Hiragana и Katakana.
0 голосов
/ 01 мая 2019

обратите внимание, что 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), )), "-")

...