Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2018, 06:32   #1
zvmofficial
Новичок
Джуниор
 
Регистрация: 21.03.2018
Сообщений: 4
Восклицание Слипшийся текст, как разделить?

Здравствуйте. На форуме уже нашел подобный вопрос, правда там были значения на английском, но у меня не работает то решение. Макрос выполняется, но текст не хочет делить, просто дублирует. Вот ссылка, где нашел http://www.programmersforum.ru/showthread.php?t=94344

Дано (часть из файлика скопировал):

Промышленный дизайн
Земляные работыБуровые работы
Земляные работыБуровые работыСвайные работы
Земляные работы
Услуги грузчиковТакелажные работыВывоз мусораРемонт и отделка помещенийЗемляные работы
Строительство многоквартирных домовЗемляные работы
Строительство административных зданийРеконструкция и капремонт зданийСнос зданий и сооруженийСвайные работыЗемляные работы
Земляные работы
Земляные работыОбслуживание наружных систем отопления, водоснабжения, канализацииВывоз мусора
Земляные работыСтроительство дач и коттеджей
Земляные работы
Услуги грузчиковЗемляные работыБлагоустройство улиц
Земляные работыРемонт дорог
Земляные работы
Услуги грузчиковВывоз мусораЗемляные работыТакелажные работы
Земляные работыСнос зданий и сооруженийСвайные работы
Земляные работы
Земляные работы
Ремонт и отделка помещенийСтроительство дач и коттеджейЗемляные работыФасадные работы
Строительство фундаментаСвайные работыЗемляные работы
Земляные работыБуровые работыАлмазное бурение и резкаСвайные работы
Земляные работыСвайные работыСтроительство фундамента
Ландшафтная архитектураЗемляные работы

Задача:

Разделить слипшийся текст по отдельным столбцам. Заглавная буква получается и есть разделитель, только вот какой формулой это можно разделить?

Кто может подсказать, большое спасибо!
zvmofficial вне форума Ответить с цитированием
Старый 21.03.2018, 07:32   #2
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

вариант макроса,кнопки test и очистка в столбце K

Код:
Sub test()
Dim i&, j&, t$
With CreateObject("VBScript.RegExp"): .Pattern = "[А-ЯЁ][^А-ЯЁ]+": .Global = True
 For j = 1 To Range("A" & Rows.Count).End(xlUp).Row: t = Range("A" & j)
   For i = 0 To .Execute(t).Count - 1: Range("B" & j).Offset(, i) = .Execute(t)(i)
   Next i, j
  End With
  Columns("B:F").AutoFit
End Sub

Последний раз редактировалось svsh2016; 21.03.2018 в 08:00.
svsh2016 вне форума Ответить с цитированием
Старый 21.03.2018, 07:37   #3
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

в предыдущем сообщении не загрузился файл-пример

Код:
Sub очистка()
test
Dim t1$: t1 = Split(Range("A1").CurrentRegion.Address, "$")(3)
Range("B1:" & t1 & Range("B" & Rows.Count).End(xlUp).Row).ClearContents
End Sub

Последний раз редактировалось svsh2016; 21.03.2018 в 08:08.
svsh2016 вне форума Ответить с цитированием
Старый 21.03.2018, 08:27   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

как вариант
Код:
Sub bb()
Dim i&
  Application.ScreenUpdating = False
  With Range("A:A")
    For i = Asc("А") To Asc("Я")
      .Replace Chr$(i), "$" & Chr$(i), xlPart, , True
    Next
    .TextToColumns Range("A1"), Other:=True, OtherChar:="$"
    .Delete
  End With
  Columns.AutoFit
  Application.ScreenUpdating = True
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 21.03.2018, 14:16   #5
zvmofficial
Новичок
Джуниор
 
Регистрация: 21.03.2018
Сообщений: 4
По умолчанию

Цитата:
Сообщение от svsh2016 Посмотреть сообщение
вариант макроса,кнопки test и очистка в столбце K

Код:
Sub test()
Dim i&, j&, t$
With CreateObject("VBScript.RegExp"): .Pattern = "[А-ЯЁ][^А-ЯЁ]+": .Global = True
 For j = 1 To Range("A" & Rows.Count).End(xlUp).Row: t = Range("A" & j)
   For i = 0 To .Execute(t).Count - 1: Range("B" & j).Offset(, i) = .Execute(t)(i)
   Next i, j
  End With
  Columns("B:F").AutoFit
End Sub
Что-то не получается. Просто ничего не происходит при запуске макроса.

