Страницы: 1
RSS
Разбить текст на символы, где каждый в отдельную ячейку, при условии отсутствия пробела в первой ячейке каждой строки
 
Доброе утро, уважаемые форумчане!
Столкнулась с задачкой - есть текст, его нужно раскидать в ячейки (каждый символ в отдельную ячейку), эти ячейки расположены в несколько строк, причем пробел не должен быть в первой ячейке строки (текст сдвигается). Задачу нужно решить формулой (возможна UDF, но не желательно), пользоваться будем в разных версиях Excel, самая ранняя 2007.
Формулы я написала,но они у меня рассчитаны на три строки, а нужно на шесть, поэтому прошу Вашей помощи)
 
Может предварительно текст разбить на строки +сжпробел()
 
Vik_tor, Не совсем понимаю как в моем случае использовать СЖПРОБЕЛ, ведь нужно убрать не все пробелы, а только те, у которых определенный порядковый номер в тексте...
 
а что предполагается что между некоторыми словами может быть 2 и более пробела и их нужно все разносить по ячейкам?
но скорее вы правы, это не поможет
Изменено: Vik_tor - 31.08.2020 11:22:34
 
Цитата
Vik_tor написал:
между некоторыми словами может быть 2 и более пробела
нет, только один, поэтому не знаю чем может помочь функция СЖПРОБЕЛ
а, поняла - она же удаляет пробел в начале строки. Но разбивать на строки, потом "вычленять" каждый символ... как-то объемно получается)
Изменено: Настя_Nastya - 31.08.2020 11:44:58
 
я имел ввиду использовать способность сжпробел() удалять начальный пробел в строке.
 
Vik_tor, спасибо, уже поняла, что Вы имели ввиду, но, боюсь, формула получится очень большой - т.к нужно будет избавиться от доп столбцов.
 
Тут с первыми пробелами проблем вообще много возникает. Они добавляют сложность в определении кол-ва символов. UDF можно еще накидать более-менее несложную.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Приношу свои извинения за то, что выкладываю недоделанный вариант (формулы + доп. столбцы) - почти получилось, но есть ошибки.
К сожалению, сейчас я вынужден отвлечься - однако, надеюсь, что какие-то мои идеи могут пригодиться в решении  задачи
 
Дмитрий(The_Prist) Щербаков, спасибо, скорее всего попробую UDF написать
IKor, спасибо, попробую разобраться)
Изменено: Настя_Nastya - 31.08.2020 13:32:47
 
=МИД(ТРИМ(МИД($БА$16;ЦОУНТА($А$15:$АЫ15)+1;18));(ЦОЛУМН()-1)/3+1;1)
Пардон ошибочка вышла.
=MID(TRIM(IF(ROWS($A$16:$A16)=1;$BA$16;MID($BA$16;FIND($A14&$D14&$G14&$J14&$M14&$P14&$S14&$V14&$Y14&$AB14&$AE14&$AH­14&$AK14&$AN14&$AQ14&$AT14&$AW14;$BA$16;MAX(1;COUNTA($A13:$AY$15)))
+LEN($A14&$D14&$G14&$J14&$M14&$P14&$S14&$V14&$Y14&$AB14&$AE14&$AH­14&$AK14&$AN14&$AQ14&$AT14&$AW14);LEN($BA$16))));(COLUMN()-1)/3+1;1)

Был бы офис поновее то было б короче
Изменено: БМВ - 31.08.2020 15:47:09
По вопросам из тем форума, личку не читаю.
 
Объединять по три столбца - без этого никак? Было бы проще
 
БМВ, если взять текст выше, то он "дробится" с ошибками (напоЛЛеон)
vikttur, к сожалению никак - это для заполнения формы и структуру там менять никак нельзя (типа как ТОРГ-12 только хуже)
 
Можно так.
Владимир
 
я там выше заменил и удлиннил :-)
По вопросам из тем форума, личку не читаю.
 
sokol92, спасибо, это намного проще того, что я сейчас понаделала))
БМВ, в очередной раз самое лаконичное решение, спасибо огромнейшее!!!
 
Цитата
Настя_Nastya написал:
самое лаконичное решение,
не самое
=MID(TRIM(IF(ROWS($A$16:$A18)=1;$BA$16;MID($BA$16;FIND($A16&$D16&$G16&$J16&$M16&$P16&$S16&$V16&$Y16&$AB16&$AE16&$AH­16&$AK16&$AN16&$AQ16&$AT16&$AW16;$BA$16;MAX(1;COUNTA($A15:$AY$15)))
+SUMPRODUCT(LEN($A16:$AW16));LEN($BA$16))));(COLUMN()-1)/3+1;1)
По вопросам из тем форума, личку не читаю.
 
Настя_Nastya, Допустима только формула? Макрос ни как?
 
Михаил Витальевич С., добрый вечер! Пользоваться будут в регистратуре в провинциальном городке - боюсь, возможно, некоторые пользователи там с Excel на Вы и могут появиться сложности с включением/разрешением макросов и т.п., поэтому формулы предпочтительнее))
Но для тех кому, вдруг, будет интересна данная тема, будет интересно решение и в VBA)
 
Цитата
Настя_Nastya написал:
вдруг, будет интересна данная тема, будет интересно решение и в VBA)
Может чуть позже - прям счас я занят (пару дней).
Что-то подобное я делал несколько лет назад
 
Код
Function GetSubstring(strLine As String, Lenght As Integer) As String
    For i = 0 To Len(strLine) / Lenght - 1 Step 1
     If Mid(strLine, i * Lenght + j + 1, 1) = " " Then j = j + 1
        GetSubstring = GetSubstring + Mid(strLine, i * Lenght + j + 1, Lenght)
    Next
End Function

и если не прятать все в функцию, то
=MID(GetSubstring($BA$16;17);(INT((ROWS($A$16:$A16)-1)/2))*17+(COLUMN()-1)/3+1;1)
По вопросам из тем форума, личку не читаю.
 
БМВ, и еще раз большое спасибо)))
Страницы: 1
Наверх