Vba excel перенос в одной ячейке

Переноса текста по словам в ячейках диапазона на рабочем листе Excel из кода VBA. Свойство WrapText объекта Range, возвращаемые значения. Примеры.

Range.WrapText – это свойство, которое возвращает или задает значение типа Variant, указывающее, переносится ли текст в ячейках диапазона на новые строки, если длина текста превышает ширину ячейки.

Текст в ячейках переносится по словам. Если слово не умещается в ячейке целиком, происходит перенос части слова. Обычно, высота строки рабочего листа автоматически подбирается под ячейку с максимальным количеством строк, образовавшихся в результате переноса текста.

Синтаксис

Expression.WrapText

Expression – выражение (переменная), возвращающее объект Range.

Значения

Значения, которые возвращает свойство Range.WrapText:

Параметр Значение
True Во всех ячейках указанного диапазона включен перенос текста на новые строки.
False Во всех ячейках указанного диапазона отключен перенос текста на новые строки.
Null В указанном диапазоне присутствуют пустые ячейки, или есть ячейки как с переносом текста, так и без переноса.

Примеры

Пример 1

Указание программе Microsoft Excel, что она должна или не должна переносить текст в ячейках заданного диапазона:

‘переносить текст в активной ячейке

    ActiveCell.WrapText = True

‘переносить текст во всех ячейках заданного диапазона

    Range(«A1:F20»).WrapText = True

‘не переносить текст в ячейке Cells(1, 5)

    Cells(1, 5).WrapText = False

‘не переносить текст во всех ячейках выбранного диапазона

    Selection.WrapText = False

Пример 2

Присвоение значения, возвращаемого свойством Range.WrapText, переменной:

Dim a As Variant

a = Range(«B2»).WrapText

a = Rows(«1:2»).WrapText

Пример 3

Просмотр значения, возвращаемого свойством Range.WrapText, с помощью информационного окна MsgBox:

If Not Selection.WrapText = Null Then

    MsgBox Selection.WrapText

Else

    MsgBox «Null»

End If

Условие необходимо из-за того, что MsgBox не может отобразить значение Null – возникает ошибка. Поэтому, когда свойство Range.WrapText = Null, мы задаем в качестве аргумента функции MsgBox – строку «Null».

 

Boris05036

Пользователь

Сообщений: 42
Регистрация: 12.03.2016

Доброго времени суток!

На листе в ячейке A1 запись в две строки. При ее записи весь текст сливается в одну строчку.
Как сделать так, чтобы сохранить данные построчно…. может быть в массиве? а затем после обработки вставить в другую ячейку в таком же виде в две строки обратно…

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

Пока попробуйте в формате ячейки или на ленте поставить галочку/нажать кнопку «переносить текст».

Изменено: Jack Famous16.01.2018 14:28:47

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Boris05036

Пользователь

Сообщений: 42
Регистрация: 12.03.2016

Jack Famous, ладно, понял в чем беда, сначала

пошагово, что я хочу
1) На листе в ячейке A1 запись многострочная через перенос alt+enter (так надо)
2) в vba есть переменная A, в которую я записываю ячейку A1 (при этом текст из многострочного превращается в одну строку — а мне надо, чтобы данная структура сохранялась)
3) какие-то действия с данными
4) нужно вывести в ячейку A2 отредактированную переменную A, но при этом должна быть сохранена первоначальная структура с переносами внутри ячейки (vbLf)

 

sokol92

Пользователь

Сообщений: 4445
Регистрация: 10.09.2017

#4

16.01.2018 13:48:12

Уважаемый Boris05036! В Excel замечательная среда программирования, в которой можно очень быстро проверять различные гипотезы, в частности Вашу.

Код
Sub test()
  Dim a
  a = Range("A1")
  Range("A2") = a
End Sub

Мы видим, что в случае, когда ячейка A1 является многострочной, ячейка A2 также является многострочной (знак vblf никуда не исчезает).

Владимир

 

Boris05036

Пользователь

Сообщений: 42
Регистрация: 12.03.2016

sokol92, спасибо, вы прав (видимо я уже перегрелся), я понял, но проблема остается, дополню

в итоге данная ячейка уходит затем в htmlbody (outlook) и видимо для него vbLf вещь непонятная
если это возможно в рамках данной темы, то прошу подсказать, как мне в сообщении html сохранить это?

В сообщение вставка происходит с использованием переменной vba

Изменено: Boris0503616.01.2018 13:52:57

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

Excel, он, конечно, умный, но самостоятельно параметр «перенос текста» в ячейках изменять не умеет.  :)

 

Апострофф

Пользователь

Сообщений: 720
Регистрация: 06.04.2015

#7

16.01.2018 14:15:29

Цитата
Boris05036 написал:
для него vbLf вещь непонятная

Код
s=replace(s,vblf,vbcr)


или

Код
s=replace(s,vblf,vbcrlf)

один из вариантов(а может и оба) он должен понять…

Изменено: Апострофф16.01.2018 14:16:05

 

Boris05036

Пользователь

Сообщений: 42
Регистрация: 12.03.2016

#8

16.01.2018 14:21:26

Цитата
Апострофф написал:
один из вариантов(а может и оба) он должен понять…

ни один не понял, но спасибо за идею, как-то я сразу недоехал, переменная ведь все равно текстовая, так работает

Код
s=replace(s,vbLf, "<br>")
 

sokol92

Пользователь

Сообщений: 4445
Регистрация: 10.09.2017

#9

16.01.2018 14:26:56

Для более сложных случаев есть метод

PublishObjects.Add

Владимир

Перенос текста в ячейке

​Смотрите также​ = False [A2]​ остается так же​ решение (см. вложение)​попробую еще раз​ побуждающей надписи.​ листе фигура с​ вы делали выше.​

В этой статье

​Я обычно добавляю​

​ по другому пути,​

Автоматический перенос текста

  1. ​прошелся по ветке​ String) Dim Delimeter​

  2. ​ лишние пробелы не​​ быстрый.​​ другими символами. Все​​ своему коду, но,​​ ситуация – когда​​Microsoft Excel обеспечивает перенос​ Изображение кнопки​ = Mid(Target, 73):​

    Изображение ленты Excel

    ​ в 1у строчку​​nerv​

    • ​подробная инструкция для​5. Перейти в​ побуждающей надписью. Файл-приёмник​Next i​ данные так (сразу​ объединил строки нарисовал​

    • ​ www.excelworld.ru/forum/2-890-1 ничего для​ As String, i​ появятся.​Минусы:​ предложенные решения работают​ поверьте, затраченные усилия​

Настройка высоты строки для отображения всего текста

  1. ​ кто-то другой станет​ текста в ячейке​ [A1] = Left(Target,​

  2. ​китин​​: Предлагаю установить ограничение​​ Excel 2003​​ файл Bericht.xlsx посмотреть​​ данных должен быть​​RAN​​ не заметил что​

    Изображение ленты Excel

  3. ​ линии и вставил​​ себя не взял,​​ As Long Delimeter​=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(B2;СИМВОЛ(13);»»);СИМВОЛ(10);», «)​

    • ​Никаких дополнительных плюшек​ в Excel 2013,​​ оправдают себя с​​ продолжать Вашу работу​

    • ​ для его отображения​ 73) Application.EnableEvents =​​: ну если надо​​ на кол-во символов​задаваемый текст пишется​​ на листы.​​ открыть в том​

      ​: Мууученики!​​ у Вас Рендж):​ label (подстрочный текст​ все не то​ = «, «​=TRIM(SUBSTITUTE(SUBSTITUTE(B2,CHAR(13),»»),CHAR(10),», «)​

Ввод разрыва строки

​Вот так можно удалить​ 2010, 2007 и​ избытком! Несколько минут,​

  1. ​ над кодом и​ на нескольких строках.​ True End Sub​

    ​ принудительно перенести часть​​ в ячейке равное​ в ячейке В3​Как результат, устраивает​

  2. ​ же сеансе Excel.​200?’200px’:»+(this.scrollHeight+5)+’px’);»>With Worksheets(«Специалисты»)​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub UserForm_Initialize()​ под эти линии)​на моём примере,​

support.office.com

Оформление кода VBA

​ ‘символы-разделители (можно заменить​А вот так можно​ переносы строк при​ 2003.​ потраченных на написание​ не сможет понять,​ Ячейку можно настроить​Alexandrovich​ текста в той​ ~ 1024. Это,​

​Дублирующий текст может​ по расположению данных?​Макрос привязан к​ComboBox1.List = .Range(.Cells(1,»A»),​For i =​вставляемый текст из​ и по моему​ на пробел или​ удалить все непечатаемые​ помощи инструмента «​Переносы строк могут появиться​ понятного комментария, могут​ как он работает.​ для автоматического переноса​: Благодарен за быстрый​ же ячейке во​ а также подбор​ быть на любом​ Те ли данные​ именам книг, именам​ .Cells(.Rows.Count, «A»).End(xlUp)).Value​ 1 To Worksheets(«Специалисты»).Cells(Rows.Count,​

​ ячеек распределяется в​ шаблону как корректно​ ; и т.д.)​ символы из текста,​Найти и заменить​ в тексте по​

Комментарии в VBA

​ сэкономить Вам долгие​Эта статья посвящена комментариям,​ текста или ввести​ ответ на мой​ вторую строку то​ высоты строк, содержащих​ Листе .​ попали на листы?​ листов.​ComboBox2.List = .Range(.Cells(1,​ «A»).End(xlUp).Row​

​ соответствии со свойствами​ переносить текст по​ ‘если диапазоны проверки​ включая переносы строк:​»:​ разным причинам. Обычно​ часы в будущем.​ отступам в коде​ разрыв строки вручную.​ HELP плавал в​ тогда Alt+Enter​ объединенные ячейки, обсуждалось​Для удобства располагаем​ в то ли​Текст макроса (если​ 2), .Cells(.Rows.Count, 2).End(xlUp)).Value​

​ComboBox1.AddItem Worksheets(«Специалисты»).Cells(i, «A»).Value​ «переносить по словам»​ строкам шаблона​​ и склеивания не​​=ПЕЧСИМВ(B2)​

​Выделите все ячейки, в​ возвраты каретки встречаются​Другой приём, делающий написанный​ и переносам строк​Автоматический перенос текста​ верном направлении.не могли​RAN​ здесь http://www.planetaexcel.ru/forum.p….orum=97​ его на этом​ место?​ интересно кому) -​End With​Next i​ в коде …​в первых двух​ равны друг другу​=CLEAN(B2)​ которых требуется удалить​ в рабочей книге,​ код более читаемым​ – элементам, которые​Ввод разрыва строки​ бы мне по​: Заменить формулу на​aleksasha888​ же Листе в​Leborham​ под спойлером.​Roman777​End Sub​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Worksheets(«РСИ»).Cells(15, 1) = «Средство​ строках применены формулы,​ — выходим с​Скопируйте формулу во все​ возвраты каретки или​ например, когда текст​ – правильно расставлять​ делают код аккуратным​Выделите на листе ячейки,​ слогам расписать второй​ значения. Тогда высота​: подскажите пожалуйста я​ ячейке F3​: Извините за неопытность​Скрытый текст Sub​:​Честно говоря, точно​ измерения » &​

​ с «ручной» настройкой​ ошибкой If SearchRange.Count​ ячейки столбца.​ заменить их другим​ скопирован с веб-страницы,​ отступы. В приведённом​ и понятным.​ которые требуется отформатировать.​ код,ибо действенный (в​ изменится автоматически.​ не как не​

​Ячейку В3 раздвигаем​ объяснения и языковой​ T_354() Dim objWh​RAN​ сам не знаю​ Lbl.Caption​ кол-ва символов (регулятор​ <> TextRange.Count Then​По желанию, можете заменить​ символом.​

Отступы в коде VBA

​ когда они уже​ выше примере видно,​Самое важное для написания​На вкладке​ моей ситуации работает​Alexandrovich​ могу организовать перенос​ вправо и расширяем​​ барьер… я опычно​​ As Worksheet, objWb​, Вы правы…) Почему-то​ почему Ваш способ​вообщем все оказалось​ первой строки)​ MergeIf = CVErr(xlErrRef)​ исходный столбец новым,​Нажмите​

Переносы строк в VBA

​ есть в рабочей​ что отступ сделан​ аккуратного и понятного​Главная​ более чем на​: Здравствуйте уважаемые программисты!​ текста из одной​ вниз​ создаю в экселе​ As Workbook, lngI​ сразу в глаза​ не работает, сам​ очень просто, и​в других строках​ Exit Function End​ с удалёнными переносами​Ctrl+H​

​ книге, полученной от​ для кода внутри​ кода – чаще​в группе​ ура),и мне бы​Нужно посредством VBA​

