bmcvicker
New Member
- Joined
- Nov 25, 2008
- Messages
- 2
-
#1
Hi there,
I’ve been struggling for a few hours now trying to sort this problem. I have multiple rows of data that have been entered into excel cells using Alt + Enter. This has created a situation where I have multiple rows in each cell. I need to separate these out and I’ve tried various extraction methods but none of them (Text to Columns, Replace or VBA) seem to recognise the character that Alt + Enter is using.
It works, if I use a modified excel formula for finding first word, last word, nth word etc from a cell and I insert an Alt + Enter for the character I want to find. For the nth word I need to add a whole section to the formula and it is getting too cumbersome especially with Alt + Enter breaks through it and up to 15 rows in a cell. There is a VBA function that could do the trick (replacing the spaces it looks for with Alt + Enters) but it doesn’t recognise the Alt + Enters as Chr(13)’s or vbCrLf’s in the spreadsheet.
Any ideas on how I can find these Alt + Enters in VBA and use them in the function or replace them so I can separate this data out?
Thanks,
Brian
Excel Facts
Can you sort left to right?
To sort left-to-right, use the Sort dialog box. Click Options. Choose «Sort left to right»
Blade Hunter
Well-known Member
- Joined
- Mar 13, 2008
- Messages
- 3,147
-
#2
13 I believe
Edit: Make that 10
Go into Excel, enter it into a cell
Type this in the debug window of the VBE:
?asc(activecell.Text)
Excel can recognise this in formulas too:
=SUBSTITUTE(A1,CHAR(10),»») will replace the Alt-Enter’s with nothing.
Last edited: Nov 25, 2008
Andrew Fergus
MrExcel MVP
- Joined
- Sep 9, 2004
- Messages
- 5,452
- Office Version
-
- 365
- 2021
- 2016
- Platform
-
- Windows
-
#3
Hi and welcome to MrExcel!
Alt+Enter = character 10.
To substitute these out of the text using an Excel formula, try this:
=SUBSTITUTE(A1,CHAR(10),»,»)
where the raw data is in cell A1.
Andrew
bmcvicker
New Member
- Joined
- Nov 25, 2008
- Messages
- 2
-
#4
Thanks Andrew, CHAR(10) worked in the formula.
Cheers,
Brian
Peter_SSs
MrExcel MVP, Moderator
- Joined
- May 28, 2005
- Messages
- 59,294
- Office Version
-
- 365
- Platform
-
- Windows
Similar threads
This post will explain that how to find Alt + Enter characters or line breaks in the range of cells and then replace it with space character or other specific characters in excel.
When you want to create a line break in a cell in excel, you just need to press Alt + Enter keys. So you can insert one or more line breaks in a cell to make the contents easier to read.
You can use the Find and Replace function to replace all Alt +Enter with space character. Or you can use the VBA Macro code to achieve the same result quickly.
Find and Replace Line Break (Alt+Enter) with Space using Find and Replace Function
If you want to find a line break and then replace it with a space character, just do the following steps:
#1 select the cells that you want to find and replace
#2 go to HOME tab, click Find&Select command under Editing group, and click Replace… menu from the drop down list or just press Ctrl +H keys to open the Find and Replace dialog box.
#3 click in the Find what text box, press Ctrl +J to enter the line break.
#4 click in the Replace with text box, type a space character or other characters as you need.
#5 Click Replace All to replace the line breaks with space characters.
Find and Replace Line Break with Space using VBA
You can write an Excel VBA Macro to find alt +enter and then replace it with a space character, following these steps:
#1 click on “Visual Basic” command under DEVELOPER Tab.
#2 then the “Visual Basic Editor” window will appear.
#3 click “Insert” ->”Module” to create a new module.
#4 paste the below VBA code into the code window. Then clicking “Save” button.
Sub ReplaceAltEnter() Dim fRange As Range On Error Resume Next Set fRange = Application.InputBox("Select the range of Cells:", "Replace Alt Enter", Selection.Address, , , , , 8) If fRange Is Nothing Then Exit Sub fRange.WrapText = False fRange.Replace Chr(10), " ", xlPart, xlByColumns End Sub
#5 back to the current worksheet, then run the above excel macro. Click Run button.
#6 select the range of cells that you want to find, click OK.
#7 Let’s see the result.
I have a VBA Macro for relacing a word with another one in Excel.
Call CharactersReplace(xRg, "Test1", "Test2", True)
It is working nicely but I want to do Alt+Enter on the cell of Excel (instead of Test2).
Literally I want to do the line wrap within the cell.
Example:
From: Hey How are you? Test1 Bla Bla
To: Hey How are you?
Bla Bla
There is a code on VBA to do it? I tried to do CHA(10) etc. but they are not working.
asked Mar 20, 2019 at 13:10
2
The vbLf
or Chr(10)
is the equivalent of a line break whithin a cell. So the following should work:
Call CharactersReplace(xRg, "Test1", vbLf, True)
Also make sure that .WrapText
of that cell is True
.
eg: Range("A1").WrapText = True
otherwise you will insert a line break but won’t see it.
answered Mar 20, 2019 at 13:22
PᴇʜPᴇʜ
56k9 gold badges49 silver badges73 bronze badges
Alt Enter is known as a manual line break in Excel. It’s what you use when you want to have text show in multiple lines regardless the width of the column. But sometimes you need to insert or remove line breaks (Alt Enter) on a high level. Meaning that there are multiple line breaks you want to insert or remove at once. Firstly, let’s look at the Remove or Replace multiple Line Breaks at once.
Remove or Replace Line Breaks in Excel
The Remove and Replace part can be done with the Find and Replace tool, where the only trick you have to know, is to use the Ctrl+J or Alt+0010 (the 0010 has to be typed in the numeric part of the keyboard) combination in the Find Box.
This gives you a blinking dot that represents a cursor that has dropped by one line and then if you leave the Replace with empty, you will remove the line breaks and if you put Space (or any character you want) in the Replace with box, all your line breaks will be replaced by spaces (or your selected character).
Remove or Replace Line Breaks (Alt+Enter) in Excel with VBA
First of all, this code works with the Selection, so it will only execute on the selected cells. And the other thing is, this code turns off the Wrap Text command. More or less this is done so you can easily see the effect of the code but it’s also there for practical reasons. If you don’t like that, just comment out the second line of code. The code itself is very simple and actually utilizes the Excels Find and Replace Tool. The Remove VBA is very simple…
Sub RemoveLineBreak() Selection.WrapText = False 'Removing Wrap Text Selection.Replace What:=Chr(10), Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub
The replace code is identical except for the Your Text Here part. So just replace that with the desired replacement text
Sub ReplaceLineBreak() Selection.WrapText = False 'Removing Wrap Text Selection.Replace What:=Chr(10), Replacement:="Your text here", LookAt:=xlPart, _ SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub
But now for the crown jewel of this post… The Separate By line breaks.
Separate By Line Breaks (Alt+Enter) in Excel
The easiest way in Excel is to use the Data/Text to Columns command.
Where in Step 2 of the Wizard, you select Other and again, either use the Ctrl+J or Alt+0010 key combination to insert the line break (Alt+Enter). Same as in the previous samples, this will give you the blinking cursor dot… But in the data preview you can easily see that this will result in more than One column. Keep in mind that this command will behave the same as it always does, even if you separate by line breaks. It will overwrite any data in those columns.
Click Finnish and you get
Simply brilliant but still over 4 clicks J. That brings us to the VBA part…
Separate By Line Breaks in Excel with VBA
So the code just simulates the above command (Data/Text To Columns) but with less effort on your part. It’s very important that you realize, that this code (although in full working state) is only the center piece, there’s a lot of error handling and loss of data warnings that you must put in place for this code to be “all it can be”. It goes without saying that in our AddIn, all those safeties are in place. The only safety in this case is some error handling if the data would have to be written out of bounds. Here is the code.
Sub SeperateBy() On Error Resume Next Application.DisplayAlerts = False Set Rng2 = Range(Selection.Item(1).Address) Selection.TextToColumns Destination:=Rng2, DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Other:=True, OtherChar:=Chr(10), FieldInfo _ :=Array(1, 1), TrailingMinusNumbers:=True If Err.Number = 1004 Then ui = MsgBox("You will now stop the execution of the code", vbOKOnly) If ui = vbOK Then Application.ScreenUpdating = True Exit Sub End If End If Application.DisplayAlerts = True End Sub
And with this, we are one step closer to eternal happiness.
And also, if there is a command or a functionality that you miss in Excel, write it in the comment section bellow or give me a shout over the contact form, and I will write about it in one of the next posts on Excel Unplugged. J.
Boris05036 Пользователь Сообщений: 42 |
Доброго времени суток! На листе в ячейке A1 запись в две строки. При ее записи весь текст сливается в одну строчку. |
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Пока попробуйте в формате ячейки или на ленте поставить галочку/нажать кнопку «переносить текст». Изменено: Jack Famous — 16.01.2018 14:28:47 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
Boris05036 Пользователь Сообщений: 42 |
Jack Famous, ладно, понял в чем беда, сначала пошагово, что я хочу |
sokol92 Пользователь Сообщений: 4445 |
#4 16.01.2018 13:48:12 Уважаемый Boris05036! В Excel замечательная среда программирования, в которой можно очень быстро проверять различные гипотезы, в частности Вашу.
Мы видим, что в случае, когда ячейка A1 является многострочной, ячейка A2 также является многострочной (знак vblf никуда не исчезает). Владимир |
||
Boris05036 Пользователь Сообщений: 42 |
sokol92, спасибо, вы прав (видимо я уже перегрелся), я понял, но проблема остается, дополню в итоге данная ячейка уходит затем в htmlbody (outlook) и видимо для него vbLf вещь непонятная В сообщение вставка происходит с использованием переменной vba Изменено: Boris05036 — 16.01.2018 13:52:57 |
RAN Пользователь Сообщений: 7091 |
Excel, он, конечно, умный, но самостоятельно параметр «перенос текста» в ячейках изменять не умеет. |
Апострофф Пользователь Сообщений: 720 |
#7 16.01.2018 14:15:29
один из вариантов(а может и оба) он должен понять… Изменено: Апострофф — 16.01.2018 14:16:05 |
||||||
Boris05036 Пользователь Сообщений: 42 |
#8 16.01.2018 14:21:26
ни один не понял, но спасибо за идею, как-то я сразу недоехал, переменная ведь все равно текстовая, так работает
|
||||
sokol92 Пользователь Сообщений: 4445 |
#9 16.01.2018 14:26:56 Для более сложных случаев есть метод PublishObjects.Add Владимир |
Часто требуется внутри одной ячейки Excel сделать перенос текста на новую строку. То есть переместить текст по строкам внутри одной ячейки как указано на картинке. Если после ввода первой части текста просто нажать на клавишу ENTER, то курсор будет перенесен на следующую строку, но другую ячейку, а нам требуется перенос в этой же ячейке.
Это очень частая задача и решается она очень просто — для переноса текста на новую строку внутри одной ячейки Excel необходимо нажать ALT+ENTER (зажимаете клавишу ALT, затем не отпуская ее, нажимаете клавишу ENTER)
Содержание
- 1 Как перенести текст на новую строку в Excel с помощью формулы
- 1.1 Как в Excel заменить знак переноса на другой символ и обратно с помощью формулы
- 1.2 Как поменять знак переноса на пробел и обратно в Excel с помощью ПОИСК — ЗАМЕНА
- 1.3 Как поменять перенос строки на пробел или наоборот в Excel с помощью VBA
- 1.4 Коды символов для Excel
Как перенести текст на новую строку в Excel с помощью формулы
Иногда требуется сделать перенос строки не разово, а с помощью функций в Excel. Вот как в этом примере на рисунке. Мы вводим имя, фамилию и отчество и оно автоматически собирается в ячейке A6
Для начала нам необходимо сцепить текст в ячейках 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
Рассмотрим на примере, что на картинке выше. Итак, в ячейке B1 прописываем функцию ПОДСТАВИТЬ:
=ПОДСТАВИТЬ(A1;СИМВОЛ(10);» «)
A1 — это наш текст с переносом строки;
СИМВОЛ(10) — это перенос строки (мы рассматривали это чуть выше в данной статье);
» » — это пробел, так как мы меняем перенос строки на пробел
Если нужно проделать обратную операцию — поменять пробел на знак (символ) переноса, то функция будет выглядеть соответственно:
=ПОДСТАВИТЬ(A1;» «;СИМВОЛ(10))
Напоминаю, чтобы перенос строк правильно отражался, необходимо в свойствах ячеек, в разделе «Выравнивание» указать «Переносить по строкам».
Как поменять знак переноса на пробел и обратно в Excel с помощью ПОИСК — ЗАМЕНА
Бывают случаи, когда формулы использовать неудобно и требуется сделать замену быстро. Для этого воспользуемся Поиском и Заменой. Выделяем наш текст и нажимаем CTRL+H, появится следующее окно.
Если нам необходимо поменять перенос строки на пробел, то в строке «Найти» необходимо ввести перенос строки, для этого встаньте в поле «Найти», затем нажмите на клавишу ALT, не отпуская ее наберите на клавиатуре 010 — это код переноса строки, он не будет виден в данном поле.
После этого в поле «Заменить на» введите пробел или любой другой символ на который вам необходимо поменять и нажмите «Заменить» или «Заменить все».
Кстати, в Word это реализовано более наглядно.
Если вам необходимо поменять символ переноса строки на пробел, то в поле «Найти» вам необходимо указать специальный код «Разрыва строки», который обозначается как ^l
В поле «Заменить на:» необходимо сделать просто пробел и нажать на «Заменить» или «Заменить все».
Вы можете менять не только перенос строки, но и другие специальные символы, чтобы получить их соответствующий код, необходимо нажать на кнопку «Больше >>», «Специальные» и выбрать необходимый вам код. Напоминаю, что данная функция есть только в 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
Ниже на картинке обозначены различные символы и соответствующие им коды, несколько столбцов — это различный шрифт. Для увеличения изображения, кликните по картинке.