Конец строки в excel на макросе

Работа с текстом в коде VBA Excel. Функции, оператор & и другие ключевые слова для работы с текстом. Примеры использования некоторых функций и ключевых слов.

Функции для работы с текстом

Основные функции для работы с текстом в VBA Excel:

Функция Описание
Asc(строка) Возвращает числовой код символа, соответствующий первому символу строки. Например: MsgBox Asc(«/Stop»). Ответ: 47, что соответствует символу «/».
Chr(код символа) Возвращает строковый символ по указанному коду. Например: MsgBox Chr(47). Ответ: «/».
Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear]) Преобразует число, дату, время в строку (тип данных Variant (String)), отформатированную в соответствии с инструкциями, включенными в выражение формата. Подробнее…
InStr([начало], строка1, строка2, [сравнение]) Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с начала строки. Подробнее…
InstrRev(строка1, строка2, [начало, [сравнение]]) Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с конца строки. Подробнее…
Join(SourceArray,[Delimiter]) Возвращает строку, созданную путем объединения нескольких подстрок из массива. Подробнее…
LCase(строка) Преобразует буквенные символы строки в нижний регистр.
Left(строка, длина) Возвращает левую часть строки с заданным количеством символов. Подробнее…
Len(строка) Возвращает число символов, содержащихся в строке.
LTrim(строка) Возвращает строку без начальных пробелов (слева). Подробнее…
Mid(строка, начало, [длина]) Возвращает часть строки с заданным количеством символов, начиная с указанного символа (по номеру). Подробнее…
Replace(expression, find, replace, [start], [count], [compare]) Возвращает строку, полученную в результате замены одной подстроки в исходном строковом выражении другой подстрокой указанное количество раз. Подробнее…
Right(строка, длина) Возвращает правую часть строки с заданным количеством символов. Подробнее…
RTrim(строка) Возвращает строку без конечных пробелов (справа). Подробнее…
Space(число) Возвращает строку, состоящую из указанного числа пробелов. Подробнее…
Split(Expression,[Delimiter],[Limit],[Compare]) Возвращает одномерный массив подстрок, извлеченных из указанной строки с разделителями. Подробнее…
StrComp(строка1, строка2, [сравнение]) Возвращает числовое значение Variant (Integer), показывающее результат сравнения двух строк. Подробнее…
StrConv(string, conversion) Изменяет регистр символов исходной строки в соответствии с заданным параметром «conversion». Подробнее…
String(число, символ) Возвращает строку, состоящую из указанного числа символов. В выражении «символ» может быть указан кодом символа или строкой, первый символ которой будет использован в качестве параметра «символ». Подробнее…
StrReverse(строка) Возвращает строку с обратным порядком следования знаков по сравнению с исходной строкой. Подробнее…
Trim(строка) Возвращает строку без начальных (слева) и конечных (справа) пробелов. Подробнее…
UCase(строка) Преобразует буквенные символы строки в верхний регистр.
Val(строка) Возвращает символы, распознанные как цифры с начала строки и до первого нецифрового символа, в виде числового значения соответствующего типа. Подробнее…
WorksheetFunction.Trim(строка) Функция рабочего листа, которая удаляет все лишние пробелы (начальные, конечные и внутренние), оставляя внутри строки одиночные пробелы.

В таблице перечислены основные функции VBA Excel для работы с текстом. С полным списком всевозможных функций вы можете ознакомиться на сайте разработчика.

Ключевые слова для работы с текстом

Ключевое слово Описание
& Оператор & объединяет два выражения (результат = выражение1 & выражение2). Если выражение не является строкой, оно преобразуется в Variant (String), и результат возвращает значение Variant (String). Если оба выражения возвращают строку, результат возвращает значение String.
vbCrLf Константа vbCrLf сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит последующий текст на новую строку (результат = строка1 & vbCrLf & строка2).
vbNewLine Константа vbNewLine в VBA Excel аналогична константе vbCrLf, также сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит текст на новую строку (результат = строка1 & vbNewLine & строка2).

Примеры

Вывод прямых парных кавычек

Прямые парные кавычки в VBA Excel являются спецсимволами и вывести их, заключив в самих себя или в одинарные кавычки (апострофы), невозможно. Для этого подойдет функция Chr:

Sub Primer1()

    ‘Вывод одной прямой парной кавычки

MsgBox Chr(34)

    ‘Отображение текста в прямых кавычках

MsgBox Chr(34) & «Волга» & Chr(34)

    ‘Вывод 10 прямых парных кавычек подряд

MsgBox String(10, Chr(34))

End Sub

Смотрите интересное решение по выводу прямых кавычек с помощью прямых кавычек в первом комментарии.

Отображение слов наоборот

Преобразование слова «налим» в «Милан»:

Sub Primer2()

Dim stroka

    stroka = «налим»

    stroka = StrReverse(stroka) ‘милан

    stroka = StrConv(stroka, 3) ‘Милан

MsgBox stroka

End Sub

или одной строкой:

Sub Primer3()

MsgBox StrConv(StrReverse(«налим»), 3)

End Sub

Преобразование слова «лето» в «отель»:

Sub Primer4()

Dim stroka

    stroka = «лето»

    stroka = StrReverse(stroka) ‘отел

    stroka = stroka & «ь» ‘отель

MsgBox stroka

End Sub

или одной строкой:

Sub Primer5()

MsgBox StrReverse(«лето») & «ь»

End Sub

Печатная машинка

Следующий код VBA Excel в замедленном режиме посимвольно печатает указанную строку на пользовательской форме, имитируя печатную машинку.

Для реализации этого примера понадобится пользовательская форма (UserForm1) с надписью (Label1) и кнопкой (CommandButton1):

Пользовательская форма с элементами управления Label и CommandButton

Код имитации печатной машинки состоит из двух процедур, первая из которых замедляет выполнение второй, создавая паузу перед отображением очередного символа, что и создает эффект печатающей машинки:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

Sub StopSub(Pause As Single)

Dim Start As Single

Start = Timer

    Do While Timer < Start + Pause

       DoEvents

    Loop

End Sub

Private Sub CommandButton1_Click()

Dim stroka As String, i As Byte

stroka = «Печатная машинка!»

Label1.Caption = «»

    For i = 1 To Len(stroka)

        Call StopSub(0.25) ‘пауза в секундах

        ‘следующая строка кода добавляет очередную букву

        Label1.Caption = Label1.Caption & Mid(stroka, i, 1)

    Next

End Sub

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


Описание функции

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

Вот этот набор функций, не очень то очевидно, согласитесь:

=ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(«Заданный текст»;A1;1)-ДЛСТР(«Заданный текст»))

Для удобства в надстройку VBA-Excel добавлена функция КОНЕЦСТРОКИ. Она выполняет поиск заданного текста с конца строки и возвращает текст от искомой позиции до конца строки. И интерфейс у нее намного понятнее:

Функция =КОНЕЦСТРОКИ(ТЕКСТ; НАЙТИ; [Старт]; [Регистр]) имеет 4 аргумента:

  • ТЕКСТ — Исходный текст, в котором необходимо найти начало строки.
  • НАЙТИ — Подстрока, до которой будет возвращаться начало строки
  • [Старт] — Необязательный параметр. Позиция внутри исходного текста, с которой начинается поиск подстроки. По умолчанию параметр равен 1.
  • [Регистр] — Необязательный аргумент, указывающий необходимость учета регистра. По умолчанию равен 1 — регистр учитывается. Укажите значение 0 если не хотите учитывать регистр при сравнении.

Пример 1

Найти текст до слова СТОП. Обратите внимание не важно в какой части текста находится заданное слово.

Найти текст с конца строки

Пример 2

Чтобы вернуть текст без первого слова укажите пробел в параметре НАЙТИ.

Вернуть текст без первого слова

Пример 3

Можно начинать поиск с заданной позиции (аргумент Старт). Может понадобиться в случае если стоп-слово встречается не один раз.

Функция КОНЕЦСТРОКИ

Пример 4

В предыдущих примерах регистр искомого текста учитывался. Для того чтобы заглавные и строчные буквы НЕ учитывались при поиске, установите параметр Регистр = 0.

Поиск конца строки без учета регистра

Код на VBA