​ ячейки в другую.​​Топнули правой мышкой​​ без макросов.. но​

​ As Long, intI​ не бросилось)​ сталкивался… это связано​ без заморочек, правда​ текст может уходить​ If ‘проходим по​ строк:​, чтобы вызвать диалоговое​ клиента, или, когда​ главной процедуры​ оставлять комментарии. Комментарии​

​Выравнивание​ хотелось понять каждый​​ осуществить такую задачу:​​сам перенос по​ — формат ячеек​

​ попался проект, в​ As Integer, arrA,​combat​ именно, что Вы​ пришлось подбирать шрифт,​ за границы диапазона​ все ячейкам, проверяем​Выделите все ячейки в​ окно​ мы сами добавляем​Sub​ – это строки​

​выберите команду​​ шаг​​Есть книга Excel​ функциям:​ — выравнивание -​ котом без макроса​ arrB With Workbooks(«1.xlsm»).Worksheets(«Gesamte»)​, Советую всё-таки, вопросы,​ пытаетесь вставить данные​ необходимо было большое​ объединённых ячеек​ условие и собираем​ столбце​Найти и заменить​

​ их нажатием клавиш​и далее отступ​
​ в коде, которые​
​Перенести текст​

​Private Sub Worksheet_Change(ByVal​

office-guru.ru

Как удалить переносы строк (возвраты каретки) из ячеек в Excel 2013, 2010 и 2007

​ с несколькими листами​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИ(ДЛСТР(AS22)​ переносить по словам​ никуда..​ arrA = .[a1].CurrentRegion.Value​ не относящиеся к​ через Range, но​ межстрочное пространство, у​при перемещении по​ текст в переменную​C​(Find and Replace).​

Удаляем переносы строк в Excel

​Alt+Enter​ увеличивается для каждого​ исполняют роль заметок​.​ Target As Range)​ и вот в​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИ(ДЛСТР(AS22) получился, но​ — ОК​Прошу помощи!​ End With ReDim​ самой теме создавать​ Range, который на​ вас его может​​ листбоксу, если сдвинуть​​ OutText For i​

​и нажатием​Поставьте курсор в поле​.​ вложенного блока кода.​ и помогают разобраться,​Примечания:​ ‘задаем событие If​ одном из них​ слово которое попало​Скопировали пустую ячейку​Поправлю основную запись..​

​ arrB(1 To UBound(arrA,​ в отдельной теме.​ другом, неактивном листе.​ не быть и​

  • ​ форму видно как​ = 1 To​Ctrl+C​Найти​
  • ​Какой бы ни была​ Такие увеличенные отступы​ какие действия выполняет​ ​ Target.Address <> «$A$1″​
  • ​ в ячейку вводится​ в промежутке с​ В3.​Leborham​

​ 1), 1 To​​ Ибо правила…​Roman777​ будет не корректно​ распределяется текст в​ SearchRange.Cells.Count If SearchRange.Cells(i)​скопируйте данные в​(Find what) и​ причина их появления,​ помогают понять, где​ та или иная​

​Данные в ячейке будут​ Then Exit Sub​ текст(А1),но необходимо что​ 16 по 21​Топнули правой мышкой​: Пытливый, все равно​ 4) For lngI​А по вопросу,​:​​ показывать, подобрал шрифт​​ первых двух строках​ Like Condition Then​ буфер обмена.​​ нажмите​​ сейчас перед нами​ каждый отдельный блок​ часть кода.​ переноситься в соответствии​ ‘если работаем в​ бы в эту​ символ не отображается​

​ на F3 -​​ большое Вам спасибо…​ = 2 To​ я бы на​​combat​​ Ebrima​​ и как он​​ OutText = OutText​Далее выделите ячейку​Ctrl+J​ стоит задача удалить​ кода начинается и​​Комментарии не участвуют в​​ с шириной столбца,​ не в ячейке​ ячейку вводилось 73​​ не в первой(Z22)​​ Специальная вставка -​Karataev​ UBound(arrA, 1) arrB(lngI​ Вашем месте поставил​, кстати, вчера потом​далее, следующая для​

Удаляем возвраты каретки вручную

​ не умещается в​​ & TextRange.Cells(i) &​B2​

​. На первый взгляд​​ возвраты каретки, так​:(

​ заканчивается.​ процессе выполнения программы​ поэтому при ее​​ А1,то макрос не​​ символа (объединенная ячейка),​

  1. ​ не во второй​ Ширина столбцов -ОК​: Вариант с помощью​ — 1, 1)​ название отдела напротив​Удаляем переносы строк в Excel
  2. ​ ток сообразил, что​​ меня проблема, вроде​​ других​ Delimeter Next i​​, нажмите сочетание клавиш​​ поле покажется пустым,​
  3. ​ как они мешают​​Ещё один способ сделать​​ и не влияют​ изменении перенос текста​​ выполняетсяА вот дальнейшие​​ а все последующие​ ячейке(A23).​еще раз правой​ Power Query.​ = arrA(lngI, 1):​ каждого работника… А​
  4. ​ Ваш вариант тоже​​ должно все работать,​​как решить эту​ ‘выводим результаты без​Shift+F10​ но если посмотрите​ выполнять поиск фраз​ код более читаемым​ на результат работы​ будет настраиваться автоматически.​ шаги,если не трудно,разжуйте​ символы введенные в​​Заранее спасибо.​​ мышкой -специальная вставка​Удаляем переносы строк в Excel
  5. ​ИнструкцияПрежде чем тестировать,​​ arrB(lngI — 1,​​ потом уже по​ скорее всего рабочий,​Удаляем переносы строк в Excel

Удаляем переносы строк при помощи формул Excel

​ но не срабатывает​​ задачу без формул,​ последнего разделителя MergeIf​и выберите​ внимательно, то увидите​ и приводят к​ и облегчить работу​ макроса. Каждая строка,​Если текст с переносами​ пожалуйста.​ эту же ячейку​_Boroda_​

​ — форматы -ОК​ Вам нужно указать​ 2) = arrA(lngI,​ условию, при выборе​ просто Вы забыли​ код в форме​ а макросами​ = Left(OutText, Len(OutText)​Вставить​ в нём маленькую​​ беспорядку в столбце​​ с ним –​

​ начинающаяся апострофом (‘),​​ отображается не полностью,​If Len(Target) <​ после деактивации этой​

  1. ​: Дело в том,​В ячейке F3​ путь и имя​ 3) arrB(lngI -​​ начальника (или любого​​ сказать, с какого​
  2. ​ ComboBox1 иComboBox2​Roman777​ — Len(Delimeter)) End​(Insert).​ точку.​ при включении режима​ делать переносы и​
    • ​ будет считаться в​ возможно, задана точная​ 74 Then Exit​ ячейки переносились в​ что слово «работать»​ пишем формулу:​

      ​ файла 1. Для​
      ​ 1, 3) =​

    • ​ работника отдела), сверять​ листа берёте ячейки:​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub UserForm_Initialize()​:​ Function​Удалите вспомогательный столбец.​В поле​ переноса текста.​ разбивать одну длинную​ VBA комментарием. Редактор​

      ​ высота строки или​
      ​ Sub Application.EnableEvents =​

    • ​ другую ячейку(А2).​ просто не уместилось​=B3​ этого сделайте так.​

      ​ arrA(lngI, 5): arrB(lngI​
      ​ его отдел с​

    Удаляем переносы строк в Excel

  3. ​200?’200px’:»+(this.scrollHeight+5)+’px’);»>ComboBox1.List = Worksheets(«Специалисты»).Range(«A1», Worksheets(«Специалисты»).Cells(Rows.Count,​ListBox1.ColumnCount = 2​
  4. ​combat​Сцепка происходит по​Плюсы:​Заменить на​
    • ​Все три представленных способа​ строку кода на​​ VBA в Excel​​ текст находится в​​ False [A2] =​​На просторах интеренета​ по длине. Сделайте​
    • ​В ячейку В3​​Вкладка «Данные» -​​ — 1, 4)​​ отделами всех остальных,​​ «A»).End(xlUp)).Value​​ ‘​​, добрый день!​
    • ​ принципу:​

Удаляем переносы строк при помощи макроса VBA

​Создаём один раз​​(Replace With) введите​ довольно быстры. Выбирайте​ несколько коротких. В​ выделит такую строку​

​ объединенных ячейках.​​ Mid(Target, 73): [A1]​ нашел подобный код,но​

​ пошире столбец AI​ записываем проверочный текст​ Показать запросы -​ = arrA(lngI, 6)​ и только те,​

​combat​ListBox1.ColumnWidths = «0;»​Честно, не знаю​Текст 1, Текст​ – используем снова​ любое значение для​ тот, который Вам​ VBA, чтобы разбить​ зелёным цветом шрифта,​Выделите ячейки, для которых​ = Left(Target, 73)​ он не переносит​ (например) или поставьте​

​P.S.​ справа появятся два​ Next lngI With​ где отделы совпадают,​: Роман, я не​CommandButton2.Enabled = False​ как полностью граммотно​

​ 2​ и снова с​
​ вставки вместо возвратов​
​ больше подходит:​

​ строку, нужно вставить​

office-guru.ru

Перенос слов в ячейке Excel XP

​ чтобы с первого​​ требуется выровнять высоту​ Application.EnableEvents = True​ в другую ячейку,плюс​ формат ячейки -​в первоисточнике автор​ запроса.​

​ Workbooks(«Bericht.xlsx»).Worksheets(«Genehmigt») For lngI​​ добавлять в комбобокс)))​
​ сомневался, что Вы​’…………………………………….​
​ решить Вашу задачу.​Вопрос​ любой рабочей книгой.​ каретки. Обычно для​
​Удаляем все переносы строк​ символы » _»​ взгляда было понятно,​ строк.​ End Sub​ удаляет текст после​
​ Выравнивание — Автоподбор​ не раздвигал ячейку,​Щелкните правой кн.​ = 1 To​combat​ мне очередной раз​Set SRng =​ Но вы как​

