Текстовая формула Excel для извлечения слов, разделенных точкой с запятой в поле - PullRequest
3 голосов
/ 12 февраля 2010

Поле в Excel содержит слова, разделенные точками с запятой, например ::10000

A1 = сохранить; национальный; сокровище; для; хороший

Как я могу применить текстовые формулы Excel для создания отдельных слов из этого поля в других полях? E.g.:

A2 should contain a formula to get the first word ("save")
A3 should contain a (different) formula to get the second word ("the")
etc.

Однако эти формулы должны оставаться в силе даже при изменении значения в A1, например если значение А1 изменено на

А1 = привет; там, как; ты; ты

Любая помощь в этом отношении будет высоко оценена.

(Проблема в том, что написание собственной функции в этом случае не разрешено, мне приходится использовать оригинальные функции, такие как find, search, mid и т.

Ответы [ 3 ]

5 голосов
/ 12 февраля 2010

Вы можете создать функцию VBA для разделения полей из этого примера :

Function ExtractElement(str, n, sepChar)
'   Returns the nth element from a string,
'   using a specified separator character
    Dim x As Variant
    x = Split(str, sepChar)
    If n > 0 And n - 1 <= UBound(x) Then
       ExtractElement = x(n - 1)
    Else
        ExtractElement = ""
    End If
End Function

Тогда формула А2 будет: =ExtractElement(A1, 1, ";"), а А3 будет: =ExtractElement(A1, 2, ";") и т. Д.

1 голос
/ 13 февраля 2010

Если у вас есть текст для анализа в A1, то следующие формулы должны работать

В А2 введите формулу

=IF(ISERROR(LEFT(A1,FIND(";",A1)-1)),A1,LEFT(A1,FIND(";",A1)-1))

В B2 введите формулу

=IF(ISERROR(RIGHT(A1,LEN(A1)-FIND(";",A1))),"",RIGHT(A1,LEN(A1)-FIND(";",A1)))

Затем вы можете скопировать их так далеко, как вам нужно. Столбец A захватывает самое левое слово, а столбец B отображает оставшуюся строку для анализа. Если у него заканчиваются слова для анализа, формула будет отображаться пустым. Колонка B также может быть скрыта.

1 голос
/ 12 февраля 2010

Если вы можете использовать промежуточные формулы, то это будет работать:

А1 - сохранить; национальное достояние; за; хорошее

B1 - пусто

C1 - = IFERROR (НАЙТИ (";", $ A1,1 + (B1)), LEN ($ A1) +1)

копирование C1 в D1: H1

C2 - = MID ($ A1, B1 + 1, (C1-B1) -1)

копирование C2 в D2: H2

В строке 1 будет отображаться положение каждой точки с запятой в A1, поскольку она начинает искать в строке один символ после точки с запятой, найденной в предыдущей ячейке.

например, ячейка E1 ищет точку с запятой в A1, начиная с D1 + 1 = 10.

Оператор iferror в C1: H1 перехватывает ошибку, которая возникает, когда поиск не находит дальнейших точек с запятой, и возвращает полную длину строки A1, плюс 1 для воображаемой точки с запятой в конце.

B1 должен быть пустым, чтобы создать начальный ноль.

Ячейки C2: H2, затем используйте функцию Mid, чтобы скопировать часть строки A1, начинающуюся с одного символа после значения в каждом из B1: G1, с длиной (C1-B1) -1, (d1-c1) -1 и т. д. (минус один, чтобы вырезать саму точку с запятой)

Вы должны получить: 5, 9, 18, 27, 31, 36 в строке 1 и под этими ячейками отдельные слова.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...