I am fairly new to VBA and have been writing a script that does certain checks and corrections to Excel-files. I am trying to find a way to replace all commas with dots in the workbook but without success. I have tried using the Replace-method but somehow it screws up my workbook even more. I think the problem has something to do with the local settings for decimal separators.
Row = lRow
lRow = Cells(Rows.Count, 1).End(xlUp).Row
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
Do While Row >= 2
Range("P" & Row).Replace What:=",", Replacement:=".", SearchOrder:=xlByColumns
Row = Row - 1
Loop
Row = lRow
Do While Row >= 2
Range("Q" & Row).Replace What:=",", Replacement:=".", SearchOrder:=xlByColumns
Row = Row - 1
Loop
Row = lRow
The loop is supposed to replace all commas with dots in columns P and Q. But instead of dots dashes appear.
asked Jul 12, 2018 at 6:08
2
your entire shown code should boil down to:
Range("P1:Q" & Cells(Rows.Count, 1).End(xlUp).Row).Replace What:=",", Replacement:=".", SearchOrder:=xlByColumns
answered Jul 12, 2018 at 6:51
DisplayNameDisplayName
13.2k2 gold badges11 silver badges19 bronze badges
I guess you’re trying to change the European decimals format to US decimals format. Like 123.456,00 to 123,456.00. The settings for decimal separators may matter.
If your code doesn’t work, you need to check the original value in the cells. I suggest to compare .Value
, .Value2
and .Text
first.
answered Jul 12, 2018 at 6:59
Bruce HuangBruce Huang
1432 silver badges9 bronze badges
Как показано на левом снимке экрана, как заменить запятые на новые строки в ячейках в Excel? Методы, описанные в этой статье, могут вам помочь.
Замени запятых на новые строки с помощью функции поиска и замены
Замените запятые на новые строки кодом VBA
Замени запятых на новые строки с помощью функции поиска и замены.
Вы можете применить функцию «Найти и заменить», чтобы заменить все запятые в выбранных ячейках символами новой строки. Пожалуйста, сделайте следующее.
1. Выберите ячейки, в которых вы замените все запятые на новые строки. Затем нажмите Главная > Найти и выбрать > Замените. Смотрите скриншот:
Примечание: вы также можете нажать кнопку Ctrl + H , чтобы открыть Найти и заменить диалоговое окно.
2. В дебюте Найти и заменить диалоговое окно и под Замените вкладка, вам необходимо:
2.1 Введите запятую в Найти то, что коробка;
2.2 Нажмите на Замените с коробкой, затем нажмите Ctrl + Shift + J ключи одновременно;
2.3 Щелкните значок Заменить все кнопка. Смотрите скриншот:
3. Затем Microsoft Excel всплывает окно подсказки, нажмите OK кнопку.
4. Закрой Найти и заменить диалоговое окно.
Теперь все запятые в выбранных ячейках заменены новыми строками.
Замените запятые на новые строки кодом VBA
В этом разделе будет представлен код VBA для замены всех запятых в выбранных ячейках на новые строки. Пожалуйста, сделайте следующее шаг за шагом.
1. Выделите ячейки, содержащие запятые, которые необходимо заменить символами новой строки, затем нажмите другой + F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложений окно.
2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. Затем скопируйте и вставьте код VBA в окно кода. Смотрите скриншот:
Код VBA: заменить все запятые в выбранных ячейках символами новой строки
Sub ReplaceComma()
Dim rngCell As Range
For Each rngCell In Selection
rngCell.Value = Replace(rngCell, ",", vbLf)
Next
End Sub
3. нажмите F5 или нажмите кнопку «Выполнить», чтобы запустить код. Затем все запятые в выбранных ячейках немедленно заменяются новыми строками.
Связанная статья:
- Как заменить последнюю запятую на и в ячейках в Excel?
- Как разбить содержимое многострочной ячейки на отдельные строки / столбцы в Excel?
- Как в Excel поместить несколько строк текста в одну ячейку?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (2)
Оценок пока нет. Оцените первым!
A_Qz 31 / 8 / 4 Регистрация: 21.01.2018 Сообщений: 53 |
||||||||
1 |
||||||||
Excel Замена запятой на точку09.12.2018, 11:23. Показов 20213. Ответов 4 Метки нет (Все метки)
Совсем маленький «зацеп». Несколько лет назад все работало как положено. А сегодня перестало.
А вот обратно:
запятая остается. Только содержимое ячейки переводит в текстовый формат, но запятая без изменении. Пробовал предварительно форматировать в текстовый, но ничего. Создается впечатление, где-то в VBA крепко зашита автозамена точки на запятую. Спасибо за объяснение.
1 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
09.12.2018, 11:23 |
4 |
1813 / 1135 / 346 Регистрация: 11.07.2014 Сообщений: 4,002 |
|
09.12.2018, 17:33 |
2 |
Сообщение было отмечено A_Qz как решение РешениеA_Qz, видимо в настройках экселя Пуск — Настройка — Дополнительно стоит галка Использовать системные разделители, а в винде разделитель запятая. Либо исправить в винде, либо здесь убрать галку и в Разделитель … поставить точку.
1 |
A_Qz 31 / 8 / 4 Регистрация: 21.01.2018 Сообщений: 53 |
||||
09.12.2018, 21:51 [ТС] |
3 |
|||
Спасибо за подсказку, убрал галку — «Использовать системные разделители». Win не трогал. Меняет запятую на точку, но только, если в Excel разделитель — запятая, то для того, чтобы была поставлена точка, ячейку обязательно предварительно нужно перевести в текстовый формат:
0 |
Burk 1813 / 1135 / 346 Регистрация: 11.07.2014 Сообщений: 4,002 |
||||||||
10.12.2018, 05:40 |
4 |
|||||||
A_Qz,
Excel разделитель — запятая, то для того, чтобы была поставлена точка, ячейку обязательно предварительно нужно перевести в текстовый формат: Так надо поставить разделитель — точку и всё работает, привожу макросы, на которых проверял
Добавлено через 24 минуты
0 |
A_Qz 31 / 8 / 4 Регистрация: 21.01.2018 Сообщений: 53 |
||||||||
10.12.2018, 18:40 [ТС] |
5 |
|||||||
Это все понятно. Но мне нужно было, что бы при разделителе — запятая, сохранялась после замены точка. С тем, что бы я мог этот файл экспортировать в другие программы, где разделитель — точка. Ход действий был такой: убрал галку «Использовать системные разделители» и поправил код
В этом коде все работает так, как мне надо. sB была определена как String ранее.
Спасибо ещё раз.
0 |
Артём Москвитин Пользователь Сообщений: 46 |
#1 08.02.2022 11:27:32 Здраствуйте уважаемые форумчане, проблема в следующем: в прайс-листе нужно заменить символ , (запятая) на . (точку) в столбцах M, P, T, Поделитесь пожалуйста формулой или макросом, а то работала встала, вот этот макрос почему то не работает, всю голову уже сломал!
Прикрепленные файлы
|
||
отмечаете 3 названных столбца, Ctrl+H Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
Со столбцом M так не получается, он выдаёт не понять что, даже если формат ячеек изменить! |
|
да, умеет Excel на лету преобразовать данные («помочь пользователю»), вы ему 2.3, а он вам в ответ на это 02.03.2022 Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#5 08.02.2022 14:34:56 Артём Москвитин,
верно, если точка является разделителем даты на компе (для русской локали обычно так и есть)
а вот это не так. Excel всё равно преобразует в дату и плевать он хотел на текстовый формат Итого: если нужно изменить, но не получить при этом дату, то только макросом (или добавлять, например, «_» перед данными, чтобы однозначно отнести их к тексту)
Изменено: Jack Famous — 08.02.2022 14:43:25 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
|||||
_Igor_61 Пользователь Сообщений: 3007 |
#6 08.02.2022 15:17:18
Сталкивался, согласен с выводом. |
||
Msi2102 Пользователь Сообщений: 3137 |
#7 08.02.2022 16:04:56
Есть ещё вариант, выделяем столбец в Excel —>Ctrl+C, открываем в Word —> Ctrl+V, —> Ctrl+H с запятой на точку, —>Ctrl+C, возвращаемся в Excel, меняем формат столбца на Текстовый и вставляем только значения. И чудо!!! |
||
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#8 08.02.2022 16:16:50
чудес не бывает. Взрослый дядя, а всё верите Изменено: Jack Famous — 08.02.2022 16:17:16 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
Артём Москвитин Пользователь Сообщений: 46 |
#9 08.02.2022 16:22:46
Макрос случаем не знаете? Макрос который я выложил он работает, но почему то с этим прайсом не хочет! |
||
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#10 08.02.2022 16:32:52
ещё как знаю — как раз писал, раз сказал
Принцип: цикл по всем областям выделенного диапазона; если в области хоть в одной ячейке есть запятая, то меняет формат всей области на текстовый и вставляет значения всей области (заменив перед этим нужные, разумеется) в «подготовленное место» Можно, конечно, ещё выяснять кодом, какие разделители допустимы для даты на устройстве — может и формат менять не придётся, но тогда ещё больше кода будет, да и не для вашего случая Изменено: Jack Famous — 08.02.2022 16:42:40 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
|||
_Igor_61 Пользователь Сообщений: 3007 |
Артем, Вы выложили одну строчку кода а файл xlsx, в таких файлах макросы не живут. Если действительно хотите решить задачу — покажите в файле xlsm что именно и где не так. Не исключено, что дело не в точках и запятых. Если проблема в точках и запятых — внимательно прочитайте #2. Если не поможет — рассказывайте и показывайте что и как не получается. Если уж работаете с макросами, то не исключено, что что-то на проблемный столбец влияет |
Артём Москвитин Пользователь Сообщений: 46 |
#12 08.02.2022 16:39:43
Благодарю Вас, Спасибо большое, всё работает! Кучу времени сэкономили ))) |
||
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Артём Москвитин, пожалуйста — обращайтесь Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
Msi2102 Пользователь Сообщений: 3137 |
#14 08.02.2022 17:00:11
Я ж это не для Вас пишу, что чудо, а чудо для многих по ту сторону экрана, которые сидят и в панике пытаются, что-то сделать, а на форуме никто не отвечает или вставили макрос, один раз попользовались и забыли где он лежит и всё, нужно заново тему создавать на форуме, ведь искать старую никто не будет. А копипастить умеют большее количество людей.
Проще именно для Вас, но не для пользователя, который не знает, что с этим макросом делать и куда его вставлять. |
||||
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#15 08.02.2022 17:19:16
всё он знает — вы вообще читаете тему? Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
Msi2102 Пользователь Сообщений: 3137 |
#16 08.02.2022 17:27:04
А Вы? Первым предложил копипастить Ігор Гончаренко, я лишь предложил вариант который сработает |
||
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#17 08.02.2022 17:53:14
да что вы говорите — ну почитайте ещё раз
и да — выполнить макрос, который мгновенно выдаст результат куда проще, чем копипастить данные между приложениями и производить замены руками Изменено: Jack Famous — 08.02.2022 17:56:20 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||||
Msi2102 Пользователь Сообщений: 3137 |
#18 08.02.2022 18:14:57
Ошибся, нужно было CTRL+H |
||
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Msi2102, это неважно на самом деле Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
Anchoret Пользователь Сообщений: 1059 Anchoret |
#20 09.02.2022 03:34:00 Jack Famous, для обхода Selection Areas не нужны.
|
||
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#21 09.02.2022 08:18:59
спасибо — я в курсе)) Поячеечный перебор — это как раз подход «в лоб» Изменено: Jack Famous — 09.02.2022 08:19:42 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
Я хочу использовать этот код VBA в своем листе, чтобы заменить любые запятые в столбце D с полной остановкой:
ActiveSheet.Columns("D").Replace _
What:=",", Replacement:=".", _
SearchOrder:=xlByColumns, MatchCase:=True
У меня это работало, я уверен, на минуту, но потом это не так! Есть идеи???
2013-07-10 16:17
3
ответа
Вы сказали в комментарии, что вы положили код в Worksheet_SelectionChange
, Вместо этого поместите код в модуль, затем запустите его, когда захотите его использовать. Тогда это будет работать для любого листа.
2013-07-10 16:29
Вы уже заменили все запятые, это не сработает снова.
2013-07-10 16:22
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Columns("D").Replace What:=",", Replacement:=".", SearchOrder:=xlByColumns, MatchCase:=True
End Sub
Это работает так. Не добавляйте «_»
2013-07-10 16:20