CyberForum.ru

Как сделать перенос строки с использованием VBA?

​Как сделать чтобы​​Минусы:​ этого используют пробел,​ вручную, чтобы быстро​ (пробел+подчёркивание) непосредственно перед​ что это комментарий,​На вкладке​pashulka​ сообщения.​ ширины (галку Переносить​ а использовал объединенные​ мыши по первому​ UBound(arrB, 1) .Cells(lngI​: Где-то рядом, но​ поможете, и еще​ Sheets(«БазаСИ»).Range(«B1») ‘​ минимум могли бы​ разделитель был не​Требуется хотя бы​ чтобы избежать случайного​ навести порядок на​ переносом строки. Это​ который не будет​Главная​: Application.EnableEvents = False​Вот тот самый​ по словам нужно​ ячейки.​ запросу — Изменить​ + 1, 1)​ пока решение не​ раз вам большое​’…………………………………….​ использовать те же​ «, «, а​ базовое знание VBA.​ склеивания двух соседних​ одном листе.​
​ сообщает компилятору VBA,​ выполняться.​
​в группе​ ‘Временно блокируем выполнение​
​ пример:​
​ снять) — текст​Лично я считаю​ — запустится редактор​ = arrB(lngI, 1):​ нашел​
​ спасибо​Set SRng =​
​ формулы, что у​
​ перенос текста на​

​Макрос VBA из следующего​​ слов. Если нужно​Удаляем переносы строк при​ что текущая строка​Ниже продемонстрировано, как при​Ячейки​ событий приложения, чтобы​Private Sub Worksheets_Chabge(ByVal​ немноооожко уменьшится.​ что объединение -​ запросов.​ .Cells(lngI + 1,​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Dim i As Variant​работает только первый​ Range(SRng, SRng.End(xlDown))​ Вас есть, просто​ следующую строчку?​ примера удаляет возвраты​ просто удалить переносы​ помощи формул и​ кода продолжается на​ помощи комментариев поясняется​нажмите кнопку​ изменение значений ячеек​ Target As Range)​А вообще-то формула​ это зло​

​Вкладка «Главная» -​​ 3) = arrB(lngI,​For i =​ вариант, при втором​N = SRng.Rows.Count​ записав их в​

​Т.е., чтобы сцепка​​ каретки из всех​ строк, оставьте поле​ настраиваем таким образом​​ следующей строке.​​ работа простой процедуры​
​Формат​ A2 и A1​​ If Target =​​ изначально не правильная.​

​0mega​​ группа «Запрос» -​ 2): .Cells(lngI +​

​ 1 To Worksheets(«Специалисты»).Cells(Rows.Count,​​ дает ошибку на​Vs = SRng.Value​ коде ВБА, например:​ происходила по принципу:​ ячеек на активном​Заменить на​

​ комплексную обработку текстовых​​Следующий пример демонстрирует, как​
​Sub​

planetaexcel.ru

Корректный перенос текста по строкам (Формулы/Formulas)

​.​​ не приводило к​ [A1] Then If​ Попробуйте в AS22​
​: именно об этом​ Расширенный редактор.​ 1, 5) =​ «A»).End(xlUp).Row​
​ запуск формы 2​ReDim SArr(1 To​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИ(ДЛСТР(BC3)​Текст 1​ листе.​
​(Replace With) пустым.​ данных в ячейках.​ при помощи переносов​:​В группе​
​ генерации события Worksheet_Change​ Len(Target) > 73​ поставить «Желание жить​ я и предупреждал​
​В этой строке​ arrB(lngI, 3) Next​ComboBox1.AddItem Worksheets(«Специалисты»).Cells(i, «A»).Value​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Dim i As Variant​ N)​Значение, которое у​Текст 2​Sub RemoveCarriageReturns() Dim​
​Нажмите кнопку​Используем макрос VBA, чтобы​ строк можно сделать​

​’ процедура Sub​​Размер ячейки​​ Application.EnableEvents = True​​ Then Target =​
​ и работать» (без​На этом форуме​ укажите путь и​ lngI End With​Next i​For i =​ReDim Arrr(N -​ Вас в BC3​Sanja​ MyRange As Range​
​Заменить все​
​ очистить от переносов​ длинные строки кода​ для просмотра диапазона​выполните одно из​ 'Возвращаем всё на​ "" MsgBox "Извините,но​ кавычек).​ работают очень сильные​ имя файла:​ With Workbooks("Bericht.xlsx").Worksheets("Abgeschlossen") For​
​For i =​
​ 1 To Worksheets("Специалисты").Cells(Rows.Count,​
​ 1)​
​ запишите в одну​
​: Function MergeIf(TextRange As​ Application.ScreenUpdating = False​(Replace All) и​ строк несколько рабочих​ гораздо более понятными​
​ ячеек A1-A100 активного​ следующих действий:​ круги свояВсе остальные​ только 73 символа​

​Поменяйте на вот​​ макрописцы. Пусть они​Источник = Excel.Workbook(File.Contents("C:UsersUserDesktop1.xlsx"),​
​ lngI = 1​ 1 To Worksheets("Специалисты").Cells(Rows.Count,​ "A").End(xlUp).Row​For R =​ переменную, например Namess,​ Range, SearchRange As​ Application.Calculation = xlCalculationManual​ наслаждайтесь результатом!​
​ книг.​ и легко читаемыми.​ ' листа и​Чтобы автоматически выравнивать высоту​
​ строки, в принципе​ для этой ячейки"​ так:​
​ берут в руки​
​ true),​ To UBound(arrB, 1)​

​ "B").End(xlUp).Row​
​ComboBox1.AddItem Worksheets("Специалисты").Cells(i, "A").Value​
​ 1 To N​ а длину, которую​ Range, Condition As​
​ For Each MyRange​Плюсы:​Замечание:​Посмотрите на этот оператор​ поиска ячейки, содержащей​
​ строк, выберите команду​ не могут вызывать​ End If End​200?'200px':''+(this.scrollHeight+5)+'px');">=ЕСЛИ(ЕОШИБКА(ПОИСК(" ";AS22;20));AS22;ЛЕВСИМВ(AS22;ПОИСК(" ";AS22;20)))​ дирижерские палочки.​

​Затем щелкните «Готово».​​ .Cells(lngI + 1,​ComboBox2.AddItem Worksheets(«Специалисты»).Cells(i, «B»).Value​Next i​Sentence = Vs(R,​ вы пишите в​ String) Dim i​
​ In ActiveSheet.UsedRange If​Доступно использование последовательных​Первоначально термины «Возврат​If​ переданную процедуре строку​
​Автоподбор высоты строки​ вопросов, даже без​ If End SubПонимаю,что​
​Code200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИ(ЕОШИБКА(ПОИСК(» «;AS22;20));»»;ПСТР(AS22;ПОИСК(» «;AS22;20);75))​Serge_007​Вкладка «Главная» -​ 1) = arrB(lngI,​Next i​For i =​ 1)​ ячейке BB15 можно​ As Long ‘если​ 0 < InStr(MyRange,​ или вложенных формул​
​ каретки» и «Перевод​:​ Sub Find_String(sFindText As​.​ волшебной клавиши F1​ от этого код​
​aleksasha888​
​: Штатными средствами это​ щелкните по верхней​
​ 1): .Cells(lngI +​
​думаю связать так:​
​ 1 To Worksheets(«Специалисты»).Cells(Rows.Count,​
​SArr(R) = «​ записать в другую​
​ диапазоны проверки и​
​ Chr(10)) Then MyRange​ для сложной проверки​
​ строки» использовались при​
​If (index =​
​ String) Dim i​Чтобы задать высоту строк,​
​Alexandrovich​ нужно отталкиваться,но поиски​
​: вроде заработало, но​ не сделать.​
​ кнопке «Закрыть и​ 1, 3) =​
​ при выборе из​ «B»).End(xlUp).Row​ » & Replace(Sentence,​
​ переменную или явно​
​ склеивания не равны​ = Replace(MyRange, Chr(10),​
​ текста в обрабатываемой​ работе на печатных​
​ 1 And sColor1​
​ As Integer ‘​ выберите команду​: Интересно,а вот такой​ результата не дают.​ потом опять слова​
​RAN​ загрузить». Редактор закроется.​
​ arrB(lngI, 2): .Cells(lngI​ ComboBox1 первой строки,​
​ComboBox2.AddItem Worksheets(«Специалисты»).Cells(i, «B»).Value​
​ «»»», «»)​ указывать в коде:​ друг другу -​

​ «») End If​​ ячейке. Например, можно​ машинках и обозначали​ = «красный») Or​ переменная типа Integer​Высота строки​ момент…если нужно раскидать​пробовал так:​ в ячейке (Z22)​: Сделать, чтобы текст​
​Проверьте, работает ли​ + 1, 5)​ назначить второй столбец​Next i​ListBox1.AddItem R​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>if len(Namess) Name=Namess​ выходим с ошибкой​
​ Next Application.ScreenUpdating =​ удалить возвраты каретки,​
​ две различных операции.​ (index = 2​ для цикла ‘For’​и введите нужное​ текст не в​Private Sub Worksheets_Chabge(ByVal​ поехали.​

​ переносился автоматически при​​ запрос. Для этого​​ = arrB(lngI, 4)​​ ComboBox2, при выборе​
​т.к. у меня​ListBox1.List(R — 1,​else​
​ If SearchRange.Count <>​ True Application.Calculation =​ а затем найти​ Любознательный читатель может​
​ And sColor1 =​
​ Dim iRowNumber As​ значение в поле​ двух строках,а в​
​ Target As Range)​
​nerv​
​ достижении конца строки​

​ справа, где имена​ Next lngI End​ ComboBox1 второй строки,​ выбор из двух​ 1) = Sentence​Name=Left(Namess,Find(» «, Namess,45)-1))​ TextRange.Count Then MergeIf​ xlCalculationAutomatic End Sub​ лишние начальные или​ самостоятельно найти подробную​

​ «синий») Or (index​​ Integer ‘ переменная​​Высота строки​​ пяти или более?т.е.вводится​ If Target =​: Как вариант макрос,​ в Экселе очень​ запросов, щелкните значок​ With End Sub​ назначить третий столбец​
​ списков, код сделал​Arrr(R - 1)​

​end if​​ = CVErr(xlErrRef) Exit​Если Вы не слишком​ конечные пробелы, или​ информацию об этом​ = 3 And​ типа Integer для​
​.​ текст в одну​ [А1] Then If​ который рассчитывает кол-во​
​ сложно. Можно сделать​
​ "Обновить".​Leborham​ ComboBox2 и так​
​ вот так...​
​ = R​
​Гдe Name -​ Function End If​ близко знакомы с​
​ лишние пробелы между​
​ в интернете.​

​ sColor1 = «зеленый»)​ хранения результата iRowNumber​Совет:​ строку (объединенную ячейку),ниже​

