Страницы: 1
RSS
Обход ограничения \\ Каждое слово в отдельной СТРОКЕ
 
Стандартная функция Excel "Заполнить" > "Выровнять" (она же в VBA: "Selection.Justify") работает только с первыми 255 символами в ячейке, как и множество других подлых функций (например, "СЧЁТЕСЛИ").

Возможно ли обойти это ограничение?
Возможно ли написать пользовательскую функцию?
Может есть вообще другой способ?

Задача: преобразовать текст в ячейке таким образом, чтобы рядом с ним создалось количество строк, равное количеству слов в ячейке (по факту - количеству пробелов между словами, +1).
Чтобы у каждого слова из первоначальной ячейки была своя собственная строка. Вот так:
Чтобы
у
каждого
слова
из
первоначальной
ячейки
была
своя
собственная
строка.
Вот
так:

(а потом я ещё всякие символы лишние, вроде ":" и "." убираю).
"Текст по столбцам" не предлагать.
Спасибо.
Изменено: RazorBaze - 09.09.2017 11:24:43 (Прикреплён файл примера.)
 
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(" "&$A$2;" ";ПОВТОР(" ";99));СТРОКА(A1)*99;99))
 
Ок, благодарю. А можно в VBA?
 
Код
Public Sub www()
    Dim lr&, a, i&
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    For i = lr To 2 Step -1
    If InStr(Cells(i, 1), " ") Then' на случай если нечего делить
        a = Split(Cells(i, 1), " ")
        Cells(i, 1).Resize(UBound(a)).Insert xlDown
        Cells(i, 1).Resize(UBound(a) + 1).Value = Application.Transpose(a)
        End If
    Next
End Sub
Изменено: kuklp - 09.09.2017 11:49:58
Я сам - дурнее всякого примера! ...
 
Товарищ kuklp, вообще шикарно
Вот только бы оно работало для "Selection" (любой выбранной ячейки) - ???!!1
 
Код
Public Sub www()
    Dim a
    If InStr(Selection, " ") = 0 Or Selection.Cells.Count > 1 Then Exit Sub
    a = Split(Selection, " ")
    Selection.Resize(UBound(a)).Insert xlDown
    Selection.Resize(UBound(a) + 1).Value = Application.Transpose(a)
End Sub
Я сам - дурнее всякого примера! ...
 
большое
ОГРОМНОЕ
С П А С И Б О )))
Страницы: 1
Наверх