Часто люди, работающие в табличной программе Эксель, сталкиваются с такой ситуацией, когда нужно совершить перенос строчки. Реализовать эту несложную процедуру можно разнообразными способами. В статье мы детально разберем все методы, позволяющие осуществить перенос строчки на рабочей области табличного документа.

Содержание

  1. Как удалить переносы строк из ячеек в Excel 2013, 2010 и 2007
  2. Удаляем возвраты каретки вручную
  3. Удаляем переносы строк при помощи формул Excel
  4. Удаляем переносы строк при помощи макроса VBA
  5. Перенос текста в ячейке
  6. Автоматический перенос текста
  7. Настройка высоты строки для отображения всего текста
  8. Ввод разрыва строки
  9. Как сделать перенос строки в ячейке Excel формулой
  10. Формула для переноса строки в ячейках Excel
  11. Как работает функция СИМВОЛ при переносе строк в ячейке
  12. Деление на столбцы по переносу строки
  13. Деление на строки по Alt+Enter через Power Query
  14. Макрос для деления на строки по Alt+Enter
  15. Выводы

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

Существует 3 метода, позволяющих реализовать удаление возврата каретки из полей. Некоторые из них реализуют замещение знаков переноса строчки. Рассмотренные ниже варианты одинаково работают в большинстве версий табличного редактора.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

1

Перенос строчки в текстовой информации возникает по самым разнообразным причинам. К частым причинам относятся такие моменты, как использование сочетания клавиш «Alt+Enter», а также перенос текстовых данных из интернет-странички в рабочую область табличной программы. Нам необходимо произвести удаление возврата каретки, так как без этой процедуры невозможно реализовать нормальный поиск точных фраз.

Важно! Изначально фразы «Перевод строчки» и «Возврат каретки» применялись во время работы на печатных машинах и обозначали 2 разнообразных действия. Персональные компьютеры создавались с учетом функций машинок для печати.

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

Разберем детально первый метод.

  • Преимущество: быстрота выполнения.
  • Недостаток: отсутствие дополнительных функций.

Подробная инструкция выглядит так:

  1. Производим выделение всех ячеек, в которых необходимо реализовать данную операцию или же осуществить замену знаков.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

2
  1. При помощи клавиатуры жмем комбинацию кнопок «Ctrl+H». На экране возникло окошко, имеющее наименование «Найти и заменить».
  2. Выставляем указатель в строчку «Найти». При помощи клавиатуры жмем комбинацию кнопок «Ctrl+J». В строчке появилась небольшая точка.
  3. В строчку «Заменить на» вводим какое-нибудь значение, которое вставится вместо возвратов каретки. Чаще всего применяют пробел, так как он позволяет исключить склеивание 2-х соседствующих фраз. Для реализации удаления переноса строчек необходимо строчку «Заменить на» не заполнять какой-либо информацией.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

3
  1. При помощи ЛКМ щелкаем на «Заменить все». Готово! Мы реализовали удаление возврата каретки.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

4

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

  • Преимущество: возможность применения разнообразных формул, осуществляющих сложнейшую проверку текстовой информации в выбранном поле. К примеру, можно реализовать удаление возвратов каретки, а потом отыскать ненужные пробелы.
  • Недостаток: необходимо создание дополнительной колонки, а также выполнение большого количества манипуляций.

Подробная инструкция выглядит так:

  1. Реализуем добавление дополнительной колонки в конце исходной информации. В рассматриваемом примере она получит наименование «1 line»
  2. В 1-е поле дополнительной колонки (С2) вбиваем формулу, реализующую удаление или замену переносов строчек. Для осуществления этой операции применяется несколько формул. Формула, подходящая для применения с сочетаниями возврата каретки и переноса строчки, выглядит так: =ПОДСТАВИТЬ(ПОДСТАВИТЬ(В2;СИМВОЛ(13);»»);СИМВОЛ(10);»»).
  3. Формула, подходящая для осуществления замены переноса строчки каким-либо знаком, выглядит так: =СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(В2;СИМВОЛ(13);»»);СИМВОЛ(10);», «). Стоит заметить, что в этом случае не произойдет объединение строчек.
  4. Формула, позволяющая произвести удаление всех непечатаемых знаков из текстовых данных, выглядит так: =ПЕЧСИМВ(B2).

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

5
  1. Производим копирование формулы, а затем вставляем ее в каждую ячейку дополнительной колонки.
  2. Дополнительно можно осуществить замену первоначальной колонки новой, в которой будут удалены переносы строчек.
  3. Производим выделение всех ячеек, располагающихся в колонке С. Зажимаем комбинацию «Ctrl+C» на клавиатуре, чтобы реализовать копирование информации.
  4. Производим выбор поля В2. Зажимаем комбинацию кнопок «Shift+F10». В возникшем небольшом перечне жмем ЛКМ на элемент, имеющий наименование «Вставить».
  5. Реализуем удаление вспомогательной колонки.

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

  • Преимущество: создание происходит только 1 раз. В дальнейшем этот макрос можно применять и в остальных табличных документах.
  • Недостаток: необходимо понимание работы языка программирования VBA.

Для реализации этого метода нужно попасть в окошко для ввода макросов и ввести туда такой код:

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

6

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

Табличный редактор Эксель позволяет осуществить перенос текстовой информации в поле. Это делается для того, чтобы текстовые данные выводились на нескольких строчках. Можно произвести процедуру настройки для каждого поля, чтобы перенос текстовых данных производился в автоматическом режиме. Дополнительно можно реализовать разрыв строчки ручным способом.

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

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

  1. Производим выделение необходимой ячейки.
  2. В подразделе «Главная» находим блок команд, имеющий наименование «Выравнивание».
  3. При помощи ЛКМ выбираем элемент «Перенести текст».

Важно! Информация, находящаяся в ячейках, будет переноситься с учетом ширины колонки. Редактирование ширины колонки автоматически настроит перенос текстовых данных. 

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

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

  1. Производим выбор нужных ячеек.
  2. В подразделе «Главная» находим блок команд, имеющий наименование «Ячейки».
  3. При помощи ЛКМ выбираем элемент «Формат».
  4. В окошке «Размер ячейки» необходимо выполнить один из нижеописанных вариантов. Первый вариант – для автоматического выравнивания высоты строчки жмем ЛКМ на элемент «Автоподбор высоты строки». Второй вариант – для задания высоты строчек ручным способом необходимо кликнуть на элемент «Высота строки», а затем вбить желаемый показатель в пустую строчку.

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

Разберем детально как реализовать процедуру ввода разрыва строчки. Подробная инструкция выглядит так:

  1. Двойным нажатием ЛКМ осуществляем выбор поля, в которое желаем вбить разрыв строчки. Стоит заметить, что можно произвести выделение необходимого поля, а потом щелкнуть на «F2».
  2. Двойным нажатием ЛКМ осуществляем выбор того места, где будет добавлен разрыв строчки. Зажимаем комбинацию «Alt+Enter». Готово!

Как сделать перенос строки в ячейке Excel формулой

Часто пользователи табличного редактора добавляют на рабочую область разнообразные диаграммы и графики. Обычно эта процедура требует переноса строчек в текстовой информации поля. Детально разберемся, как реализовать этот момент.

Формула для переноса строки в ячейках Excel

К примеру, у нас есть гистограмма, реализованная в табличной программе. На оси Х располагаются имена работников, а также информация об их продажах. Этот тип подписи очень удобен, так как он наглядно показывает объем работ, совершаемый работниками.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

7

Реализовать эту процедуру очень легко. Нужно произвести добавление оператора СИМВОЛ в место формулы. Она позволяет реализовать генерацию показателей в полях для подписи информации в диаграмму.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

8

Безусловно, в поле можно реализовать процедуру переноса строчки в любом месте, благодаря комбинации кнопок «Alt+Enter». Однако такой метод неудобен в случаях, когда данных слишком много.

Как работает функция СИМВОЛ при переносе строк в ячейке

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

Пользователь табличного редактора, знающий эти коды, может применить их в операторе СИМВОЛ, чтобы реализовать вставку любого знака. В примере, рассмотренном выше, добавлен знак переноса строчки, который соединяется с двух сторон «&» между показателями полей С2 и А2. Если в поле не активирован режим под названием «Перенести текст», то наличие знака переноса строчки пользователь не заметит. Это видно на нижеприведенном изображении:

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

9

Стоит отметить, что на разнообразных графиках знаки переноса строчек, добавленные при помощи формулы, будут выводиться стандартным образом. Иными словами, будет производиться разбитие текстовой строчки на 2 и более.

Деление на столбцы по переносу строки

Если юзер в подразделе «Данные» выберет элемент «Текст по столбцам», то он сможет реализовать перенос строчек и разделение тестовой информации на несколько ячеек. Процесс осуществляется при помощи комбинации «Alt+Enter». В окошке «Мастер распределения текста по столбцам» необходимо поставить галочку около надписи «другой» и ввести сочетание «Ctrl+J».

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

10

Если поставить галочку около надписи «Считать последовательные разделители одним», то можно реализовать «схлопывание» нескольких переносов строчек подряд. На конченом этапе щелкаем на «Далее». В итоге мы получим:

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

11

Деление на строки по Alt+Enter через Power Query

Бывают ситуации, когда пользователю необходимо осуществить деление многострочной текстовой информации не на колонки, а на строчки.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

12

Для реализации этой процедуры отлично подходит надстройка «Power Query», появившаяся в табличном редакторе с 2016 года. Подробная инструкция выглядит так:

  1. При помощи комбинации «Ctrl+T» преобразуем исходные данные в «умную» табличку. Альтернативный вариант – передвигаемся в подраздел «Главная» и кликаем ЛКМ на элемент «Форматировать как таблицу».
  2. Передвигаемся в подраздел «Данные» и щелкаем на элемент «Из таблицы/диапазона». Эта операция позволит импортировать табличку в инструмент «Power Query».

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

13
  1. Производим выделение колонки с многострочной текстовой информацией. Передвигаемся в подраздел «Главная». Раскрываем перечень показателя «Разделить столбец» и кликаем ЛКМ на элемент «По разделителю».

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

14
  1. Жмем на «ОК», чтобы подтвердить внесенные изменения. Готово!

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

15

Макрос для деления на строки по Alt+Enter

Рассмотрим, как реализовать эту процедуру при помощи специального макроса. Производим открытие VBA при помощи комбинации клавиш «Alt+F11» на клавиатуре. В возникшем окошке жмем «Insert», а затем «Module». Сюда добавляем такой код:

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

16

Возвращаемся на рабочую область и выбираем поля, в которых располагается многострочная информация. Жмем комбинацию «Alt+F8» на клавиатуре, чтобы активировать созданный макрос.

Выводы

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

Оцените качество статьи. Нам важно ваше мнение:

Skip to content

На чтение 2 мин. Просмотров 4.9k.

Что делает макрос: Бывают случаи, когда необходимо добавить текст в начало или конец ячеек в диапазоне. Например, вам может нужно добавить код города к набору телефонных номеров. Этот макрос демонстрирует, как можно автоматизировать задачи стандартизации данных, которые требуют добавления данных значений.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

Как макрос работает

Этот макрос использует два объекта Range переменных пройти через целевой диапазон, усиливая для каждого оператора, чтобы активировать каждую ячейку в целевом диапазоне.
Каждый раз, когда клетка активируется, макрокоманда прибавляет код города к началу значения ячейки.

Код макроса

Sub DobavitTekst()
'Шаг 1: Объявляем переменные
Dim MyRange As Range
Dim MyCell As Range
'Шаг 2: Сохранить книгу прежде,чем изменить ячейки?
Select Case MsgBox("Перед изменением ячеек. " & _
"Сохранить книгу?", vbYesNoCancel)
Case Is = vbYes
ThisWorkbook.Save
Case Is = vbCancel
Exit Sub
End Select
'Шаг 3: Определение целевого диапазона
Set MyRange = Selection
'Шаг 4: Запускаем цикл по диапазону
For Each MyCell In MyRange
'Шаг 5: Убедитесь, что ячейка имеет формат текста
If Not IsEmpty(MyCell) Then
MyCell = "(972) " & MyCell
End If
'Шаг 6: Получите следующую ячейку в диапазоне
Next MyCell
End Sub

Как этот код работает

  1. Шаг 1 объявляет две переменные объекта Range.
  2. Мы должны сохранить книгу перед запуском макроса.
  3. Шаг 3 заполняет переменную MyRange с целевым диапазоном. В этом примере мы используем выбранный диапазон — диапазон, который был выбран в электронной таблице.
  4. Шаг 4 начинает цикл через каждую ячейку в целевом диапазоне.
  5. После того, как ячейка активируется, мы используем амперсанд (&), чтобы объединить код зоны с ячейкой. Если вам нужно добавить текст в конец значения ячейки, нужно просто поместить амперсанд и текст в конце. Например, MyCell = MyCell & «добавлен текст».
  6. Шаг 6 повторяет цикл, чтобы получить следующую ячейку. После просмотра всех ячеек в целевом диапазоне макрос заканчивается.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.

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

​Смотрите также​Д_Р​ со вcтроенным языком​ и вариант без​: Цитата: «Пробовала из​Светлана В​ Dim OutText As​ Exit Function End​ будет незаметно:​ функцию СИМВОЛ в​ предыдущие варианты.​, отметив его галочкой.​

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

​Некоторые пользователи пытаются перенести​и выберите​(LOOKUP).​ возвраты каретки или​ две различных операции.​Эта инструкция познакомит Вас​: Макрос не не​ программирования Fred и​ макроса: чтобы после​ форда вставлять -​: Добрый день. Возник​ String Delimeter =​ If ‘проходим по​​Но на гистограммах, графиках​​ нужное место формулы,​

​Урок:​ Жмем на кнопку​ текст внутри ячейки​Вставить​Минусы:​ заменить их другим​ Любознательный читатель может​ с тремя способами​ сохраняет пробел… а​ возможностью подключения скомпилированных​ Ctrl-F ввести в​

​ не понимает его​ вопрос — есть​ Chr(10)​ все ячейкам, проверяем​

  • ​ и диаграммах символы​ которая генерирует значения​Полезные функции Excel​«OK»​
  • ​ нажатием на клавиатуре​(Insert).​Потребуется создать вспомогательный​ символом.​ самостоятельно найти подробную​
  • ​ удалить возвраты каретки​ его там в​ ассемблерных и С-кодов.​ поле «Найти» знак​

​ эксель». А если​​ большая таблица в​excel_pl​ условие и собираем​ переноса строк, вставленные​ в ячейках для​В целом пользователь должен​.​ кнопки​Удалите вспомогательный столбец.​ столбец и выполнить​

​Нажмите​ информацию об этом​ из ячеек в​ принципе не бывает.​Возможной причиной неработы​ перевода строки, нужно​ наоборот: берем в​ кучей данных. В​: А каких-нибудь спец.​​ текст в переменную​​ с помощью формул​ подписи данных гистограммы.​ сам решить, каким​​После этого, если данные​​Enter​Плюсы:​ множество дополнительных шагов.​Ctrl+H​ в интернете.​ Excel. Вы также​Ну вот как​

​ Ctrl-J у Алексея​​ нажать Ctrl-J​ XL, вставляем в​ некоторых ячейках текст​​ символов вместо запятой​​ OutText For i​​ либо введенные из​​Конечно в ячейке можно​ из предложенных способов​ будут выступать за​. Но этим они​Создаём один раз​​Добавьте вспомогательный столбец в​​, чтобы вызвать диалоговое​Компьютеры и программное обеспечение​ узнаете, как заменить​​ в ворде печатают​​ (Alex_ST) может быть,​Остается только очистить​ Word, выделяем, жмем​ представлен в виде​ для строчки «​ = 1 To​

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

​ клавиатуры (ALT+Enter) будут​​ сделать перенос строки​ оптимальнее воспользоваться в​

​ границы ячейки, то​​ добиваются только того,​:(

​ – используем снова​ конце данных. В​ окно​​ для работы с​​ символы переноса строки​

  1. ​Иванов(энтер)Иван Иванович, то​ например, какая-нибудь утилита​ поле «Заменить на»​ (если не ошибся)​ нескольких строк, как​Удаляем переносы строк в Excel
  2. ​Delimeter = «, «​​ SearchRange.Cells.Count If SearchRange.Cells(i)​​ отображаться естественным образом.​ в любом месте​​ конкретном случае. Если​​ она автоматически расширится​
  3. ​ что курсор перемещается​​ и снова с​​ нашем примере он​Найти и заменить​​ текстами разрабатывались с​​ другими символами. Все​ есть по факту​ автоматического переключения раскладки​ и нажать кнопку​ «Alt+X» — получаем​ если бы его​
  4. ​» нету?​​ Like Condition Then​​ То есть переносом​ с помощью комбинации​ вы хотите только,​ в высоту, а​ на следующую строку​ любой рабочей книгой.​ будет называться​(Find and Replace).​ учётом особенностей печатных​ предложенные решения работают​​ там пробела и​​ клавиатуры.​Удаляем переносы строк в Excel
  5. ​ «Заменить все».​​ код. Далее в​​ вводили вручную через​например, что-нибудь в​Удаляем переносы строк в Excel

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

​ OutText = OutText​​ разбивать одну текстовую​ клавиш ALT+Enter. Но​ чтобы все символы​ слова станут переноситься.​ листа. Мы же​Минусы:​1 line​Поставьте курсор в поле​ машинок. Вот почему​ в Excel 2013,​ нет.​

​Вставка символа перевода​Alex_ST​ XL, к примеру,​ Alt+Enter. Подскажите, как​ духе :​ & TextRange.Cells(i) &​ строку на две​ если таких ячеек​ вмещались в границы​ Иногда приходится расширять​​ рассмотрим варианты переноса​​Требуется хотя бы​

​.​​Найти​ теперь для обозначения​ 2010, 2007 и​

  1. ​Тогда наверное нужна​ строки по Ctrl-J​: Наверное, «очепятка» -​ «=СИМВОЛ(160)»…​​ убрать эти знаки​​rn​
  2. ​ Delimeter Next i​ и больше.​ десятки лучше автоматизировать​ ячейки, то просто​ границы вручную.​ именно внутри ячейки,​ базовое знание VBA.​
    • ​В первой ячейке вспомогательного​(Find what) и​ разрыва строки используют​ 2003.​ просто замена знака​ полезна не только​

      ​ не Ctrl+J, а​
      ​Z.​

    • ​ переноса, либо заменить​;​ ‘выводим результаты без​Знаю что в C/C#​ данный процесс с​ отформатируйте её нужным​Чтобы подобным образом не​ как очень простые,​Макрос VBA из следующего​ столбца (C2) введите​

      ​ нажмите​
      ​ два различных непечатаемых​

    • ​Переносы строк могут появиться​ переноса строки на​ в поиске-замене, но​ Ctrl+H ? Или​

      ​Светлана В​
      ​ их на пробелы?​

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

  3. ​Sanja​ последнего разделителя MergeIf​
  4. ​ это символ -​ помощью простой выше​ образом, а лучше​ форматировать каждый отдельный​
    • ​ так и более​ примера удаляет возвраты​​ формулу для удаления/замены​​Ctrl+J​​ символа:​​ в тексте по​ пробел, а потом​
    • ​ и в пользовательском​​ я чего-то не​​: Вы не поверите,​​Ячейки заранее неизвестны.​​: Kuzmich, же Вам​​ = Left(OutText, Len(OutText)​​ n, а как​
    • ​ приведенной формулы.​

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

​ всего отформатировать весь​​ элемент, можно сразу​ сложные.​ каретки из всех​ переносов строк. Ниже​

​. На первый взгляд​​Возврат каретки​ разным причинам. Обычно​

​ trim чтобы удалить​ формате. Приложил пример,​ знаю?​ но это была​ Я бы через​

​ показал​ — Len(Delimeter)) End​ можно программно задать​​ диапазон. Если вы​ выделить целую область.​Самый простой вариант переноса​ ячеек на активном​ приведены несколько полезных​ поле покажется пустым,​(Carriage return, CR​ возвраты каретки встречаются​ второй лишний пробел…​

​ когда в ячейке​ZVI​ не я)))))​ Заменить сделала, но​Юрий М​ Function​ принудительный перенос строки​

​Программа MS Excel активно​ хотите устроить перенос​
​ Недостаток данного варианта​
​ на другую строку,​

​ листе.​

office-guru.ru

Перенос строки в пределах ячейки в Microsoft Excel

Перенос строки в Microsoft Excel

​ формул для различных​ но если посмотрите​ или ASCII код​ в рабочей книге,​Д_Р​ нужно хранить дробное​: Алексей, Ctrl-J нажимать,​Но спасибо, этот​ не знаю, как​: excel_pl, Вы не​Сцепка происходит по​ в excel?​ применяет коды из​ конкретных слов, то​ заключается в том,​ это установить курсор​Sub RemoveCarriageReturns() Dim​

​ случаев:​ внимательно, то увидите​

Способы переноса текста

​ 13) и​ например, когда текст​: сам спросил сам​ число, но отображать​​ когда курсор находится​​ способ намного удобнее,​ в экселе обозначить​ отписались в своих​ принципу:​…​ таблицы символов стандарта​ наберите соответствующее сочетание​ что перенос выполняется​ перед тем отрезком,​ MyRange As Range​

Способ 1: использование клавиатуры

​Эта формула подходит для​ в нём маленькую​Перевод строки​ скопирован с веб-страницы,​ решил;)​ только целые с​ в поле «Найти».​ чем мой кривенький​​ знак переноса.​​ старых темах, а​

Ячейка где нужно перенести слова в Microsoft Excel

​Текст 1, Текст​: Если в макросе:​​ ASCII. В ней​​ клавиш, как рассказано​ только в том​ который нужно перенести,​ Application.ScreenUpdating = False​

Перенос слов очуществлен в Microsoft Excel

​ использования с комбинациями​​ точку.​

Способ 2: форматирование

​(Line feed, LF​ когда они уже​fly1​ отброшенной дробной частью,​Alex_ST​ макрос)​Переносить в Ворд,​ уже создали новую.​ 2​»Строка1″ & vbCr​ находятся все коды​

  1. ​ в описании первого​ случае, если слова​ а затем набрать​ Application.Calculation = xlCalculationManual​ возврат каретки /​В поле​ или ASCII код​​ есть в рабочей​​: Можно узнать решение?​

    Переход в формат ячеек в Microsoft Excel

  2. ​ т.е. без округления.​: Я уж и​​Nicks​​ чистить там, а​​ Или ответы не​​Вопрос​​ & vbLf &​​ символов, которые высвечиваются​ способа. Третий вариант​​ не будут вмещаться​​ на клавиатуре сочетание​

Формат ячеек в Microsoft Excel

​ For Each MyRange​ перенос строки, характерными​Заменить на​ 10). В Windows​ книге, полученной от​ Тоже нужно​Anna​ левый Ctrl+J и​

​: Как вариант формула​ потом обратно в​ интересуют?​Как сделать чтобы​ «Строка2″​ на экране в​ рекомендуется использовать только​ в границы, к​ клавиш​ In ActiveSheet.UsedRange If​ для Windows и​(Replace With) введите​ используются оба символа​ клиента, или, когда​

Способ 3: использование формулы

​Казанский​: а как в​ правый, а всё​ =ПЕЧСИМВ() далее по​ Эксель — не​excel_pl​ разделитель был не​Если в ячейке​ операционной системе MS​ тогда, когда данные​

  1. ​ тому же разбитие​Alt+Enter​
  2. ​ 0 < InStr(MyRange,​ для UNIX.​ любое значение для​ вместе, а в​

    ​ мы сами добавляем​

    ​: Видимо, заменить Ctrl+J​​ формулу вставить знак​​ бестолку… Данные не​​ потребностям….​​ вариант.​: Вопрос решён.​ «, «, а​ перенос:​ Windows любых версий.​

    Применение функции СЦЕПИТЬ в Microsoft Excel

  3. ​ подтягиваются из других​ осуществляется автоматически без​.​​ Chr(10)) Then MyRange​​=ПОДСТАВИТЬ(ПОДСТАВИТЬ(B2;СИМВОЛ(13);»»);СИМВОЛ(10);»»)​

Слова перенесены при помощи фнкции в Microsoft Excel

​ вставки вместо возвратов​ системах *NIX применяется​ их нажатием клавиш​ на пробел, или​ абзаца, допустим в​

​ найдены. Хотя я​​Светлана В​

​Спасибо.​Всем спасибо.​ перенос текста на​Alt + Enter​ Таблица символов стандарта​ диапазонов с помощью​ учета желания пользователя.​В отличие от использования​ = Replace(MyRange, Chr(10),​=SUBSTITUTE(SUBSTITUTE(B2,CHAR(13),»»),CHAR(10),»»)​ каретки. Обычно для​ только перевод строки.​Alt+Enter​…​ формулу СЦЕПИТЬ()?​ сам вводил перенос​: было бы пару​Guest​Igor_Tr​ следующую строчку?​Если в формуле:​ ASCII содержит 255​ формулы. В остальных​Также можно осуществить перенос​ только одной кнопки​ «») End If​Следующая формула подходит для​ этого используют пробел,​Будьте внимательны:​.​

​Cells.Replace What:=Chr(10), Replacement:=»​

lumpics.ru

Как сделать перенос строки в ячейке Excel формулой

​точнее не знак,​ строки в ячейку…​ столбцов в иходнике​: А точнее? Вариантов​: В ячейке ввели​Т.е., чтобы сцепка​=»Строка1″ & CHAR(10)​ кодов по которым​ случаях использование данного​ внутри ячейки при​Enter​

Формула для переноса строки в ячейках Excel

​ Next Application.ScreenUpdating =​ замены переноса строки​ чтобы избежать случайного​В Excel встречаются​Какой бы ни была​ » …​ а сам абзац,​А это точно​ — без вопросов)))​ море: найти-заменить, подставить​ строку при помощи​ происходила по принципу:​ & «Строка2» (англ.​

Гистограммы.

​ пронумерованы все символы​ способа является нерациональным,​ помощи формул. Этот​, с помощью этого​ True Application.Calculation =​ любым другим символом​ склеивания двух соседних​ оба варианта. При​

Код СИМВОЛ переноса строки.

​ причина их появления,​…​ чтобы тескт с​ под 2003-им работает?​ но в данном​ (знать код знака),​ Alt + Enter​Текст 1​ Excel)​ от 1-го и​

​ так как имеются​

Как работает функция СИМВОЛ при переносе строк в ячейке

​ вариант особенно актуален​ способа будет достигнут​ xlCalculationAutomatic End Sub​ (например, «, »​ слов. Если нужно​ импорте из файлов​ сейчас перед нами​ъ​ абзаца начинался​KuklP​ случае строк и​ удалить ненужное -​ (переносить по словам).​Текст 2​=»Строка1″ & СИМВОЛ​ до 255. Например,​ гораздо более простые​ в том случае,​ именно такой результат,​Если Вы не слишком​ – запятая +​ просто удалить переносы​.txt​ стоит задача удалить​: fly1, Вы это​Казанский​: Леш, у меня​ столбцов — куча)))​

​ печсимв, сжать пробелы,​ Средствами VBA ну​Sanja​ (10) & «Строка2″​ большая (в верхнем​ варианты решения поставленной​ если содержимое выводится​ который ставится.​ близко знакомы с​ пробел). В таком​ строк, оставьте поле​или​ возвраты каретки, так​

​ видели?​: =СЦЕПИТЬ(СИМВОЛ(10);»текст»)​ работает(2003). И в​ данные идут с​ trim и т.п.​

Перенести текст.

​ никак не могу​: Function MergeIf(TextRange As​ (русск. Excel)​ регистре) буква А​ задачи.​ с помощью функций,​Урок:​ VBA, рекомендую изучить​ случае строки не​Заменить на​.csv​

exceltable.com

Какой символ в excel означает принудительный перенос строки?

​ как они мешают​fly1​или​ 2007 тоже. Срабатывает​ разных регионов, каждые​Z.​

​ избавиться от символа​​ Range, SearchRange As​
​Для использования в​ имеет код 97.​Автор: Максим Тютюшев​
​ но его можно​Горячие клавиши в Экселе​
​ статью о том,​
​ будут объединены и​
​(Replace With) пустым.​данные обычно содержат​ выполнять поиск фраз​
​: Вообще эта моя​=СИМВОЛ(10)&»текст»​ даже с vbcrlf,​
​ в меру способностей​Guest​ переноса (между выражениями​ Range, Condition As​ формуле — нужно,​ Числу 9 по​Во время создания графиков​

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

​ применять и в​​Если перед пользователем не​ как вставить и​ лишние пробелы не​Нажмите кнопку​ возвраты каретки и​ и приводят к​ первая проба общения​В формате ячейки​ только vbcr оставляет.​ изгаляются с форматированием)​: Не уверен за​ — квадратик, тоесть​ String) Dim i​ чтобы в ячейке​ этой же таблице​ и диаграмм в​ обычных случаях.​ ставится задачи перенести​ выполнить код VBA​ появятся.​Заменить все​ переводы строки. Когда​ беспорядку в столбце​ с макросами.​ надо включить «переносить​Казанский​openid.mail.ru/mail/vlad3622340​ правильность ответа, но​ Chr(7)). Как убрать​ As Long ‘если​ в свойствах стоял​ присвоен код 57.​ Excel часто возникает​Отформатируйте ячейку, как указано​ на новую строку​ в Excel.​=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(B2;СИМВОЛ(13);»»);СИМВОЛ(10);», «)​
​(Replace All) и​ перенос строки вводится​
​ при включении режима​Создал в VBA​
​ по словам».​
​: Владимир,​: абзац СИМВОЛ(182)​ можно попробовать знак​ эту заразу? Встречал​ диапазоны проверки и​
​ включенный перенос слов.​ Код символа пробела​
​ необходимость сделать перенос​
​ в предыдущем варианте.​

​ строго определенные слова,​​Урок подготовлен для Вас​=TRIM(SUBSTITUTE(SUBSTITUTE(B2,CHAR(13),»»),CHAR(10),», «)​ наслаждайтесь результатом!​ вручную нажатием​ переноса текста.​ такую запись:​vikttur​спасибо! Я смутно​мягкий перенос СИМВОЛ(172)​ переноса (абзаца) скопировать​ кто?​ склеивания не равны​ Иначе работать не​ – 32, а​ строки в тексте​Выделите ячейку и введите​ а нужно только​ командой сайта office-guru.ru​А вот так можно​Плюсы:​Alt+Enter​Все три представленных способа​Cells.Replace What:=Chr(10), Replacement:=»»,​: сочетание Alt+Enter создает​ помнил, что как-то​неразрывный пробел СИМВОЛ(160)​

​ в поле «Заменить:»,​​petr-sev​ друг другу -​ будет.​ код переноса строки​ ячейки и не​

​ в неё или​​ уместить их в​Источник: https://www.ablebits.com/office-addins-blog/2013/12/03/remove-carriage-returns-excel/​ удалить все непечатаемые​​Доступно использование последовательных​​, Excel вставляет только​
​ довольно быстры. Выбирайте​ LookAt:=xlPart, SearchOrder _​​ новую строку в​​ вводил перевод строки​

​Наверное, их надо​​ а в поле​: И не получится,​

​ выходим с ошибкой​​excel_pl​ имеет число 10.​ только. Например, чтобы​ в строку формул​ пределах одной ячейки,​Перевел: Антон Андронов​

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

planetaexcel.ru

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

​ тот, который Вам​​:=xlByRows, MatchCase:=False, SearchFormat:=False,​ ячейке. Это равнозначно​ в поле поиска​ найти и заменить​ «Заменть на:» ставим​ потому что код​ If SearchRange.Count <>​: Код сцепляет столбец​ В этой же​ получить лучший визуальный​ следующее выражение:​ не выходя за​

​Автор: Антон Андронов​​ включая переносы строк:​ для сложной проверки​ Если же файл​ больше подходит:​ ReplaceFormat:=False​
​ вставке СИМВОЛ(10)​ еще в Excel​ на пробел СИМВОЛ(32)​ пробел или оставлеям​
​ символа принудительного переноса​ TextRange.Count Then MergeIf​

​ по критериюСкрытый текст​​ таблице содержатся непечатные​ эффект для читабельности​=СЦЕПИТЬ(«ТЕКСТ1″;СИМВОЛ(10);»ТЕКСТ2»)​ её границы, то​
​Как известно, по умолчанию​=ПЕЧСИМВ(B2)​ текста в обрабатываемой​.csv​Удаляем все переносы строк​

CyberForum.ru

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

​End Sub​​Д_Р​ 5 (под Win​Nicks​ пусто.​ не 7, а​ = CVErr(xlErrRef) Exit​ Option Compare Text​ символы с клавиатуры.​ подписей данных на​Вместо элементов​ можно воспользоваться инструментом​ в одной ячейке​=CLEAN(B2)​
​ ячейке. Например, можно​получен от поклонника​ вручную, чтобы быстро​Cells.Replace What:=Chr(10), Replacement:=»​: Всех с наступающим!​ 3.11), но забыл​

​: Не надо жалеть​Светлана В​ 10​ Function End If​ Function MergeIf(TextRange As​
​Зная соответствующие коды из​

​ графиках и диаграмме.​​«ТЕКСТ1»​ форматирования.​ листа Excel располагается​Скопируйте формулу во все​ удалить возвраты каретки,​ Linux, Unix или​
​ навести порядок на​

​ «​​немножко реанимирую тему.​ как.​ места на диске​: Попробовать-то можно, но​Замена в текущей​ For i =​ Range, SearchRange As​ таблицы ASCII и​Рассмотрим пример ниже на​

​и​​Выделяем ячейку, в которой​ одна строка с​ ячейки столбца.​ а затем найти​ другой подобной системы,​ одном листе.​
​В результате идёт​Sub Удалить_переносы()​Алексей,​

​ — всегда в​

​ как именно выглядит​ ячейке этого символа​
​ 1 To SearchRange.Cells.Count​ Range, Condition As​
​ используя функцию СИМВОЛ,​

​ рисунке с гистограммой,​​«ТЕКСТ2»​ текст выходит за​ числами, текстом или​По желанию, можете заменить​ лишние начальные или​ то готовьтесь к​Удаляем переносы строк при​ ошибка:​Cells.Replace What:=Chr(10), Replacement:=»»,​в 2007 и​ таких случаях пресоздаю​ этот знак? Пробовала​
​ на пробел будет​

​ If SearchRange.Cells(i) Like​​ String) Dim Delimeter​ мы имеем возможность​ созданной в программе​
​нужно подставить слова​ пределы границ. Кликаем​ другими данными. Но,​ исходный столбец новым,​

​ конечные пробелы, или​​ встрече только с​ помощи формул и​Compile error:​

​ LookAt:=xlPart, SearchOrder _​​ в 2000 работает.​ файл на основе​ из форда вставлять​ выглядеть примерно так:​ Condition Then If​ As String, i​ вставить любой символ​ Excel. Подписи оси​ или наборы слов,​ по ней правой​

​ что делать, если​​ с удалёнными переносами​
​ лишние пробелы между​
​ символом перевода строки.​
​ настраиваем таким образом​Invalid outside procedure​:=xlByRows, MatchCase:=False, SearchFormat:=False,​

​ Попробуй ввести аб​​ таких опусов. За​ — не понимает​ActiveCell = Replace(ActiveCell.Text,​ MergeIf <> Empty​ As Long Delimeter​ в формулу Excel.​ X содержат имена​ которые хотите перенести.​

​ кнопкой мыши. В​​ нужно перенести текст​ строк:​ словами.​

​Плюсы:​​ комплексную обработку текстовых​В справке пока​ ReplaceFormat:=False​

​ (буква перед и​​ одно избавляюсь от​ его эксель.​ Chr(10), » «)​ Then MergeIf =​ = «, «​ У выше описанном​ продавцов и данные​
​ Остальные символы формулы​ открывшемся списке выбираем​ в пределах одной​Выделите все ячейки в​

​В некоторых случаях переносы​​Этот способ самый​ данных в ячейках.​ ответа не нашёл.​End Sub{/post}{/quote}​ буква после), чтобы​

​ кучи сопутствующих проблем…​​Короче, не стала​Igor_Tr​ MergeIf & TextRange.Cells(i)​

​ ‘символы-разделители (можно заменить​​ примере вставлен символ​ о продажах. Такой​ изменять не нужно.​ пункт​ ячейки на другую​ столбце​ строк необходимо удалять,​
​ быстрый.​Используем макрос VBA, чтобы​

​ В любом случае,​​макрос отлично работает,​ нагляднее было.​Анель​ мучаться, быстренько сделала​: Заработалааа!! А можно​

​ & vbCrLf Else​​ на пробел или​
​ переноса строки, который​ пример подписи данных​Для того, чтобы результат​«Формат ячеек…»​ строку? Данную задачу​C​ чтобы в дальнейшем​Минусы:​

​ очистить от переносов​
​ всем спасибо за​ есть одно небольшое​ZVI​: Супер !!!! Макрос​ коротенький макрос​ подсказать, символ чего​

​ MergeIf = TextRange.Cells(i)​​ ; и т.д.)​ соединен с обеих​ на гистограмме всегда​ отобразился на листе,​.​ можно выполнить, воспользовавшись​и нажатием​ использовать текст в​Никаких дополнительных плюшек​ строк несколько рабочих​ подсказку.​ НО! он не​

​: Алексей (Казанский), а​ работает. 5 сек​Sub Удалить_переносы()​ Ch(7). Спасибо еще​ & vbCrLf End​ ‘если диапазоны проверки​

​ сторон оператором &​ пригодиться, когда текст​ нажмите кнопку​Открывается окно форматирования. Переходим​ некоторыми возможностями программы.​Ctrl+C​ качестве аргументов функций,​Вот так можно удалить​ книг.​mouse​ сохраняет пробел..​ я тогда этого​

​ и все готово​​Cells.Replace What:=Chr(10), Replacement:=»»,​ раз!​ If End If​ и склеивания не​
​ между значениями ячеек​ должен компактно расположиться​Enter​ во вкладку​

​ Давайте разберемся, как​​скопируйте данные в​
​ не внося изменения​
​ переносы строк при​

​Замечание:​: У меня работает​Иванов​

​ не знал, и​​svetlanav​ LookAt:=xlPart, SearchOrder _​Все! Наверно, мозги​ Next i End​

​ равны друг другу​​ A2 и C2.​
​ так, чтобы не​

​на клавиатуре.​

​«Выравнивание»​ сделать перевод строки​
​ буфер обмена.​ в исходные ячейки.​
​ помощи инструмента «​

​Первоначально термины «Возврат​ так​Иван Иванович​ вообще Excel стал​
​: как приятно, когда​
​:=xlByRows, MatchCase:=False, SearchFormat:=False,​

​ закипели. Ch(7) -​

​ Function​
​ — выходим с​Если в ячейке не​

​ затенять элементы гистограммы.​​Главным недостатком данного способа​. В блоке настроек​ в ячейке в​Далее выделите ячейку​
​ Результат можно использовать,​Найти и заменить​
​ каретки» и «Перевод​Sub test()​получается​ воспринимать только с​
​ мои кривоватые куски​ ReplaceFormat:=False​ это вставка символа,​Kuzmich​ ошибкой If SearchRange.Count​ включен режим «Перенести​

​Секрет данного решения весьма​​ является тот факт,​«Отображение»​

​ Excel.​​B2​ например, как аргумент​

​»:​​ строки» использовались при​Cells.Replace What:=Chr(10), Replacement:=»»,​

​ИвановИван Иванович…​
​ 8-й версии, до​ кода кому-то помогают))​
​End Sub​

​ верхней жирной точки.​​: В ячейке включить​ <> TextRange.Count Then​

​ текст», то наличие​​ прост и элементарен.​ что он сложнее​выбираем параметр​
​Скачать последнюю версию​, нажмите сочетание клавиш​

​ функции​Выделите все ячейки, в​
​ работе на печатных​ LookAt:=xlPart​
​есть рецепт? заранее​
​ него мне больше​ZVI​

​Z​ Пошел пить пиво!!!​
​ перенос по словам​
​ MergeIf = CVErr(xlErrRef)​

​ символа переноса строки​ Просто необходимо добавить​ в выполнении, чем​«Переносить по словам»​ Excel​

​Shift+F10​​ПРОСМОТР​ которых требуется удалить​

​ машинках и обозначали​
​End Sub​ спасибо!​
​ нравился пакет Framework-IV​

planetaexcel.ru

​: Может кому-нибудь пригодится​

Уважаемые форумчане!

Перерыл весь рунет, а ответа на свой вопрос не нашел. Обращаюсь за помощью к вам…

Дело вот в чем — столкнулся с необходимостью сделать следующее:

На Лист 1 ежедневно заполняются ячейки C5-K8. В строке Итог (C10-K10) ФОРМУЛАМИ производится необходимый расчет. Так вот я никак не могу добиться того, чтобы при нажатии на кнопку Сформировать, данные (именно ЧИСЛА, а не ФОРМУЛЫ)
скопировались в НОВУЮ строку на Лист 2 в сводную ежедневную таблицу. Т.е. смысл какой — оператор ежедневно на Лист 1 вводит новые данные и нажимает кнопку Сформировать. При этом рассчитанные ЦИФРЫ из строки Итог должны заноситься на Лист 2 в НОВУЮ строку (т.е. должна добавляться новая строка в конец существующей таблицы). В результате мы на Лист 2 получим таблицу со строками данных за каждый день (типа статистика). Понимаю что надо кнопке присвоить макрос который это будет делать. Сам в VB не силен, вот и прошу помощи у Гуру. Самому никак не удалось решить задачу. Файл прилагается. Заранее благодарен за любую инфу по данному вопросу.

Хитрости »

1 Май 2011              403854 просмотров


Очень часто при внесении данных на лист Excel возникает вопрос определения последней заполненной или первой пустой ячейки. Чтобы впоследствии с этой первой пустой ячейки начать заносить данные. В этой теме я опишу несколько способов определения последней заполненной ячейки.

В качестве переменной, которой мы будем присваивать номер последней заполненной строки, у нас во всех примерах будет lLastRow. Объявлять мы её будем как Long. Для экономии памяти можно было бы использовать и тип Integer, но т.к. строк на листе может быть больше 32767(это максимальное допустимое значение переменных типа Integer) нам понадобиться именно Long, во избежание ошибки. Подробнее про типы переменных можно прочитать в статье Что такое переменная и как правильно её объявить

Одинаковые переменные для всех примеров
Во всех примерах ниже мы будем запоминать номер последней строки или столбца в одни и те же переменные:

    Dim lLastRow As Long
    'а для lLastCol можно было бы применить и тип Integer,
    'т.к. столбцов в Excel пока меньше 32767, но для однообразности назначим тоже Long
    Dim lLastCol As Long
  • Определение последней ячейки через свойство End
  • Определение последней ячейки через SpecialCells
  • Определение последней ячейки через UsedRange
  • Определение последней ячейки через метод Find
  • Несколько практических кодов

  • Способ 1:

    Определение

    последней заполненной строки

    через свойство End

        lLastRow = Cells(Rows.Count,1).End(xlUp).Row
        'или
        lLastRow = Cells(Rows.Count, "A").End(xlUp).Row

    1 или «A» — это номер или имя столбца, последнюю заполненную ячейку в котором мы определяем. По сути обе приведенные строки дадут абсолютно одинаковый результат. Просто иногда удобнее указать номер столбца, а иногда его имя. Поэтому использовать можно любой из приведенных вариантов, в зависимости от ситуации.
    Определение последнего столбца через свойство End

    lLastCol = Cells(1, Columns.Count).End(xlToLeft).Column

    1 — это номер строки, последнюю заполненную ячейку в которой мы определяем.

    Данный метод определения последней строки/столбца самый распространенный. Используя его мы можем определить последнюю ячейку только в одном конкретном столбце(или строке). В большинстве случаев этого более чем достаточно.

    Метод основан именно на принципе работы свойства End. На примере поиска последней строки опишу принцип так, как бы мы это делали руками через выделение ячеек на листе:

    • выделили самую последнюю ячейку столбца А на листе(для Excel 2007 и выше это А1048576, а для Excel 2003 — А65536)
    • и выполнили переход вверх комбинацией клавиш Ctrl+стрелка вверх. Данная комбинация заставляет Excel двигаться вверх(если точнее, то в направлении стрелки, нажатой вместе с Ctrl) до тех пор, пока не встретиться первая ячейка с формулой или значением. А в случае, если сочетание было вызвано из уже заполненных ячеек — то до первой пустой. И как только Excel доходит до этой ячейки — он её выделяет
    • А через свойство .Row мы просто получаем номер строки этой выделенной ячейки

    Нюансы:

    • даже если в ячейке нет видимого значения, но есть формула — End посчитает ячейку не пустой. С одной стороны вполне справедливо. Но иногда нам надо определить именно «визуально» заполненные ячейки. Поиск ячеек при подобных условиях будет описан ниже(Способ 4: Определение последней ячейки через метод Find)
    • если на листе заполнены все строки в просматриваемом столбце(или будут заполнены несколько последних ячеек столбца или даже только одна последняя) — то результат может быть неверный(ну или не совсем такой, какой ожидали)
    • Данный способ игнорирует строки, скрытые фильтром, группировкой или командой Скрыть (Hide). Т.е. если последняя строка таблицы будет скрыта, то данный метод вернет номер последней видимой заполненной строки, а не последней реально заполненной.

    Ну а если надо получить первую пустую ячейку на листе(а не первую заполненную) — придется вспомнить математику. Т.к. последнюю заполненную мы определили, то первая пустая — следующая за ней. Т.е. к результату необходимо прибавить 1. Это хоть и очевидно, но на всякий случай все же лучше об этом напомнить.


    Способ 2:

    Определение

    последней заполненной строки

    через SpecialCells

        lLastRow = Cells.SpecialCells(xlLastCell).Row

    Определение последнего столбца через SpecialCells

        lLastCol = Cells.SpecialCells(xlLastCell).Column

    Данный метод не требует указания номера столбца и возвращает последнюю ячейку(Row — строку, Column — столбец).
    Если хотите получить номер первой пустой строки или столбца на листе — к результату необходимо прибавить 1.
    Нюансы:

    • Используя данный способ следует помнить, что не всегда можно получить реальную последнюю заполненную ячейку, т.е. именно ячейку со значением. Метод SpecialCells определяет самую «дальнюю» ячейку на листе, используя при этом механизм «запоминания» тех ячеек, в которых мы работали в данном листе. Т.е. если мы занесем в ячейку AZ90345 значение и сразу удалим его — lLastRow, полученная через SpecialCells будет равна значению именно этой ячейки, из которой вы только что удалили значения(т.е. 90345). Другими словами требует обязательного обновления данных, а этого можно добиться только сохранив файла, а временами даже только закрыв файл и открыв его снова. Так же, если какая-либо ячейка содержит форматирование(например, заливку), но не содержит никаких значений, то метод SpecialCells посчитает её используемой и будет учитывать как заполненную.
      Этот недостаток можно попробовать обойти, вызвав перед определением последней ячейки вот такую строку кода:

      With ActiveSheet.UsedRange: End With

      Это должно переопределить границы рабочего диапазона и тогда определение последней строки/столбца сработает как ожидается, даже если до этого в ячейке содержались данные, которые впоследствии были удалены.
      Выглядеть в единой процедуре это будет так:

      Sub GetLastCell()
          Dim lLastRow As Long
          'переопределяем рабочий диапазон листа
          With ActiveSheet.UsedRange: End With
          'ищем последнюю заполненную ячейку на листе
          lLastRow = Cells.SpecialCells(xlLastCell).Row
      End Sub
    • даже если в ячейке нет видимого значения, но есть формула — SpecialCells посчитает ячейку не пустой
    • Данный метод определения последней ячейки не будет работать на защищенном листе(Рецензирование(Review)Защитить лист(Protect Sheet)).
    • Данный метод не будет работать при использовании внутри UDF. Точнее будет работать не так, как ожидается. Подробнее про некоторые «баги» работы встроенных методов внутри UDF(функций пользователя) я описывал в этой статье: Глюк работы в UDF методов SpecialCells и FindNext

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


    Способ 3:
    Определение последней строки через UsedRange

        lLastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1

    Определение последнего столбца через UsedRange

        lLastCol = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1

    НЕМНОГО ПОЯСНЕНИЙ:

    • ActiveSheet.UsedRange.Row — этой строкой мы определяем первую ячейку, с которой начинаются данные на листе. Важно понимать для чего это — если у вас первые строк 5 не заполнены ничем(т.е. самые первые данные заносились начиная с 6-ой строки листа), то ActiveSheet.UsedRange.Row вернет именно 6(т.е. номер первой строки с данными). Если же все строки заполнены — то вернет 1.
    • ActiveSheet.UsedRange.Rows.Count — определяем кол-во строк, входящих в весь диапазон данных на листе. При этом неважно, есть ли данные в ячейках или нет — достаточно было поработать в этих ячейках и удалить значения или просто изменить цвет заливки.
      В итоге получается: первая строка данных + кол-во строк с данными — 1. Зачем вычитать единицу? Попробуем посчитать вместе: первая строка: 6. Всего строк: 3. 6 + 3 = 9. Вроде все верно. А теперь выделим на листе три ячейки, начиная с 6-ой. Выделение завершилось на 8-ой строке. Потому что в 6-ой строке уже есть данные. Поэтому и надо вычесть 1, чтобы учесть этот момент. Думаю, не надо пояснять, что если надо получить первую пустую ячейку — можно 1 не вычитать :)
    • То же самое и с ActiveSheet.UsedRange.Column, только уже не для строк, а для столбцов.

    Нюансы:

    • Обладает некоторыми недостатками предыдущего метода. Определяет самую «дальнюю» ячейку на листе, используя при этом механизм «запоминания» тех ячеек, в которых мы работали в данном листе. Следовательно попробовать обойти этот момент можно точно так же: перед определением последней строки/столбца записать строку: With ActiveSheet.UsedRange: End With
      Это должно переопределить границы рабочего диапазона и тогда определение последней строки/столбца сработает как ожидается, даже если до этого в ячейке содержались данные, которые впоследствии были удалены.
    • даже если в ячейке нет видимого значения, но есть формула — UsedRange посчитает ячейку не пустой

    Однако метод через UsedRange.Row работает прекрасно и при установленной на лист защите и внутри UDF, что делает его более предпочтительным, чем метод через SpecialCells при равных условиях.


    Способ 4:
    Определение последней строки и столбца, а так же адрес ячейки методом Find

    Sub GetLastCell_Find()
        Dim rF As Range
        Dim lLastRow As Long, lLastCol As Long
        'ищем последнюю ячейку на листе, в которой хранится хоть какое-то значение
        Set rF = ActiveSheet.UsedRange.Find(What:="*", LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlPrevious, MatchCase:=False, MatchByte:=False)
        If Not rF Is Nothing Then
            lLastRow = rF.Row    'последняя заполненная строка
            lLastCol = rF.Column 'последний заполненный столбец
            MsgBox rF.Address 'показываем сообщение с адресом последней ячейки
        Else
            'если ничего не нашлось - значит лист пустой
            'и можно назначить в качестве последних первую строку и столбец
            lLastRow = 1
            lLastCol = 1
            MsgBox "A1" 'показываем сообщение с адресом ячейки А1
        End If
    End Sub

    Этот метод, пожалуй, самый оптимальный в случае, если надо определить последнюю строку/столбец на листе без учета форматов и формул — только по отображаемому значению в ячейке. Например, если на листе большая таблица и последние строки заполнены формулами, возвращающими при определенных условиях пустую ячейку(=ЕСЛИ(A1>0;1;»»)), предыдущие варианты вернут строку/столбец ячейки с последней ячейкой, в которой формула. В то время как данный метод вернет адрес ячейки только в случае, если в ячейке реально отображается какое-то значение. Такой подход часто используется для того, чтобы определить границы данных для последующего анализа заполненных данных, чтобы не захватывать пустые ячейки с формулами и не тратить время на их проверку.
    Здесь следует обратить внимание на параметры метода Find. В данном случае мы специально указываем искать по значениям, а не по формулам:
    Set rF = ActiveSheet.UsedRange.Find(What:=»*», LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlPrevious, MatchCase:=False, MatchByte:=False)
    Нюансы:

    • Метод Find, вызванный с листа или другим кодом, имеет свойство запоминать все параметры последнего поиска, а если поиск еще не вызывался — то применяются параметры по умолчанию. А по умолчанию поиск идет всегда по формулам. Поэтому я настоятельно рекомендую указывать принудительно все необходимые параметры, как в примере.
    • Метод Find не будет учитывать в просмотре скрытые строки и столбцы. Это следует учитывать при его применении.

    Пара небольших практических кодов

    Коды ниже могут помочь понять, как использовать приведенные выше строки кода по поиску последней ячейки/строки:

    Sub GetLastCell()
        Dim lLastRow As Long
        Dim lLastCol As Long
        'определили последнюю заполненную ячейку с учетом формул в столбце А
        lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
        MsgBox "Заполненные ячейки в столбце А: " & Range("A1:A" & lLastRow).Address
        'определили последний заполненный столбец на листе(с учетом формул и форматирования)
        lLastCol = Cells.SpecialCells(xlLastCell).Column
        MsgBox "Заполненные ячейки в первой строке: " & Range(Cells(1, 1), Cells(1, lLastCol)).Address
        'выводим сообщение с адресом последней ячейки на листе(с учетом формул и форматирования)
        MsgBox "Адрес последней ячейки диапазона на листе: " & Cells.SpecialCells(xlLastCell).Address
    End Sub

    Выделяем диапазон ячеек в столбцах с А по С, определяя последнюю ячейку по столбцу A этого же листа:

    Sub SelectToLastCell()
        Range("A1:C" & Cells(Rows.Count, 1).End(xlUp).Row).Select
    End Sub

    Копируем ячейку B1 в первую пустую ячейку столбца A этого же листа:

    Sub CopyToFstEmptyCell()
        Dim lLastRow As Long
        lLastRow = Cells(Rows.Count, 1).End(xlUp).Row 'определили последнюю заполненную ячейку
        Range("B1").Copy Cells(lLastRow+1, 1)         'скопировали В1 и вставили в следующую после определенной ячейки
    End Sub

    А код ниже делает тоже самое, но одной строкой — применяется Offset и используется тот факт, что изначально методом End мы получаем именно ячейку, а не номер строки(номер строки мы получаем позже через свойство .Row):

    Sub CopyToFstEmptyCell()
        Range("B1").Copy Destination:=Cells(Rows.Count, 1).End(xlUp).Offset(1)
    End Sub

    Range(«B1»).Copy — копирует ячейку В1. Если для аргумента Destination указать другую ячейку, то в неё будет вставлена скопированная ячейка. Мы передаем в этот аргумент определенную методом End ячейку
    Cells(Rows.Count, 1).End(xlUp) — возвращает последнюю заполненную ячейку в столбце А (не строку, а именно ячейку)
    Offset(1) — смещает полученную ячейку на строку вниз
    Используем инструмент автозаполнение(протягивание) столбца В, начиная с ячейки B2 и определяя последнюю ячейку для заполнения на основании столбца А

    Sub AutoFill_B()
        Dim lLastRow As Long
        lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
        Range("B2").AutoFill Destination:=Range("B2:B" & lLastRow)
    End Sub

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

    Так же см.:
    Как получить последнюю заполненную ячейку формулой?
    Как определить первую заполненную ячейку на листе?
    Что такое переменная и как правильно её объявить?


    Статья помогла? Поделись ссылкой с друзьями!

      Плейлист   Видеоуроки


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

    

    Access
    apple watch
    Multex
    Power Query и Power BI
    VBA управление кодами
    Бесплатные надстройки
    Дата и время
    Записки
    ИП
    Надстройки
    Печать
    Политика Конфиденциальности
    Почта
    Программы
    Работа с приложениями
    Разработка приложений
    Росстат
    Тренинги и вебинары
    Финансовые
    Форматирование
    Функции Excel
    акции MulTEx
    ссылки
    статистика

    Like this post? Please share to your friends:
  • Конец строки excel формула
  • Конец строки excel на английском
  • Конец строки excel 2016
  • Конец месяца vba excel
  • Конец месяца excel на английском