​ Len(Target) > 73​​ символов, которое может​​ разбивку текста из​​Если получилось, то​: Спасибо…​ далее и как​Roman777​Next​ переменная, получаемое значение​ For i =​ VBA, рекомендую изучить​ словами.​Компьютеры и программное обеспечение​ Or (index =​ = 0 ‘​
​ Кроме того, можно перетащить​​ точно такие же​ Then Target =​ поместиться в ячейке​ ячейки на несколько​ сделайте то же​Но источник 1​ сделать не пойму…​:​Lbl_SI.Caption = «Всего​ которой Вы будете​ 1 To SearchRange.Cells.Count​ статью о том,​В некоторых случаях переносы​ для работы с​
​ 4 And sColor1​ последовательно посматриваем ячейки​
​ нижнюю границу строки​ ячейки, и в​
​ InStr(1, [А1].Value, «73»,​ (объединенной) исходя из​
​ строк по завершению​ самое для второго​
​ файл..​
​RAN​combat​ СИ в базе​ записывать в ячейку​ If SearchRange.Cells(i) Like​ как вставить и​ строк необходимо удалять,​ текстами разрабатывались с​ = «коричневый») Then​
​ A1-A100, пока не​

​ в соответствии с​​ результате деактивации ячейки​:D
​ vbTextCompare) + 2​
​ размера, типа шрифта​ ввода. Макрос можно​
​ запроса "Abgeschlossen".​Bericht должен получать​
​: Правильно! Зачем искать​

​, я думаю что​​ » & «​​ M15​​ Condition Then If​ выполнить код VBA​ чтобы в дальнейшем​
​ учётом особенностей печатных​​При помощи переносов строк​ будет найдено значение​ высотой текста в​ текст раскидывается по​ [А2].Value = Range([А1].Value,​
​ и т.п.​ прицепить на кнопку​Теперь, чтобы извлекать​ данные из файла​ там, где потерял,​ второй мб опять​ » & N​Для ячейки A17​ MergeIf <> Empty​ в Excel.​ использовать текст в​ машинок. Вот почему​ тот же оператор​ ‘sFindText’ For i​

​ строке.​​ этим строкам по​ Len([А1].Value) — Target​Еще вариант: начинать​
​ (как здесь) или​
​ данные из файла​ 1 и увидев​ когда там, где​
​ где-то неправильно был​
​ & " ед."​
​ можно по аналогии​ Then MergeIf =​Урок подготовлен для Вас​
​ качестве аргументов функций,​
​ теперь для обозначения​

​If​ = 1 To​Новую строку текста можно​ заполненности,а не по​ + 1) MsgBox​ с новой строки​ на событие Worksheet_Change.​ 1, Вам надо​ (к примеру Genehmigt,​ светло удобнее.​

​ применён… сразу замечу,​​’ComboBox1.List = Worksheets(«Специалисты»).Range(«A1»,​ формулу записать в​ MergeIf & TextRange.Cells(i)​ командой сайта office-guru.ru​

excelworld.ru

VBA: перенос данных в другую таблицу по определенным словам

​ не внося изменения​​ разрыва строки используют​
​может быть записан​ 100 If Cells(i,​
​ начать в любом​ количеству символов. Возьмем​ «Часть текста перенесено​ и заполнять все​ Можно добавить удаление​ только обновлять.​
​ переносил данные в​
​Leborham​ что если у​ Cells(Rows.Count, «A»).End(xlUp)).Value​ коде ВБА.​ & vbCrLf Else​
​Источник: https://www.ablebits.com/office-addins-blog/2013/12/03/remove-carriage-returns-excel/​ в исходные ячейки.​ два различных непечатаемых​ вот так:​ 1).Value = sFindText​ месте ячейки.​
​ к примеру 5​ в строку ниже»​ в одной объединенной​ исходной ячейки. Подкраска​
​Обновлять можно еще​ файл Bericht во​

​: Добрый день!​​ Вас данные в​’ComboBox2.List = Worksheets(«Специалисты»).Range(«B1»,​Cheshir0067​
​ MergeIf = TextRange.Cells(i)​Перевел: Антон Андронов​ Результат можно использовать,​ символа:​

​If (index =​​ Then ‘ найдено​Дважды щелкните ячейку, в​ строк.Пользователь вводит текст​ End If End​ ячейке.​ разделенного текста сделана​ отсюда: вкладка «Данные»​ вкладку Genehmigt (1​
​Прошу помощи.. очень​ одинаковых строках в​ Cells(Rows.Count, «B»).End(xlUp)).Value​
​: Имхо всё не​ & vbCrLf End​Автор: Антон Андронов​
​ например, как аргумент​Возврат каретки​ 1 And sColor1​ совпадение с переданной​ которую требуется ввести​ в первую строку​ If End SubНо​Tamy​ для удобства при​ — Обновить все.​ (колонки 1, 3,​ срочно!​ столбце «А» и​End Sub​ так страшно:​ If End If​pestov​ функции​(Carriage return, CR​ = «красный») Or​ строкой ‘ сохраняем​ разрыв строки.​ текст,так сказать не​ код не работает.Помогите,пожалуйста​: Здравствуйте! У меня​ разбивке готового документа.​Ambioz​ 5), если Genehmigt​Есть 2 Таблицы.​ «B», можно было​тот код который​Самое главное определиться​ Next i End​: Господа, каким образом​ПРОСМОТР​ или ASCII код​ _ (index =​ номер текущей строки​Совет:​ глядя на экран,а​ советом.​ вопрос, который, наверное,​ Разделяет текст выделенной​: Здравствуйте, помогите, пожалуйста,​ в Bericht/Genehmigt попали​ В первой (1)​ бы обойтись и​

​ отключен, в самом​​ с размером и​
​ Function​ можно задать программно​
​(LOOKUP).​ 13) и​ 2 And sColor1​ и выходим из​ Можно также выделить ячейку,​ тыча чуть ли​pashulka​ вас рассмешит. Как​ ячейки. По умолчанию​ решить проблему:​ данные в колонки​ все данные, во​
​ одним циклом. И​ конце​ шрифтом чтобы влазил​
​Kuzmich​ из модуля перенос​Минусы:​
​Перевод строки​

​ = «синий») Or​​ цикла iRowNumber =​

​ а затем нажать​​ не носом в​:​ настроить, чтобы слова​ установлена длинна строки​Как сделать, что​ Datum, 3,5 )​ второй (Bericht) 2​ вообще​combat​
​ в ячейку и​: В ячейке включить​ слов в определенной​Потребуется создать вспомогательный​​(Line feed, LF​
​ _ (index =​ i Exit For​​ клавишу F2.​​ клавиатуру.По прошествии ввода​
​Строго​ в ячейке переносились,​ 116 символов. Можно​ бы текст, достигнув​+ данные на​
​ листа (Genehmigt u​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Worksheets(«Специалисты»).Cells(Rows.Count, «A»).End(xlUp).Row​: Как заставить работать​
​ задать конечное колличество​ перенос по словам​ ячейке или диапазоне​ столбец и выполнить​ или ASCII код​ 3 And sColor1​

​ End If Next​​Дважды щелкните в ячейке​ текста переводит курсор​в​ а не «залазивали»​ задать другую длинну.​ конца ячейки автоматически​ сервере.. нужен путь​ Abgeschlossen).​
​- просто определяет​
​ ComboBox на форме,​

​ символов (ограничение) для​​ Dim OutText As​ ячеек… HELP!!!​

​ множество дополнительных шагов.​​ 10). В Windows​ = «зеленый») Or​
​ i ‘ сообщение​ то место, куда​ или же активирует​модуль листа​ на другую ячейку​
​_Boroda_​ переносился на другую​ к файлу​Надо чтобы из:​
​ последнюю из заполненных​ беря данные с​ показа в первой​ String Delimeter =​EsKor​
​Добавьте вспомогательный столбец в​ используются оба символа​ _ (index =​
​ во всплывающем окне​ нужно вставить разрыв​ другую ячейку, текст​
​, где нужно перенести​Serge_007​
​: Тот же файл,​
​ строку?​И если есть​1 (колонки 1,​ строк для столбца​
​ листа в книге,​ ячейке.​ Chr(10)​: Очень просто:​ конце данных. В​
​ вместе, а в​ 4 And sColor1​ сообщает пользователю, ‘​ строки, и нажмите​
​ введенный в первую​ лишний текст :​: См. вложение​ что у уважаемого​
​Serge_007​ возможность без открытия​ 3, 5), если​

planetaexcel.ru

Автоматический перенос текста на другую строку

​ «А» и думаю,​​ а форма привязана​Пример берёт колличество​
​excel_pl​Selection.WrapText = True​ нашем примере он​ системах *NIX применяется​ = «коричневый») Then​

​ найдена ли строка,​​ сочетание клавиш ALT+ВВОД.​
​ строку раскидывается по​Private Sub Worksheet_Change(ByVal​Tamy​ RANа, только все​: Здравствуйте.​
​ файла 1​ Genehmigt отправить данные​

​ что лучше всего​​ к др. листу,​​ символов из ячейки​​: А каких-нибудь спец.​

​ ‘для текущей ячейки​​ будет называться​ только перевод строки.​

​Если рассмотренный оператор​​ и если найдена​​Начиная практиковаться в написании​​ пяти последующим строкам​ Target As Range)​: спасибо за помощь!!!​ это без макросов,​Использовать Word. Excel​

​Заранее спасибо!​​ в «Bericht/Genehmigt» в​ не пересчитывать его​ у меня по​
​ BB15 и разбрасывает​
​ символов вместо запятой​Cells(1, 3).WrapText =​
​1 line​Будьте внимательны:​
​If​ – сообщает номер​ кода VBA, очень​
​ по заполненности.А если​ If Target.Address =​Maksim156​ формулами. К сожалению,​
​ — это не​Leborham​ колонки Datum, 3,5​
​ на каждом шаге​ чему то не​ по строкам.​ для строчки «​ True ‘для ячейки​
​.​В Excel встречаются​
​разбит на четыре​ строки If iRowNumber​ важно с самого​ каким-то чудом пользователь​
​ «$A$1» Then Application.EnableEvents​: А если слова​ при изменении ширины​
​ текстовый редактор и​: выдает ошибку 9​
​1 (колонки 1,​
​ цикла, а запихнуть​ работает​
​В Вашем примере​
​Delimeter = «, «​ в 1-й строке​В первой ячейке вспомогательного​ оба варианта. При​
​ строки, то составляющие​ = 0 Then​ начала выработать хорошие​

​ оторвал нос от​​ = False Dim​ переносятся, но ячейка​

​ столбца обновляется не​ его возможности в​Пытливый​ 3, 6) ,​ в переменную (предварительно​

​пребывал по всякому,​​ надо заменить в​» нету?​

​ и 3-ем столбце​​ столбца (C2) введите​ импорте из файлов​ его блоки c​ MsgBox «Строка «​ привычки в оформлении​ клавиатуры и глянул​ t$, i&: t$​ не раздвигается и​ автоматически, а через​ этом направлении минимальны.​: 1. Ответ рисуем​ если Abgeschlossen отправить​ посчитав 1 раз)​ работает только если​ Private Sub ListBox1_Change():​например, что-нибудь в​Вообще такие вещи​ формулу для удаления/замены​.txt​ условиями видны гораздо​ & sFindText &​ кода, чтобы в​

​ на монитор (увидел​​ = Target.Value For​ видно только начало​ F9​ЗЫ Вероятно макросами​ под файл-пример (файлы-примеры).​ данные в Bericht/Abgeschlossen​ и потом уже​ активен лист с​200?’200px’:»+(this.scrollHeight+5)+’px’);»>​

​ духе :​​ легко получаются с​

​ переносов строк. Ниже​​или​ более наглядно. Этот​ » не найдена»​

​ дальнейшем написанный код​​ много слов и​ i = 1​

​ текста​​0mega​ можно…​
​ Серверы там, открытый/закрытый​ в колонки Datum,​ использовать из памяти,​
​ которого берутся данные,​Worksheets(«РСИ»).Cells(3, 55) =​rn​

​ помощью макрорекордера: запустите,​​ приведены несколько полезных​.csv​

​ пример иллюстрирует, как​​ Else MsgBox «Строка​ было легко читать​ букв за пределами​ To Len(t) Step​_Boroda_​: маэстро !​0mega​ — в задании​

​ 3,5​​ так что сам​ все указано в​ Lbl.Caption​;​ выполните действия, остановите,​
​ формул для различных​данные обычно содержат​
​ аккуратное оформление может​
​ " & sFindText​ и понимать, как​ строки (ячейки)),деактивировал ячейку,текст​ 73 Target.Offset(i ​: Формат ячейки, вкладка​Serge_007​:​ нет - не​
​Данные всегда обновляются​

​ себя поправлю:​​ сообщении 4, там​На:​Sanja​ посмотрите содержимое макроса,​ случаев:​ возвраты каретки и​ сделать код более​ & " найдена​ он работает.​ раскидался,но необходимо продолжить​ 73) = Mid(t,​ "Выравнивание" поставьте галку​
​: Однако задачу ТС​Ambioz​ рисуем. Ну, раз​ в файле "1"​Код200?'200px':''+(this.scrollHeight+5)+'px');">Dim i as​ же и файл​
​Код200?'200px':''+(this.scrollHeight+5)+'px');">​: Kuzmich, же Вам​
​ если нужно отредактируйте.​
​Эта формула подходит для​

​ переводы строки. Когда​​ читаемым и привести​ в ячейке A»​В процессе написания кода,​ ввод текста.Пример текст​

​ i, 73) Next​​ «Переносить по словам».​ без макросов решить​, здравствуйте​ не сказали, значит,​ и находятся на​ long​200?’200px’:»+(this.scrollHeight+5)+’px’);»>ComboBox1.List = Worksheets(«Специалисты»).Range(«A1», Cells(Rows.Count,​
​numb = Worksheets(«РСИ»).Cells(15,​ показал​Вот для диапазона​ использования с комбинациями​ перенос строки вводится​

excelworld.ru

Перенос слов в ячейке

​ в результате к​​ & iRowNumber End​ программист может иметь​ заполнил первую строку​ Application.EnableEvents = True​Если это не​ всё-же нельзя.​row​

​ не надо было.​​ сервере закрытом.​

​Dim i_n as​​ «A»).End(xlUp)).Value​

​ 54)’ Считаем колличество​​Юрий М​ и попробуйте сами:​ возврат каретки /​ вручную нажатием​ меньшему количеству ошибок​

​ If End Sub​​ совершенно чёткое представление​ и то что​ End If End​
​ поможет, то показывайте​Ambioz​: 0mega как Вы​

​ Ничего личного.​​Заранее спасибо экспертам​ long​если активен лист​ символов к отображению​: excel_pl, Вы не​ запустите макрорекордер, выделите​ перенос строки, характерными​Alt+Enter​ и путаницы.​Не расстраивайтесь, если какую-то​ о том, что​ не влезло в​ Sub​

​ Ваш файл​​: Нашел решение без​ это сделали, подскажите​2. Файл 1.xlsm​ в VBA!​i_n = Worksheets(«Специалисты»).Cells(Rows.Count,​ «РСИ» не работает,​

​Worksheets(«РСИ»).Cells(15, 13).FormulaR1C1 =​​ отписались в своих​ диапазон, вызовите ‘формат​ для Windows и​

excelworld.ru

Перенос лишнего текста из одной ячейку в другую

​, Excel вставляет только​​Урок подготовлен для Вас​
​ часть кода, показанного​ за код он​
​ ячейку перенеслось во​Если же переносить​Maksim156​ макросов​Ambioz​ открыть. На вопрос​Leborham​ «A»).End(xlUp).Row​ если лист «Специалисты»​ Left(Lbl.Caption, numb)’ Записываем​ старых темах, а​ ячейки’, установите ‘перенос​ для UNIX.​ символ перевода строки.​ командой сайта office-guru.ru​
​ выше, не удалось​ пишет и как​ вторую,»входит» во вторую​ текст по 73​: ячейка расширяется когда​0mega​
​:​ о разрешении макросов​
​: перенос данных в​For i=1 to​ работает, в общем​ numb символов с​ уже создали новую.​ по словам’, остановите​=ПОДСТАВИТЬ(ПОДСТАВИТЬ(B2;СИМВОЛ(13);»»);СИМВОЛ(10);»»)​ Если же файл​Источник: http://www.excelfunctions.net/VBA-Code-Presentation.html​ понять – далее​ этот код должен​ строку и продолжает​ символа не нужно,​ там просто пишу​
​: просто как 5​
​0mega​ -​ другую таблицу по​ i_n​ надо, что бы​ лева в первую​ Или ответы не​ макрорекордер, посмотрите его​=SUBSTITUTE(SUBSTITUTE(B2,CHAR(13),»»),CHAR(10),»»)​.csv​Перевел: Антон Андронов​ в учебнике мы​ работать. Но нужно​ ввод текста. Вот​ то ещё проще​ текст и потом​ копеек …​

​- маленько не​​разрешить.​​ определенным словам…​​ComboBox1.AddItem Worksheets(«Специалисты»).Cells(i, «A»).Value​​ работало при активном​​ ячейку​ интересуют?​
​ содержимое и т.д.​Следующая формула подходит для​получен от поклонника​Автор: Антон Андронов​ рассмотрим эту тему​ позаботиться и о​ как бы так.Помогите,знаниями,пожалуйста.​ :​ ставлю галочку «Переносить​я знаю только​ то. Текст надо​3. Файл Bericht.xlsx​чтобы данные из​ComboBox2.AddItem Worksheets(«Специалисты»).Cells(i, «B»).Value​ листе «РСИ»​
​Worksheets(«РСИ»).Cells(17, 1) =​excel_pl​excel_pl​ замены переноса строки​ Linux, Unix или​
​Эта инструкция познакомит Вас​ подробнее. Цель приведённого​ том, чтобы, вернувшись​pashulka​Private Sub Worksheet_Change(ByVal​ по словам», а​ одного Алексея. Но​ распределить не в​ открыть​ одной таблицы переносились​ ‘ если для​Roman777​

​ Right(Lbl.Caption, Len(Lbl.Caption) -​​: Вопрос решён.​: Код сцепляет столбец​ любым другим символом​ другой подобной системы,​ с тремя способами​ примера – продемонстрировать,​ к работе спустя​: Лучше бы Вы​ Target As Range)​ у меня в​ он макровед.​ одной ячейке, а​
​в том же сеансе​ в другую в​ столбцов «А» и​:​ numb)’ Забираем оставшиеся​Всем спасибо.​ по критериюСкрытый текст​ (например, «, »​ то готовьтесь к​ удалить возвраты каретки​ как при помощи​
​ полгода, не пришлось​ опубликовали файл-пример, где​ If Target.Address <>​ ячейке форума стоит​А вы не​ по строкам.​Excel​ разные листы​

​ «B» данные лежат​​combat​ символы во вторую​combat​ Option Compare Text​ – запятая +​ встрече только с​ из ячеек в​ комментариев поясняется каждый​ ломать голову, пытаясь​ будет видно, что​ «$A$1» Then Exit​ и когда все​ знаете nick автора​0mega​

​4. В файле​​Пытливый​ в одних и​, Добрый день!​ ячейку​: Всем доброго времени​ Function MergeIf(TextRange As​ пробел). В таком​ символом перевода строки.​ Excel. Вы также​ блок кода.​ понять, что должен​ было до ввода,​ Sub If Len(Target)​ слова не входят​ ?​: вроде бы в​ 1.xlsm на листе​: Попробуйте. Макросы должны​ тех же строках,​Я не знаю​combat​ суток, помогите решить​ Range, SearchRange As​ случае строки не​Плюсы:​ узнаете, как заменить​Часто программисты ленятся добавлять​ делать этот код.​ и что стало​ < 74 Then​ то они переносятся​Serge_007​ файле я уже​ — фигура с​ быть разрешены. В​ иначе надо делать​ что вы пытаетесь​: Я пошел совсем​ задачу​ Range, Condition As​ будут объединены и​Этот способ самый​ символы переноса строки​ подробные комментарии к​ Ещё более неприятная​ после.​

​ Exit Sub Application.EnableEvents​​ вниз, а ячейка​: Это тоже не​ все написал ?!​ побуждающей надписью. Проследовать​ файле 1 на​ второй цикл, как​

CyberForum.ru

​ сделать когда пишите:​

Часто требуется внутри одной ячейки Excel сделать перенос текста на новую строку. То есть переместить текст по строкам внутри одной ячейки как указано на картинке. Если после ввода первой части текста просто нажать на клавишу ENTER, то курсор будет перенесен на следующую строку, но другую ячейку, а нам требуется перенос в этой же ячейке.

Перенос строки в Excel в одной ячейке

Это очень частая задача и решается она очень просто — для переноса текста на новую строку внутри одной ячейки Excel необходимо нажать ALT+ENTER (зажимаете клавишу ALT, затем не отпуская ее, нажимаете клавишу ENTER)

Содержание

  • 1 Как перенести текст на новую строку в Excel с помощью формулы
    • 1.1 Как в Excel заменить знак переноса на другой символ и обратно с помощью формулы
    • 1.2 Как поменять знак переноса на пробел и обратно в Excel с помощью ПОИСК — ЗАМЕНА
    • 1.3 Как поменять перенос строки на пробел или наоборот в Excel с помощью VBA
    • 1.4 Коды символов для Excel

Как перенести текст на новую строку в Excel с помощью формулы

Иногда требуется сделать перенос строки не разово, а с помощью функций в Excel. Вот как в этом примере на рисунке. Мы вводим имя, фамилию и отчество и оно автоматически собирается в ячейке A6

Как сделать переност строки в Excel с помощью формулы

Для начала нам необходимо сцепить текст в ячейках A1 и B1 (A1&B1), A2 и B2 (A2&B2), A3 и B3 (A3&B3)

После этого объединим все эти пары, но так же нам необходимо между этими парами поставить символ (код) переноса строки. Есть специальная таблица знаков (таблица есть в конце данной статьи), которые можно вывести в Excel с помощью специальной функции СИМВОЛ(число), где число это число от 1 до 255, определяющее определенный знак.
Например, если прописать =СИМВОЛ(169), то мы получим знак копирайта ©

Нам же требуется знак переноса строки, он соответствует порядковому номеру 10 — это надо запомнить.
Код (символ) переноса строки — 10
Следовательно перенос строки в Excel в виде функции будет выглядеть вот так СИМВОЛ(10)

Примечание: В VBA Excel перенос строки вводится с помощью функции Chr и выглядит как Chr(10)

Итак, в ячейке A6 пропишем формулу

=A1&B1&СИМВОЛ(10)&A2&B2&СИМВОЛ(10)&A3&B3 

В итоге мы должны получить нужный нам результат.
Обратите внимание! Чтобы перенос строки корректно отображался необходимо включить «перенос по строкам» в свойствах ячейки.
Для этого выделите нужную нам ячейку (ячейки), нажмите на правую кнопку мыши и выберите «Формат ячеек…»
формат ячейкив Excel

В открывшемся окне во вкладке «Выравнивание» необходимо поставить галочку напротив «Переносить по словам» как указано на картинке, иначе перенос строк в Excel не будет корректно отображаться с помощью формул.

Перенос по строкам в формате ячеек

Как в Excel заменить знак переноса на другой символ и обратно с помощью формулы

Можно поменять символ перенос на любой другой знак, например на пробел, с помощью текстовой функции ПОДСТАВИТЬ в Excel

Как заменить перенос строки на пробел в Excel

Рассмотрим на примере, что на картинке выше. Итак, в ячейке B1 прописываем функцию ПОДСТАВИТЬ:

=ПОДСТАВИТЬ(A1;СИМВОЛ(10);» «)

A1 — это наш текст с переносом строки;
СИМВОЛ(10) — это перенос строки (мы рассматривали это чуть выше в данной статье);
» » — это пробел, так как мы меняем перенос строки на пробел

Если нужно проделать обратную операцию — поменять пробел на знак (символ) переноса, то функция будет выглядеть соответственно:

=ПОДСТАВИТЬ(A1;» «;СИМВОЛ(10))

Напоминаю, чтобы перенос строк правильно отражался, необходимо в свойствах ячеек, в разделе «Выравнивание» указать «Переносить по строкам».

Как поменять знак переноса на пробел и обратно в Excel с помощью ПОИСК — ЗАМЕНА

Бывают случаи, когда формулы использовать неудобно и требуется сделать замену быстро. Для этого воспользуемся Поиском и Заменой. Выделяем наш текст и нажимаем CTRL+H, появится следующее окно.

Заменить код переноса строки на пробел с помощью Поиск-Замена в Excel

Если нам необходимо поменять перенос строки на пробел, то в строке «Найти» необходимо ввести перенос строки, для этого встаньте в поле «Найти», затем нажмите на клавишу ALT, не отпуская ее наберите на клавиатуре 010 — это код переноса строки, он не будет виден в данном поле.

После этого в поле «Заменить на» введите пробел или любой другой символ на который вам необходимо поменять и нажмите «Заменить» или «Заменить все».

Кстати, в Word это реализовано более наглядно.

Если вам необходимо поменять символ переноса строки на пробел, то в поле «Найти» вам необходимо указать специальный код «Разрыва строки», который обозначается как ^l
В поле «Заменить на:» необходимо сделать просто пробел и нажать на «Заменить» или «Заменить все».

Заменить перенос строки на пробел с помощь Найти Заменить в Excel

Вы можете менять не только перенос строки, но и другие специальные символы, чтобы получить их соответствующий код, необходимо нажать на кнопку «Больше >>», «Специальные» и выбрать необходимый вам код. Напоминаю, что данная функция есть только в Word, в Excel эти символы не будут работать.

Специальные символы для поиск-замены

Как поменять перенос строки на пробел или наоборот в Excel с помощью VBA

Рассмотрим пример для выделенных ячеек. То есть мы выделяем требуемые ячейки и запускаем макрос

1. Меняем пробелы на переносы в выделенных ячейках с помощью VBA

Sub ПробелыНаПереносы()
For Each cell In Selection
cell.Value = Replace(cell.Value, Chr(32), Chr(10))
Next
End Sub

2. Меняем переносы на пробелы в выделенных ячейках с помощью VBA

Sub ПереносыНаПробелы()
For Each cell In Selection
cell.Value = Replace(cell.Value, Chr(10), Chr(32))
Next
End Sub

Код очень простой Chr(10) — это перенос строки, Chr(32) — это пробел. Если требуется поменять на любой другой символ, то заменяете просто номер кода, соответствующий требуемому символу.

Коды символов для Excel

Ниже на картинке обозначены различные символы и соответствующие им коды, несколько столбцов — это различный шрифт. Для увеличения изображения, кликните по картинке.

Коды символов

Alexandrovich

1 / 1 / 0

Регистрация: 09.05.2017

Сообщений: 13

1

Перенос лишнего текста из одной ячейку в другую

17.09.2017, 16:19. Показов 5653. Ответов 5

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте уважаемые программисты!
Нужно посредством VBA осуществить такую задачу:
Есть книга Excel с несколькими листами и вот в одном из них в ячейку вводится текст(А1),но необходимо что бы в эту ячейку вводилось 73 символа (объединенная ячейка), а все последующие символы введенные в эту же ячейку после деактивации этой ячейки переносились в другую ячейку(А2).
На просторах интеренета нашел подобный код,но он не переносит в другую ячейку,плюс удаляет текст после сообщения.
Вот тот самый пример:

Visual Basic
1
2
3
4
5
6
7
8
Private Sub Worksheets_Chabge(ByVal Target As Range)
If Target = [A1] Then
If Len(Target) > 73 Then
Target = ""
MsgBox "Извините,но только 73 символа для этой ячейки"
End If
End If
End Sub

Понимаю,что от этого код нужно отталкиваться,но поиски результата не дают.

пробовал так:

Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Worksheets_Chabge(ByVal Target As Range)
If Target = [А1] Then
If Len(Target) > 73 Then
Target = InStr(1, [А1].Value, "73", vbTextCompare) + 2
[А2].Value = Range([А1].Value, Len([А1].Value) - Target + 1)
MsgBox  "Часть текста перенесено в строку ниже"
End If
End If
End Sub

Но код не работает.Помогите,пожалуйста советом.



0



pashulka

4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

17.09.2017, 17:26

2

Лучший ответ Сообщение было отмечено Alexandrovich как решение

Решение

Строго в модуль листа, где нужно перенести лишний текст :

Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
       Application.EnableEvents = False
       Dim t$, i&: t$ = Target.Value
       For i = 1 To Len(t) Step 73
           Target.Offset(i  73) = Mid(t, i, 73)
       Next
       Application.EnableEvents = True
    End If
End Sub

Если же переносить текст по 73 символа не нужно, то ещё проще :

Visual Basic
1
2
3
4
5
6
7
8
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$A$1" Then Exit Sub
    If Len(Target) < 74 Then Exit Sub
    
    Application.EnableEvents = False
    [A2] = Mid(Target, 73): [A1] = Left(Target, 73)
    Application.EnableEvents = True
End Sub



0



Alexandrovich

1 / 1 / 0

Регистрация: 09.05.2017

Сообщений: 13

18.09.2017, 15:13

 [ТС]

3

Цитата
Сообщение от pashulka
Посмотреть сообщение

Строго в модуль листа, где нужно перенести лишний текст :

Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
       Application.EnableEvents = False
       Dim t$, i&: t$ = Target.Value
       For i = 1 To Len(t) Step 73
           Target.Offset(i  73) = Mid(t, i, 73)
       Next
       Application.EnableEvents = True
    End If
End Sub

Если же переносить текст по 73 символа не нужно, то ещё проще :

Visual Basic
1
2
3
4
5
6
7
8
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$A$1" Then Exit Sub
    If Len(Target) < 74 Then Exit Sub
    
    Application.EnableEvents = False
    [A2] = Mid(Target, 73): [A1] = Left(Target, 73)
    Application.EnableEvents = True
End Sub

Благодарен за быстрый ответ на мой HELP плавал в верном направлении.не могли бы мне по слогам расписать второй код,ибо действенный (в моей ситуации работает более чем на ура),и мне бы хотелось понять каждый шаг

Visual Basic
1
2
    Private Sub Worksheet_Change(ByVal Target As Range)   'задаем событие
    If Target.Address <> "$A$1" Then Exit Sub 'если работаем в не в ячейке А1,то макрос не выполняется

А вот дальнейшие шаги,если не трудно,разжуйте пожалуйста.

Visual Basic
1
2
3
4
5
6
If Len(Target) < 74 Then Exit Sub 
    
    Application.EnableEvents = False
    [A2] = Mid(Target, 73): [A1] = Left(Target, 73)
    Application.EnableEvents = True
End Sub



0



pashulka

4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

18.09.2017, 16:32

4

Visual Basic
1
2
3
4
5
Application.EnableEvents = False
'Временно блокируем выполнение событий приложения, чтобы изменение значений ячеек A2 и A1 не приводило к генерации события Worksheet_Change
 
Application.EnableEvents = True
'Возвращаем всё на круги своя

Все остальные строки, в принципе не могут вызывать вопросов, даже без волшебной клавиши F1



0



1 / 1 / 0

Регистрация: 09.05.2017

Сообщений: 13

06.10.2017, 14:58

 [ТС]

5

Интересно,а вот такой момент…если нужно раскидать текст не в двух строках,а в пяти или более?т.е.вводится текст в одну строку (объединенную ячейку),ниже точно такие же ячейки, и в результате деактивации ячейки текст раскидывается по этим строкам по заполненности,а не по количеству символов. Возьмем к примеру 5 строк.Пользователь вводит текст в первую строку текст,так сказать не глядя на экран,а тыча чуть ли не носом в клавиатуру.По прошествии ввода текста переводит курсор или же активирует другую ячейку, текст введенный в первую строку раскидывается по пяти последующим строкам по заполненности.А если каким-то чудом пользователь оторвал нос от клавиатуры и глянул на монитор (увидел много слов и букв за пределами строки (ячейки)),деактивировал ячейку,текст раскидался,но необходимо продолжить ввод текста.Пример текст заполнил первую строку и то что не влезло в ячейку перенеслось во вторую,»входит» во вторую строку и продолжает ввод текста. Вот как бы так.Помогите,знаниями,пожалуйста.



0



4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

07.10.2017, 16:52

6

Лучше бы Вы опубликовали файл-пример, где будет видно, что было до ввода, и что стало после.



0



Работая с таблицами в Microsoft Excel, пользователи сталкиваются с самыми разными проблемами и ситуациями. Бывает, что приходится работать с блоком текста, находясь в одной области таблицы. К сожалению, у многих пользователей такая задача вызывает определённые трудности. В этой статье разберёмся как в Excel сделать перенос текста в ячейке. Давайте же начнём. Поехали!

Пример переноса текста

Как известно, даже находясь в одной ячейке, нажав клавишу Enter, вы перенесёте курсор уже на следующую строку таблицы, что является неприемлемым в нашем случае. Подобная задача возникает довольно часто и решается проще, чем думают большинство пользователей. Чтобы перенести текст в одной ячейке, воспользуйтесь комбинацией клавиш Alt+Enter. Такой способ хорош в том случае, если вам нужно выполнить операцию один раз или несколько.

Вы можете сделать то же самое при помощи функций Экселя. Использование функций позволяет существенно облегчить выполнение большинства задач в программе. Например, ввести в отдельных ячейках контактные данные (телефон, email, домашний адрес), чтобы они автоматически построчно собирались в одной ячейке.

Сперва сцепите области текста («телефон:» + «12345678»; «email:» + «abcde@mail.com»; «Адрес:» + «ул.А, дом. 27-Г»). Делается это путём добавления знака «&» (амперсанд) между адресами ячеек.

Теперь необходимо составить формулу, которая должна иметь следующий вид: «=B1&C1&СИМВОЛ(10)&B2&C2&СИМВОЛ(10)&B3&C3».

СИМВОЛ(10) — это перенос строки, который добавляется после каждой пары связанных областей.

В том случае, если перенесённый текст отображается некорректно, щёлкните правой кнопкой мыши по нужной области и в появившемся меню выберите пункт «Формат ячеек». В открывшемся окне перейдите на вкладку «Выравнивание». В разделе «Отображение» отметьте птичкой пункт «переносить по словам».

Выравнивание ячеек

Если необходимо написанные в столбик слова перенести в ячейку так, чтобы они стояли в одну строку через пробел, напишите следующую формулу в специальном поле для функций: «=ПОДСТАВИТЬ(B2);СИМВОЛ(10);» «».

Чтобы выполнить операцию в обратную сторону, поменяйте в формуле местами «СИМВОЛ(10)» и пробел (» «).

Существует способ, который позволяет не прибегать к использованию формул. Сперва нужно выделить текст и нажать комбинацию клавиш Ctrl+H. В появившемся окне в поле «Найти» введите 010 держа нажатой клавишу Alt. Обратите внимание, что во введённый вами код переноса строки отображаться не будет. Далее, в области «Заменить на» введите тот символ, на который вы хотели бы заменить знак переноса строки, в нашем случае это пробел (» «). Вы можете найти всевозможные специальные знаки и символы, которые отсутствуют на клавиатуре, в специальной таблице Экселя.

Найти и заменить

Для тех, кто использует VBA (Visual Basic) в Excel, также будет актуален следующий способ. Отметив необходимые области, вызовите окно макросов. Затем, в зависимости от того, что нужно сделать пропишите одни или другие команды, как показано на скриншоте ниже:

Перенос текста с VBA

Для удобства копирования команды тоже самое текстом ниже:

1. Меняем пробелы на переносы в выделенных ячейках с помощью VBS:

Sub ПробелыНаПереносы()

For Each cell In Selection

cell.Value = Replace (cell.Value, Chr (32), Chr (10))

Next

End Sub

2. Меняем переносы на пробелы на в выделенных ячейках с помощью VBS:

Sub ПереносыНаПробелы()

For Each cell In Selection

cell.Value = Replace (cell.Value, Chr (10), Chr (32))

Next

End Sub

Где Chr(10) и Chr(32) — коды переноса строки и пробела соответственно.

Каждый из рассмотренных способов по-своему хорош и удобен. Используйте тот, который больше подходит для решения текущей задачи. Как видите, подобная проблема решается довольно просто. Используйте функции Microsoft Excel, чтобы автоматизировать выполнение некоторых операций в программе, чтобы сэкономить время, улучшить продуктивность и эффективность работы. Пишите в комментариях помогла ли вам статья разобраться с возникшими вопросами и продолжайте узнавать что-то новое об огромных возможностях редактора таблиц Microsoft Excel.

Разделение текста на части и перенос в другие ячейки

giovanni

Дата: Вторник, 17.05.2016, 11:16 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 37


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

Здравствуйте!
Возможно, для знатоков VBA данный вопрос будет выглядеть довольно просто и забавно, но для малоопытного пользователя VBA — вопрос видится очень сложным :)

Ситуация примерно такова: в экселе есть ячейка, в которой записан образно такого вида текст: А.10,Бв.25
В основном, тескт записан в таком виде. Однако, могут встречать ячейки, в который текст имеет такой вид: 10,Бв25 (то есть, без первой буквы). Буквы Бв.25 (цифры всегда разные, 25 — выбрана в качестве примера), присутствуют в ячейке всегда.
Подскажите, пожалуйста, возможно ли макросом разделить данный текст так, чтобы удалялись буквы «А.» и «Бв.», а цифры, следующие за буквами, переносились в разные указанные ячейки, то есть, удаляется буква «А.», цифра 10 переносится в одну ячейку, удаляется слово «Бв.», а 25 переносится в другую ячейку?

Все, что пришло на ум — это проверять ячейку справа налево на наличие слова Бв., если слово в ячейке есть, то удалять его, а все, что правее от «Бв.», переносить в соседнюю ячейку. После этой процедуры опять проверять ячейку на наличие буквы «А.» и есть такая буква есть, то удалить ее и все, что правее от нее, переносить в другую соседнюю ячейку.
Наверняка это далеко не самое оптимальное решение)
Если не сложно, помогите, пожалуйста, в решении данной задачи.

Спасибо!
[moder]Покажите файл. И приведите несколько примеров, как может выглядеть исходный текст.[/moder]

Исходный текст может быть соедующего вида:
А.5,Бв.12
А.108,Бв.3
А.218,Бв.140
Если есть слово «Бв.», то в ячейке точно за этим словом следует число. Чисто может быть от 1 до 999.

Сообщение отредактировал giovanniВторник, 17.05.2016, 12:40

 

Ответить

китин

Дата: Вторник, 17.05.2016, 11:36 |
Сообщение № 2

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

а может формулами обойдемся? :D

Код

=ЕСЛИОШИБКА(ПСТР(A1;ПОИСК(«А.»;A1)+2;2);ЛЕВБ(A1;2))


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

giovanni

Дата: Вторник, 17.05.2016, 12:46 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 37


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

а может формулами обойдемся?

Совсем неважно макрос или формула :-) Подскажите, возможно ли формулу внедрить в макрос? Т.к. указанная задача — это часть более крупного макроса.

В файлике все работает отлично :-) Но есть установить в ячейке более крупное чисто (не 10, а 100), то в итоге выдается ошибка(

Файла с примером как такового нет.
В принципе, задача только разделить указанный выше текст.

Извиняюсь за неправильное цитирование, не сорентировался)

[moder]Читайте Правила форума.
Запрещено: излишнее цитирование, несколько разных вопросов в одной теме. Необходим Ваш файл-пример, как уже было указано в комментарии модератора выше.
Исправляйте этот пост.[/moder]

Сообщение отредактировал giovanniВторник, 17.05.2016, 14:21

 

Ответить

китин

Дата: Вторник, 17.05.2016, 12:54 |
Сообщение № 4

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

в вашей сплошной цитате я не вижу вашего ответа.


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

sv2014

Дата: Вторник, 17.05.2016, 17:53 |
Сообщение № 5

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 226


Репутация:

61

±

Замечаний:
0% ±


Excel 2013

giovanni, добрый вечер,вариант функций uuu1 и uuu2

[vba]

Код

Function uuu1%(t$)
With CreateObject(«VBScript.RegExp»): .Pattern = «d+»
    uuu1 = .Execute(t)(0)
End With
End Function

[/vba]

F[vba]

Код

unction uuu2%(t$)
With CreateObject(«VBScript.RegExp»): .Pattern = «d+»: .Global = True
    uuu2 = .Execute(t)(1)
End With
End Function

[/vba]

 

Ответить

sv2014

Дата: Вторник, 17.05.2016, 18:07 |
Сообщение № 6

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 226


Репутация:

61

±

Замечаний:
0% ±


Excel 2013

giovanni, добавил еще функции uuu3 и uuu4 в столбцах E и F соответственно

[vba]

Код

Function uuu3%(t$)
With CreateObject(«VBScript.RegExp»): .Pattern = «(?:А.)?(d+)»
    uuu3 = .Execute(t)(0).Submatches(0)
End With
End Function

[/vba]

[vba]

Код

Function uuu4%(t$)
With CreateObject(«VBScript.RegExp»): .Pattern = «Бв.(d+)»
    uuu4 = .Execute(t)(0).Submatches(0)
End With
End Function

[/vba]

К сообщению приложен файл:

8261232.xls
(32.0 Kb)

 

Ответить

giovanni

Дата: Среда, 18.05.2016, 00:18 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 37


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

giovanni, добавил еще функции uuu3 и uuu4 в столбцах E и F соответственно

Огромное спасибо! Работает отлично))
Уровень знаний в VBA не позволил ничего понять из указанного кода, но работает прекрасно!
Был бы очень признателен, если по возможности Вы бы расписали что означают различные значения
в коде функции, очень интересно понять)

Подскажите, пожалуйста, возможно ли внести некоторые изменения в код, чтобы происходило следующее:
в ячейке, перед указанным ранее в примере текстом А.5,Бв.12, практически всегда будет присутствовать текст — одно-два слова
(например, Абвгдежз А.5,Бв.12)
Возможно ли сделать так, чтобы, как в Вашем примере, цифры 5 и 12 переносились в отдельные ячейки, данные цифры удалялись бы из исходной ячейки
и слово Абвгдежз также удалялось из исходной ячейки и переносилось в еще одну отдельную ячейку.
Если сказать на примере, то примерно так: в исходной ячейке текст «Абвгдежз А.5,Бв.12», а после исполнения макроса — «Абвгдежз» в отдельной ячейке, цифра «5» в отдельной ячейке и цифра «12» также в отдельной ячейке.

Спасибо за помощь еще раз!)
[moder]Вот, как мы все с нетерпением и ожидали, начинается комедия «А у меня в файле всё не так». Вам уже 2 раза сказали про файл с вариантами заполнения. Что не понятно?

Сообщение отредактировал _Boroda_Среда, 18.05.2016, 10:18

 

Ответить

sv2014

Дата: Среда, 18.05.2016, 10:28 |
Сообщение № 8

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 226


Репутация:

61

±

Замечаний:
0% ±


Excel 2013

giovanni, добрый день,протестируйте макрос,кнопки test,повтор

[vba]

Код

Sub test()
   Dim z(), z1(), i&, t, t1, t2, t3
   z = Range(«A1:A» & Range(«A» & Rows.Count).End(xlUp).Row).Value
   ReDim z1(1 To UBound(z), 1 To 3)
With CreateObject(«VBScript.RegExp»): .Pattern = «([а-яё]+) А.(d+),Бв.(d+)»: .IgnoreCase = True: .Global = True
  For i = 1 To UBound(z): t = z(i, 1)
    t1 = .Execute(t)(0).Submatches(0): t2 = .Execute(t)(0).Submatches(1): t3 = .Execute(t)(0).Submatches(2)
    z(i, 1) = Replace(Replace(Replace(t, t1, «»), t2, «»), t3, «»)
    z1(i, 1) = t1: z1(i, 2) = t2: z1(i, 3) = t3
  Next
End With
  Range(«A1»).Resize(UBound(z), 1).Value = z
  Range(«B1»).Resize(UBound(z1), 3).Value = z1
End Sub

[/vba]

Сообщение отредактировал sv2014Среда, 18.05.2016, 10:38

 

Ответить

giovanni

Дата: Среда, 18.05.2016, 21:38 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 37


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

giovanni, добрый день,протестируйте макрос,кнопки test,повтор

С исходным текстом, указанным Вами в примере, работает отлично, но когда подставляю другой текст, начинает ругаться :-(

Приложил файл с примером, как видится исходный текст и результат работы макроса.

Огромное спасибо за помощь.

Сообщение отредактировал giovanniСреда, 18.05.2016, 21:39

 

Ответить

sv2014

Дата: Среда, 18.05.2016, 23:09 |
Сообщение № 10

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 226


Репутация:

61

±

Замечаний:
0% ±


Excel 2013

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

[vba]

Код

Sub test1()
   Dim z(), z1(), i&, t, t1, t2, t3
   z = Range(«A3:A» & Range(«A» & Rows.Count).End(xlUp).Row).Value
   ReDim z1(1 To UBound(z), 1 To 3)
With CreateObject(«VBScript.RegExp»)
  For i = 1 To UBound(z): t = z(i, 1)
  .Pattern = «[а-яё]+»: .IgnoreCase = True
    t1 = .Execute(t)(0)
    .Pattern = «d+»: .Global = True
   If .Execute(t).Count > 1 Then t2 = .Execute(t)(.Execute(t).Count — 2): t3 = .Execute(t)(.Execute(t).Count — 1) Else t2 = .Execute(t)(.Execute(t).Count — 1): t3 = «»
    z(i, 1) = Replace(Replace(Replace(t, t1, «»), t2, «»), t3, «»)
    z1(i, 1) = t1: z1(i, 2) = t2: z1(i, 3) = t3
  Next
End With
  Range(«A3»).Resize(UBound(z), 1).Value = z
  Range(«B3»).Resize(UBound(z1), 3).Value = z1
End Sub

[/vba]

 

Ответить

giovanni

Дата: Воскресенье, 22.05.2016, 17:48 |
Сообщение № 11

Группа: Пользователи

Ранг: Новичок

Сообщений: 37


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

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

Здравствуйте!

Макрос работает отлично, именно то, что нужно!
Огромное спасибо за помощь!

Если можно, помогите, пожалуйста в одном моменте, связанном с работой данного макроса.
К примеру, если текст «Абвгдежз» цельный, то все работает отлично. Но, к примеру, если в
слове «Абвгдежз» присутствует точка («Абвг.дежз»), то макрос переносит только часть слова,
а именно ту часть, которая до точки («Абвг»).
Возможно ли в рамках данного макроса сделать так, чтобы слово «Абвгдежз» переносилось
полностью, вне зависимости от наличия в слове точки?

Спасибо!

 

Ответить

sv2014

Дата: Воскресенье, 22.05.2016, 19:17 |
Сообщение № 12

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 226


Репутация:

61

±

Замечаний:
0% ±


Excel 2013

giovanni, добрый вечер,поменяйте шаблон(Pattern) в макросе,например,скопировав, на такой вариант

.[vba]

[/vba]

и это будет ответ на Ваш вопрос в последнем сообщении.

 

Ответить

giovanni

Дата: Среда, 25.05.2016, 18:09 |
Сообщение № 13

Группа: Пользователи

Ранг: Новичок

Сообщений: 37


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

giovanni, добрый вечер,поменяйте шаблон(Pattern) в макросе,например,скопировав, на такой вариант

Здравствуйте!

Внес изменения, как Вы сказали, все работает отлично! Огромное спасибо!)

Если не сложно, подскажите, пожалуйста, по одному моменту в данном макросе.
Думал разберусь сам, т.к. чуток дружу с VBA, но не получается)

В данном макросе обрабатывается исходный текст, находящийся в начиная с ячейки «А3» и далее по всему столбцу «А».
Обработанный макросом текст вставляется в соседние ячейки, правее от исходного текста.
Можно ли внести в макрос изменения, чтобы его можно было применить к исходному тексту, находящегося в любой другой ячейке?
К примеру, если исходный текст будет находиться не в столбце «А», а, например, в ячейке «N2».
Вижу в коде макроса строку:

Код

z = Range(«A3:A» & Range(«A» & Rows.Count).End(xlUp).Row).Value

когда изменяю адрес ячейки «А3» на другой, текст находящийся в указанной ячейке не обрабатывается макросом.
Наверняка что-то делаю не так)

Спасибо!

Сообщение отредактировал giovanniСреда, 25.05.2016, 19:51

 

Ответить

Kuzmich

Дата: Среда, 25.05.2016, 20:53 |
Сообщение № 14

Группа: Проверенные

Ранг: Ветеран

Сообщений: 707


Репутация:

154

±

Замечаний:
0% ±


Excel 2003

[vba]

Код

z = Range(«N2:N» & Range(«N» & Rows.Count).End(xlUp).Row).Value

[/vba]
и , возможно надо изменить диапазон выгрузки
[moder]Не забывайте оформлять правильно код. Поправил за Вас[/moder]

Сообщение отредактировал SLAVICKСреда, 25.05.2016, 21:39

 

Ответить

giovanni

Дата: Среда, 25.05.2016, 21:37 |
Сообщение № 15

Группа: Пользователи

Ранг: Новичок

Сообщений: 37


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

z = Range(«N2:N» & Range(«N» & Rows.Count).End(xlUp).Row).Value
и , возможно надо изменить диапазон выгрузки

Вы правы, изменение данной строки работает: [vba]

Код

z = Range(«N2:N» & Range(«N» & Rows.Count).End(xlUp).Row).Value

[/vba]
Однако, выгрузка результатов работы макроса происходит в те же ячейки, что и раньше.
Возможно ли изменить диапазон выгрузки?
[moder]для оформления кода — используйте тег #[/moder]

Сообщение отредактировал SLAVICKСреда, 25.05.2016, 21:42

 

Ответить

Kuzmich

Дата: Среда, 25.05.2016, 21:45 |
Сообщение № 16

Группа: Проверенные

Ранг: Ветеран

Сообщений: 707


Репутация:

154

±

Замечаний:
0% ±


Excel 2003

Диапазон выгрузки определяется строками
[vba]

Код

Range(«A1»).Resize(UBound(z), 1).Value = z
Range(«B1»).Resize(UBound(z1), 3).Value = z1

[/vba]
Вместо A1 и B1 поставьте свои N и O

 

Ответить

giovanni

Дата: Четверг, 26.05.2016, 00:30 |
Сообщение № 17

Группа: Пользователи

Ранг: Новичок

Сообщений: 37


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

Диапазон выгрузки определяется строками

Огромное спасибо! Работает!)

 

Ответить

giovanni

Дата: Суббота, 28.05.2016, 16:26 |
Сообщение № 18

Группа: Пользователи

Ранг: Новичок

Сообщений: 37


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

Доброго дня!

Подскажите, пожалуйста, как сделать так, чтобы данный макрос работал только для содержимого одной ячейки, к примеру — «А2»?

Пытался внести изменения в строку [vba]

Код

z = Range(«A3:A» & Range(«A» & Rows.Count).End(xlUp).Row).Value

[/vba] оставив в тексте только [vba][/vba] , но в этом случае VBA ругается на ошибку.

Спасибо!

 

Ответить

Kuzmich

Дата: Суббота, 28.05.2016, 17:24 |
Сообщение № 19

Группа: Проверенные

Ранг: Ветеран

Сообщений: 707


Репутация:

154

±

Замечаний:
0% ±


Excel 2003

Цитата

макрос работал только для содержимого одной ячейки

Воспользуйтесь UDF, которые вам представил sv2014 в сообщениях 5 и 6

 

Ответить

giovanni

Дата: Суббота, 28.05.2016, 20:14 |
Сообщение № 20

Группа: Пользователи

Ранг: Новичок

Сообщений: 37


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

Воспользуйтесь UDF, которые вам представил sv2014 в сообщениях 5 и 6

Указанный Вами UDF работают немного не так, как нужно. В то же время макрос, указанный в сообщении №10 форматирует текст именно так, как нужно:

[vba]

Код

Sub test1()
Dim z(), z1(), i&, t, t1, t2, t3
z = Range(«A3:A» & Range(«A» & Rows.Count).End(xlUp).Row).Value
ReDim z1(1 To UBound(z), 1 To 3)
With CreateObject(«VBScript.RegExp»)
For i = 1 To UBound(z): t = z(i, 1)
.Pattern = «[а-яё]+»: .IgnoreCase = True
    t1 = .Execute(t)(0)
    .Pattern = «d+»: .Global = True
If .Execute(t).Count > 1 Then t2 = .Execute(t)(.Execute(t).Count — 2): t3 = .Execute(t)(.Execute(t).Count — 1) Else t2 = .Execute(t)(.Execute(t).Count — 1): t3 = «»
    z(i, 1) = Replace(Replace(Replace(t, t1, «»), t2, «»), t3, «»)
    z1(i, 1) = t1: z1(i, 2) = t2: z1(i, 3) = t3
Next
End With
Range(«A3»).Resize(UBound(z), 1).Value = z
Range(«B3»).Resize(UBound(z1), 3).Value = z1
End Sub

[/vba]

Единственный момент с данным макросом — это то, что если применить его к количеству строк меньшему, чем указано в файле (в файле примера 5 строк),
то VBA выдает ошибку «Type missmatch».
Если заставить данный макрос работать только с одной указанной ячейкой, то это будет на 100% то, что нужно)
По мере своих знаний в VBA пытался изменить диапазон работы макроса, но не получается.

 

Ответить

Like this post? Please share to your friends:
  • Vba excel перенести текст в ячейке
  • Vba excel перебрать все файлы в папке
  • Vba excel перемещение ячеек
  • Vba excel перебрать все листы в книге excel
  • Vba excel перемещение по строкам