Есть ли в Google листах надежный способ извлечь номера домов из адресной ячейки (улица + номер дома) в другую ячейку? - PullRequest
1 голос
/ 23 апреля 2020

В Sheet1!AK2:AK У меня есть адреса в следующих форматах:

rotenkamper weg, 323, Kirchstieg 2345, Im Schleedörn 20b

Мне нужны названия улиц для экспорта в Sheet2!C3:C, т.е.:

rotenkamper weg, Kirchenstieg, Im Schleedörn

Номера домов должен go в Sheet2!D3:D.

Я искал и пытался часами, но не смог найти решение, которое могло бы получить номера домов, включая букву, например 20b или, если число - это диапазон 24-27 .

Кроме того, мне очень трудно заставить его работать, когда улица состоит из двух или более слов.

Кто-нибудь знает элегантное решение для этого?

Любая помощь будет высоко ценится. Это избавит меня от недель работы по вводу данных.

1 Ответ

2 голосов
/ 23 апреля 2020

Попробуйте это в Sheet2!C3:

=ARRAYFORMULA(
  {
    REGEXREPLACE(REGEXREPLACE(Sheet1!AK2:AK, "\s+\S*\d\S*\b", ""), ",+", ","),
    IFNA(REGEXEXTRACT(Sheet1!AK2:AK, "\S+$"))
  }
)

Объяснение:

  1. REGEXREPLACE(Sheet1!AK2:AK, "\s+\S*\d\S*\b", "") это слово удаляет любое слово, в котором есть ди git. Все эти 323 , 2345 , 20b пропадут.
  2. REGEXREPLACE(..., ",+", ",") убирает любые множественные последовательные запятые, которые могут появиться после удаления на первом этапе. Это будет значение для первого столбца.
  3. IFNA(REGEXEXTRACT(Sheet1!AK2:AK, "\S+$")), этот просто получает то, что находится в конце строки адреса от последнего пробела до конца. Это будет значение для второго столбца.
  4. {value_for_the_first_column, value_for_the_second_column}, помещенный в ячейку C3, заполнит C3 value_for_the_first_column и D3 значением value_for_the_first_column .
  5. ARRAYFORMULA выполнит все вышеперечисленное для каждой строки.

Шаблон регулярного выражения можно уточнить, если вы предоставите более одного примера адреса.

...