Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
tiho_mirno
1 / 1 / 0
Регистрация: 08.08.2016
Сообщений: 6
1

Excel: разбиение текста ячейки на несколько, если разделитель - цифры

06.10.2016, 12:05. Просмотров 2159. Ответов 5
Метки нет (Все метки)

Собственно вопрос в следующем: имеется ячейка с таким, примерно, текстом "1. ххх. 2. ууу. 3. zzz. ... 15. aaa".
Мне требуется разделить эту ячейку по цифрам, то есть "1. ххх", "2. ууу" и так далее.
Встроенная функция "данные -> разделить по столбцам" не позволяет делать изменяющийся разделитель.
Единственное, что мне пока пришло в голову - это написать макрос со счетчиком, который будет производить поиск номера символа по значению счетчика, а потом вырезать кусок текста и вставлять в новую ячейку. Но тут есть 2 проблемы:
1. Мне кажется, что можно сделать проще =)
2. Если после 1. в наименовании позиции будут указаны цифры, то программа может сбиться и всё станет очень плохо.

Подскажите, пожалуйста, как можно решить эту задачу?
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2016, 12:05
Ответы с готовыми решениями:

Разбиение ячейки на несколько
Добрый день. Прошу прощения за дурацкий вопрос, но что-то не могу разобраться. В ячейке А1 через...

Разбиение текста для записи в несколько файлов
Здравствуйте уважаемые форумчане. Я еще только начинаю изучать С++. Надеюсь на вашу помощь. В...

Запись данных из одной ячейки в несколько - MS Excel
Эта тема не однократно обсуждалась в интернете, знаю, и решение имеет не сложное. Единственное...

Разделение сложного текста из одной ячейки в несколько
вот такая вот задача: клиент присылает кучу адресов написанных не по единому стандарту в одну...

Как программно записать цифры даты в отдельные ячейки Excel
Всем доброго времени суток ! Для записи даты в таблицу Excel используется код: ...

5
toiai
3180 / 934 / 216
Регистрация: 29.05.2010
Сообщений: 2,030
06.10.2016, 15:04 2
Непонятно разделять в ячейки строки или столбцов, пример бы...
0
tiho_mirno
1 / 1 / 0
Регистрация: 08.08.2016
Сообщений: 6
06.10.2016, 15:20  [ТС] 3
Цитата Сообщение от toiai Посмотреть сообщение
Непонятно разделять в ячейки строки или столбцов, пример бы...
Пусть в ячейке А1 такой текст: "1. ххх. 2. ууу. 3. zzz. ... 15. aaa".
Надо, чтобы в ячейках А1:А15 стал текст соответственно:
А1: "1. ххх."
А2: "2. ууу."
А3: "3. zzz."
...
А15: "15. ааа."

Такой пример достаточен или нужны ещё какие-то уточнения?
0
KoGG
5303 / 1374 / 325
Регистрация: 23.12.2010
Сообщений: 2,042
Записей в блоге: 1
06.10.2016, 15:43 4
Лучший ответ Сообщение было отмечено tiho_mirno как решение

Решение

Если номера идут строго по возрастанию:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Разбить_по_номеру_выделенное()
    Dim i%, k%, StartChar%, TekCell As Range, S$, Z$, TekNum%, NextNum$, Block$
    For Each TekCell In Intersect(Application.Selection, ActiveSheet.UsedRange)
        Z = TekCell.Value
        If Z <> "" Then
            StartChar = 1
            For i = 2 To 40 ' 40 максимальный порядковый номер блока
                NextNum = " " & i & "."
                k = InStr(StartChar, Z, NextNum)
                If k > 0 Then
                   Block = Mid(Z, StartChar, k - StartChar)
                   StartChar = k + 1
                Else
                   Block = Mid(Z, StartChar)
                End If
                Block = Trim(Block)
                TekNum = Val(Left(Block, 3))
                TekCell.Offset(0, TekNum) = Block
            Next i
        End If
    Next TekCell
End Sub
в пропущенных номерах ячейки остаются пустыми.
Разбивал по столбцам, отставляя исходник.
По строкам с затиранием исходника надо поменять строку 18 на
Visual Basic
1
TekCell.Offset(TekNum - 1, 0) = Block
Если пропусков номеров не будет, то после 18 вставьте строку
Visual Basic
1
If k = 0 Then Exit For
1
tiho_mirno
1 / 1 / 0
Регистрация: 08.08.2016
Сообщений: 6
06.10.2016, 15:54  [ТС] 5
Господин КoGG, снимаю шляпу! Ваш код работает прекраснейшим образом! Большое спасибо!
0
toiai
3180 / 934 / 216
Регистрация: 29.05.2010
Сообщений: 2,030
06.10.2016, 16:29 6
Как вариант предложу:
Допустим в ячейке A1="1. ххх. 2. ууу. 3. zzz. 15. aaa"
Visual Basic
1
2
3
4
5
6
Sub Разбить_по_номеру()
    s = Split([a1], ". ")
    For i = 0 To UBound(s) Step 2
        Cells(i / 2 + 2, 1) = s(i) & ". " & s(i + 1) & "."
    Next
End Sub
0
06.10.2016, 16:29
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2016, 16:29

StringGrid несколько строк вертикального текста в одной ячейки
уважаемые форумчане если ли у кого пример данной реализации? Поделитесь пожалуйста.

Left Join если в одной из таблиц несколько значений в ячейки
Доброго времени суток. Вопрос. Есть две таблицы в каждой есть по столбцу Card_ID. Соединяем их...

Excel сцепить ячейки, если столбцы одинаковые
Здравствуйте, подскажите, пожалуйста макрос. который будет слиять ячейки столбца C и D через знак +...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.