Цитата:
Сообщение от svsh2016 Посмотреть сообщение
в предыдущем сообщении не загрузился файл-пример

Код:
Sub очистка()
test
Dim t1$: t1 = Split(Range("A1").CurrentRegion.Address, "$")(3)
Range("B1:" & t1 & Range("B" & Rows.Count).End(xlUp).Row).ClearContents
End Sub
PS файлик-пример так и не загрузился.


Цитата:
Сообщение от Казанский Посмотреть сообщение
как вариант
Код:
Sub bb()
Dim i&
  Application.ScreenUpdating = False
  With Range("A:A")
    For i = Asc("А") To Asc("Я")
      .Replace Chr$(i), "$" & Chr$(i), xlPart, , True
    Next
    .TextToColumns Range("A1"), Other:=True, OtherChar:="$"
    .Delete
  End With
  Columns.AutoFit
  Application.ScreenUpdating = True
End Sub
Запустил получил миллион вопросительных знаков и мелкие ячейки))
zvmofficial вне форума Ответить с цитированием
Старый 21.03.2018, 15:26   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от zvmofficial Посмотреть сообщение
Запустил получил миллион вопросительных знаков и мелкие ячейки))
пробуйте еще. Код отрабатывает отлично на тестовом наборе
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 21.03.2018, 16:54   #7
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

файл-пример,все работает
Вложения
Тип файла: xls example_21_03_2018_заглавные.xls (36.5 Кб, 22 просмотров)
svsh2016 вне форума Ответить с цитированием
Старый 21.03.2018, 23:54   #8
zvmofficial
Новичок
Джуниор
 
Регистрация: 21.03.2018
Сообщений: 4
По умолчанию

У меня не сработал не один вариант. Выкладываю рабочий вариант (который у меня сработал). Всем спасибо за отклики!
Вложения
Тип файла: xls Разделить слипшийся текст(заглавные).xls (43.5 Кб, 24 просмотров)
zvmofficial вне форума Ответить с цитированием
Старый 22.03.2018, 01:30   #9
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

доброй ночи,Вы фактически изменили файл-пример,вот вариант для Вашего последнего файл-примера,кнопки test2 и очистка в строке 18

Код:
Sub test2()
Dim i&, j&, t$, O As Object
With CreateObject("VBScript.RegExp"): .Pattern = "[А-ЯЁ][^А-ЯЁ]+": .Global = True
 For j = 1 To Range("A" & Rows.Count).End(xlUp).Row: t = Range("A" & j): Set O = .Execute(t)
   For i = 0 To O.Count - 1
   If .test(t) Then Range("B" & j).Offset(, i) = O(i)
   Next
   Next
  End With
  Columns("B:F").AutoFit
End Sub
Вложения
Тип файла: xls example_21_03_2018_last.xls (48.0 Кб, 16 просмотров)
svsh2016 вне форума Ответить с цитированием
Старый 22.03.2018, 09:33   #10
zvmofficial
Новичок
Джуниор
 
Регистрация: 21.03.2018
Сообщений: 4
По умолчанию

Цитата:
Сообщение от svsh2016 Посмотреть сообщение
доброй ночи,Вы фактически изменили файл-пример,вот вариант для Вашего последнего файл-примера,кнопки test2 и очистка в строке 18

Код:
Sub test2()
Dim i&, j&, t$, O As Object
With CreateObject("VBScript.RegExp"): .Pattern = "[А-ЯЁ][^А-ЯЁ]+": .Global = True
 For j = 1 To Range("A" & Rows.Count).End(xlUp).Row: t = Range("A" & j): Set O = .Execute(t)
   For i = 0 To O.Count - 1
   If .test(t) Then Range("B" & j).Offset(, i) = O(i)
   Next
   Next
  End With
  Columns("B:F").AutoFit
End Sub
Скорее всего Вы правы, потому как не я автор файлика, но все равно скинул в тему, мало ли кому пригодится и этот вариант, ведь у меня другие варианты почему-то не срабатывали.
zvmofficial вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разделить текст в Word? almazenok Общие вопросы Delphi 5 15.02.2011 15:45
как разделить текст из одной ячейки по столбцам evdss Microsoft Office Excel 2 30.11.2010 08:27
как в ячейке разделить текст на абзацы evdss Microsoft Office Excel 1 18.10.2010 08:52
как разделить текст на переменные GAGARIN-NEW Общие вопросы Delphi 2 07.10.2007 15:24
Как разделить текст в Tedit на 2 переменные. Ната Общие вопросы Delphi 2 23.04.2007 12:48