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

Узнай цену своей работы

Формулировка задачи:

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

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

textual
Листинг программы
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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы