2

Я хочу, чтобы моя структура СПП 3-го уровня возвращалась в Excel независимо от длины символа.

Конкретные примеры: если мой WBS 1.2.3.1, я хочу вернуть 1.2.3, а если мой WBS 1.200.4.2, я хочу вернуть 1.200.4. Другими словами, длина символа между периодами не имеет значения.

Я использовал LEFT() но это не учитывает длину символа. Любая помощь будет оценена.

2 ответа2

2

Я предполагаю, что все, что вам нужно сделать, это удалить третье "." и любые символы, которые следуют за этим. В этом случае и предполагая, что строка WBS находится в ячейке A1, вы можете использовать

=LEFT(A1,SEARCH(".",A1,SEARCH(".",A1,SEARCH(".",A1)+1)+1)-1)

Если A1 содержит «1.200.4.2», возвращается «1.200.4».

1

Эта формула извлечет дескриптор СПП 3-го уровня из полного дескриптора, хранящегося в A1:

=LEFT(A1,FIND("~",SUBSTITUTE(A1,".","~",3))-1)

Обратите внимание, что эту формулу можно адаптировать для извлечения дескриптора любого уровня. Просто замените 3 на требуемый уровень.

Например, чтобы извлечь дескриптор уровня 2, используйте:

=LEFT(A1,FIND("~",SUBSTITUTE(A1,".","~",2))-1)

Также обратите внимание, что эта формула будет возвращать ошибку, если указан дескриптор, уже имеющий уровень 3. Следующее позволяет это сделать:

=
IFERROR(
  LEFT(A1,FIND("~",SUBSTITUTE(A1,".","~",3))-1),
  IFERROR(SUBSTITUTE(A1,".",".",2),NA())
)

Другая формула, которую вы можете найти полезной:

=LEFT(A1,FIND("~",SUBSTITUTE(A1,".","~",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))-0))-1)

Возвращает уровень предка. Обратите внимание, что эта формула также многоуровневая. Чтобы вернуть предку на два уровня выше, замените -0 на -1 . Для трех уровней вверх используйте -2 и т.д.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .