Підрядка витягу Excel з рядка


22

Я шукаю спосіб витягти підрядку змінної довжини з рядка.

Мої клітини будуть виглядати приблизно так:

ABC - DEF
ABCDE - DEF
ABCD - ABC

Я хочу розділити рядок на -символі, так що комірки стануть:

ABC
ABCDE
ABCD

Це слід робити за допомогою формули, а не VBScript.

Я використовую Excel 2010

EDIT

Я виявив, що набір даних не завжди містить -символ, тобто не повинно бути змін.

Відповіді:


26

Цю проблему можна розділити на два етапи:

  1. Знайдіть індекс у рядку потрібного символу розділення (у цьому випадку "-"або " - ").
  2. Отримайте підстроку префікса від початку оригінального тексту до розділеного індексу.

FINDІ SEARCHкоманди , кожен з них буде повертати індекс заданого needleв haystack( FINDчутливий до регістру, SEARCHрегістр НЕ враховується і дозволяє групові символи). Враховуючи це, ми маємо:

FIND(search_text, source_cell, start_index)

або в цьому випадку:

FIND(" - ", A1, 1)

Після того, як ми маємо індекс, нам потрібен префікс, source_cellщоб зробити "розділення". MIDробить саме це:

MID(source_cell, start_index, num_characters)

Збираючи їх обох разом, ми маємо:

=MID(A1,1,FIND(" - ",A1,1))

причому A1 має текст ABC - DEFдарує ABC.


7

Розширення на відповідь Ендрю на основі вашої редакції: щоб знайти символьний рядок, на який слід розділити, ми використовуємо FINDфункцію. Якщо FINDне вдалося знайти заданий рядок, він повертає #VALUE?помилку. Тому нам потрібно буде перевірити це значення і використовувати замість нього значення.

Щоб перевірити наявність будь-якого значення помилки, включаючи #VALUE, ми використовуємо ISERRORфункцію, таким чином:

=ISERROR(FIND(" - ", A1, 1))

це буде правдою, якщо FINDфункція не може знайти рядок "-" у комірці A1. Тож ми використовуємо це, щоб вирішити, яке значення використовувати:

=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))

Це говорить про те, що якщо команда find повертає помилку, використовуйте немодифіковану комірку A1. В іншому випадку виконайте ту MIDфункцію, яку Андрій вже надав.


2

Дякую @AndrewColeson за вашу відповідь.

Тож просто додати до цього, якщо ви хочете, щоб все було з правого боку -, використовуйте цей код:

= MID (A1, LEN (B1) + 3, LEN (A1))

Який є:

A1 = ABC - DEF
B1 = =MID(A1,1,FIND(" - ",A1,1))
    B1 = ABC
Therefore A1 = DEF

Цей код відмінно підходить, якщо у вас є невизначена кількість символів після -.

Наприклад:

Якщо у вас є:

ABC - DEFG
AB - CDEFGH
...

це робить трюк також =MID(a1,FIND("-",a1)+1,LEN(a1))без будь-яких "позаклітинних" посилань)
Майкі

1

Ось дуже простий спосіб витягти 5-й символ зліва з текстового рядка в Excel:

Припустимо, рядок символів ABCDEFGHIJзберігається у комірці А1 в таблиці Excel та наступній формулі

=RIGHT(LEFT(A1,5),1)

видає 5-й символ зліва в рядку, а саме E.


(Немає жодної MIDфункції в Excel? Я впевнений, що вона існує у застарілому Visual Basic, і це було б щось на зразок =MID(A1, 5, 1))
Valmiky Arquissandas

0

Наступна формула видалить підрядку з [TEXTCOLUMN_1]

наприклад: якщо ви хочете , щоб перетворити -./thumb/hello.jpgв thumb/hello.jpgте використовувати наступну формулу

=SUBSTITUTE([TEXTCOLUMN_1],LEFT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)

[TEXTCOLUMN_1]= назва стовпця, який ви хочете змінити [NUM_OF_CHARACTERS]= кількість символів з лівого боку, яке ви хочете видалити

Якщо ви хочете видалити з правого боку, скористайтеся наступним

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.