Страницы: 1
RSS
Как в мастере функций указать разделитель слов/строк через клавишу Enter?
 
Дано: снова отчет из 1С (Журнал проводок), в одной ячейке несколько строк, разделены Enter`ом. Есть макрос для разделения общего текста на куски.  
Задача: как укзать что разделитель в тексте Enter?
 
В макросе символы перевода строк можно вставить в строку поиска/замены с помощью именнованных встроенных констант:  
 
vbCr - перевод карретки  
vbLf - перевод строки  
vbCrLf - перевод карректки+перевод строки (стандартная комбинация в конце строки текстового файла .txt или параграфа в .doc)  
 
Соответственно:  
 
myString = WorksheetFunction.Substitute(myMultyString, vbCrLf, " ") - заменит разбиение (по Enter) на строки текста в MyltyString на пробелы и получится "непрерывная" строка.  
 
Но если требуется соединить многостроковое значение в ячейке, то нужно помнить, что в ячейке строки разбиты с помощью только одного символа символа vbLf:  
 
Cells(1, 1) = WorksheetFunction.Substitute(Cells(1, 1), vbLf, " ")
 
{quote}{login=genyaa}{date=15.10.2007 10:11}{thema=}{post}В макросе символы перевода строк можно вставить в строку поиска/замены с помощью именнованных встроенных констант:  
 
vbCr - перевод карретки  
vbLf - перевод строки  
vbCrLf - перевод карректки+перевод строки (стандартная комбинация в конце строки текстового файла .txt или параграфа в .doc)  
 
Соответственно:  
 
myString = WorksheetFunction.Substitute(myMultyString, vbCrLf, " ") - заменит разбиение (по Enter) на строки текста в MyltyString на пробелы и получится "непрерывная" строка.  
 
Но если требуется соединить многостроковое значение в ячейке, то нужно помнить, что в ячейке строки разбиты с помощью только одного символа символа vbLf:  
 
Cells(1, 1) = WorksheetFunction.Substitute(Cells(1, 1), vbLf, " "){/post}{/quote}  
genyaa, спасибо  
я в макросах полный профан, тот макрос, который я описывала, я скачала (т.е. не сама его писала). Подскажите более детально, где именно и что именно и на что именно нужно заменить, а я как обезьянка просто выполню точные рекомендации :)). Пожааалуйста :)
 
Ентер - это непечатный символ код 10. Я тоже не нашел способа как победить эти переводы строк. Сохрани отчет из 1С в текстовом формате и импортни в Эксел с разделителем "табуляция". Не совсем то получается, что хотелось бы, но можно постараться..
 
Возьмите этот макрос:  
 
Sub ddd()  
   Dim r As Range  
   Set r = ActiveSheet.UsedRange  
   r.Replace What:=vbCrLf, replacement:=" ", lookat:=xlPart  
   r.Replace What:=vbLf, replacement:=" ", lookat:=xlPart  
End Sub  
 
Вставьте его в обычный модуль книги и запустите его и на активном листе все многострочные ячейки превратятся в однострочные (части строк будут разбиты пробелами.
 
{quote}{login=genyaa}{date=15.10.2007 10:43}{thema=}{post}Возьмите этот макрос:  
 
Sub ddd()  
   Dim r As Range  
   Set r = ActiveSheet.UsedRange  
   r.Replace What:=vbCrLf, replacement:=" ", lookat:=xlPart  
   r.Replace What:=vbLf, replacement:=" ", lookat:=xlPart  
End Sub  
 
Вставьте его в обычный модуль книги и запустите его и на активном листе все многострочные ячейки превратятся в однострочные (части строк будут разбиты пробелами.{/post}{/quote}  
:) работает, но почему-то до третьего слова и до третьей строки, а у меня в ячейке 4 строки и разные вариации кол-во слов в строке
 
Вот спасибо!    
У меня весь лист прогнал, всё ОК. Только вместо разделителя "пробел" поставить например "воскилицательный знак" - тогда по столбцам разобьёт без проблем.
 
{quote}{login=}{date=15.10.2007 11:48}{thema=Re: }{post}но почему-то до третьего слова и до третьей строки, а у меня в ячейке 4 строки и разные вариации кол-во слов в строке{/post}{/quote}  
Странно... Может быть там есть еще какой-нибудь разделитель... типа самостоятельно стоящего vbCr...  
 
Попробуте в макрос вместо:  
 
r.Replace What:=vbCrLf, replacement:=" ", lookat:=xlPart  
 
указать  
 
r.Replace What:=vbCr, replacement:=" ", lookat:=xlPart
 
5 секунд, сейчас сейчас, уже уже :)
 
{quote}{login=}{date=15.10.2007 12:07}{thema=Re: Re: }{post}{quote}{login=}{date=15.10.2007 11:48}{thema=Re: }{post}но почему-то до третьего слова и до третьей строки, а у меня в ячейке 4 строки и разные вариации кол-во слов в строке{/post}{/quote}  
Странно... Может быть там есть еще какой-нибудь разделитель... типа самостоятельно стоящего vbCr...  
 
Попробуте в макрос вместо:  
 
r.Replace What:=vbCrLf, replacement:=" ", lookat:=xlPart  
 
указать  
 
r.Replace What:=vbCr, replacement:=" ", lookat:=xlPart{/post}{/quote}  
эээ.. #ИМЯ? пишет :(
 
Для 1С файлов достаточно только строки  
r.Replace What:=vbLf, replacement:=" ", lookat:=xlPart  
а вторую закоментируйте
 
{quote}{login=}{date=15.10.2007 12:42}{thema=}{post}Для 1С файлов достаточно только строки  
r.Replace What:=vbLf, replacement:=" ", lookat:=xlPart  
а вторую закоментируйте{/post}{/quote}  
Отчет у меня из 1с, но в эксель экспортированный  
:( что значит закоментировать?
 
Поставьте перед строкой знак апостроф  
'  
Я как раз вот из 1С сохранил в Эксель карточку - и всё работает
 
{quote}{login=}{date=15.10.2007 12:57}{thema=}{post}Поставьте перед строкой знак апостроф  
'  
Я как раз вот из 1С сохранил в Эксель карточку - и всё работает{/post}{/quote}  
:( блин, я похоже клинический случай  
не получается, пустые ячейки просто выдает и все  
я и в экселе и в mxl уже пробую
 
{quote}{login=}{date=15.10.2007 01:27}{thema=Re: }{post}  
не получается, пустые ячейки просто выдает и все  
я и в экселе и в mxl уже пробую{/post}{/quote}  
Да, не должно быть так сложно... прикрепите файл (или часть) с примером и объясните точно, что должно быть и что не работает.
 
Версия 1С 7.7 или 8 ?
 
Посмотрите прикрепленный файл. Если ячейка начинается с перевода строки - то макрос прерывается, и далее замена не идет. Что за дела???
 
Хм.. странное дело... я не знал о таком поведении Excel... Получается, что символ @ как-то влияет на работу Excel, если происходит попытка вставить его в начало содержимого ячейки. Вероятно, это как-то связано с обработкой символов форматирования (у Excel есть несколько таких, например, тот же одинарный апосторов в начале текста ячейки превращает ее в текстовый формат и этот апосторов становится уже не совсем частью текста в этой ячейке, т.к. поймать его простым Поиском из Правки уже не получается).  
 
 
==========================  
Но я заменил строку замены с "@" на " @" - и все отработалось без проблем.  
==========================  
 
 
 
Из справки:  
 
"Разрешение вопросов при форматировании листов  
 
Апостроф ('), знак крышки (^), кавычки (") или обратная косая черта (\) отображаются в строке формулы, но их нет в ячейках  
 
Эти знаки являются кодами форматирования, которые могут отображаться в документах, созданных в Lotus 1-2-3, или при установке клавиш перехода как в Lotus 1-2-3. В форматах Lotus 1-2-3 апостроф (') означает текст, выровненный по левому краю, кавычки (")  — выровненный по правому краю, знак крышки (^)  — выровненный по центру, а знак обратной косой черты (\) — заполняющий ячейку.  
 
Для скрытия кодов (кроме префиксов меток) выберите команду Параметры в меню Сервис, выберите закладку Переход и сбросьте флажок Клавиши перемещения, использовавшиеся в Lotus 1-2-3."  
 
Хотя здесь ничего не сказано про @, но возможно это недокументированный момент, или забытый.
 
Попробовал ввести @sfdgkljf в ячейку - пишет "Неверная функция". Вот ведь где собака зарыта! :-)
 
Здравствуйте, друзья    
 
Буду бесконечно признателен тому, кто поможет разобраться в том, как автоматизировать проставление параграфов в диапазоне ячеек, содержащих однородный текст для E-mail рассыки с помощью Plex. Примите, пожалуйста, пример в приложении.  
 
С уважением, Тимур
 
Если вручную: выделить ст. D, Ctrl+H, заменить "! " на "!<Ctrl+J><Ctrl+J>" (без кавычек).  
Потом заменить " С наилучшими" на "<Ctrl+J><Ctrl+J>С наилучшими".  
Можете записать эти действия в макрос.
 
Например, так  
 
Sub io()  
Dim x As Object  
For Each x In [C2:C19]
   If x <> """" Then  
       x = Replace(x, ""! "", ""!"" & vbLf)  
       x = Replace(x, "" С наилучшими"", vbLf & ""С наилучшими"")  
   End If  
Next  
End Sub
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=Казанский}{date=16.08.2011 11:56}{thema=}{post}Если вручную: выделить ст. D, Ctrl+H, заменить "! " на "!<Ctrl+J><Ctrl+J>" (без кавычек).  
Потом заменить " С наилучшими" на "<Ctrl+J><Ctrl+J>С наилучшими".  
Можете записать эти действия в макрос.{/post}{/quote}  
 
Спасибо за скорый ответ! Высылаю то, что не получилось :) Скажите, пожалуйста, почему (пользуюсь 2007 Excel)?
 
Выделяете столбец С  
жмете CTRL+H  
в поле Найти: вводите текст "<Ctrl+J>" без кавычек  
ставите курсор в поле Заменить на: и жмете сочетание клавиш Ctrl+J  
затем кнопка Заменить все.
Редко но метко ...
 
<Ctrl+J> - имелось в виду сочетание клавиш Ctrl и J.  
Так же, как Ctrl+C - копировать, Ctrl+V - вставить и т.д.
 
Казанский, GIG_ant, nerv,- посмотрите на название темы и на вопрос автора.  
Тим4ик, зачем неуместный вопрос в чужой теме?
 
{quote}{login=Юрий М}{date=16.08.2011 02:10}{thema=}{post}Казанский, GIG_ant, nerv,- посмотрите на название темы и на вопрос автора.  
post}{/quote}  
 
Осознал, исправлюсь.
Редко но метко ...
 
{quote}{login=Юрий М}{date=16.08.2011 02:10}{thema=}{post}Казанский, GIG_ant, nerv,- посмотрите на название темы и на вопрос автора.  
Тим4ик, зачем неуместный вопрос в чужой теме?{/post}{/quote}  
 
:) сорри, ненарочно! Надеюсь у Вас тут за непредумышленные проступки не карают навечным отлучением от сия прекрасного источника "живительной" бесплатной информации.  
 
Отдельное спасибо, Казанскому, GIG_ant и nerv за поддержку. Всё получилось!
Страницы: 1
Читают тему
Наверх