Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 13.06.2011
Сообщений: 10

Корректная замена точки на запятую в текстовом файле

13.06.2011, 12:46. Показов 6704. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть проблема перевода формата в текстовом файле.

исходная колонка имеет текстовый формат и значение 6 знаков до точки и 5 нулей после точки - <CLOSE>
184245.00000

макрорекодером записал корректную замену точки ни запятую и перевод колонки в формат числовой, при замене точки на запятую 5 нулей отбрасываются - это корректная замена. Но при повторном прогоне макроса замена точки на запятую вызывает не отбрасывание 5 нулей, а их прибавление - <CLOSE>
18 424 500 000

Вот кусок кода:
Visual Basic
1
2
3
4
5
6
7
  Columns("E:i").Select
   
    Selection.Replace What:=".", Replacement:=";", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Columns("E:i").Select
    Selection.NumberFormat = "#,##0_ ;[Red]-#,##0 "
Буду очень признателен за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.06.2011, 12:46
Ответы с готовыми решениями:

В текстовом файле заменить точку на запятую, а запятую на многоточие
Доброго времени суток! есть задание: в текстовом файле заменить точку на запятую, а запятую на ...(три точки) как открыть файл знаю, а вот...

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

замена точки на запятую?
Вот написал такой код для считывания файла ы потом вывода по нем графика. но проблема в том, что числа в файле записаны с использованием...

6
2061 / 490 / 134
Регистрация: 13.11.2008
Сообщений: 935
13.06.2011, 12:55
Может так?
Visual Basic
1
2
3
Columns("E:i").Replace What:=".", Replacement:=",", LookAt:=xlPart, _
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
 ReplaceFormat:=False
1
1 / 1 / 0
Регистрация: 13.06.2011
Сообщений: 10
13.06.2011, 13:01  [ТС]
Цитата Сообщение от The_Prist Посмотреть сообщение
Может так?
Visual Basic
1
2
3
Columns("E:i").Replace What:=".", Replacement:=",", LookAt:=xlPart, _
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
 ReplaceFormat:=False
нет, результат такой же:
<CLOSE>
18 424 500 000

а должно получиться 184 245, во всяком случае когда ручками записывал макрорекодер результат был такой.
Такое ощущение, что VBA не правильно воспринимает результат команды Replacement
0
2061 / 490 / 134
Регистрация: 13.11.2008
Сообщений: 935
13.06.2011, 13:24
Давайте тогда определяться, как именно Вы данные получаете и где они расположены. Раз они в виде теста, то как вариант:
Visual Basic
1
2
3
Columns("E:i").Replace What:=".*", Replacement:="", LookAt:=xlWhole, _
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
 ReplaceFormat:=False
Сработает в том случае, если в ячейке только эти числа. или удалять так, если всегда именно 5 нулей:
Visual Basic
1
2
3
Columns("E:i").Replace What:=".00000", Replacement:="", LookAt:=xlPart, _
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
 ReplaceFormat:=False
1
1 / 1 / 0
Регистрация: 13.06.2011
Сообщений: 10
13.06.2011, 16:19  [ТС]
громадное спасибо, все получилось по первому варианту.

Но все-равно на будущее не понятно почему применение replacement с запятой вызывает изменение формата данных.
0
2061 / 490 / 134
Регистрация: 13.11.2008
Сообщений: 935
13.06.2011, 16:27
Если изменять вручную - то Excel попутно определяет тип данных, который получился в ячейке в результате замены и сам меняет формат ячейки, убирая запятую(если после неё нет значащих чисел) и выставляя формат ячеейки Общий или Числовой.
Если же замена произведена через макрос, то Excel почему-то уже не отслеживает подобное изменение и формат ячеек не изменяется, как и данные. Вот и получается, что тупо убирается запятая без каких либо других преобразований. Т.е. замена происходит "по-честному". Я бы отнес это скорее к плюсам, чем к минусам. Хотя некоторую сумятицу в понимание вносит...
1
1 / 1 / 0
Регистрация: 13.06.2011
Сообщений: 10
13.06.2011, 17:10  [ТС]
Цитата Сообщение от The_Prist Посмотреть сообщение
Если изменять вручную - то Excel попутно определяет тип данных, который получился в ячейке в результате замены и сам меняет формат ячейки, убирая запятую(если после неё нет значащих чисел) и выставляя формат ячеейки Общий или Числовой.
Если же замена произведена через макрос, то Excel почему-то уже не отслеживает подобное изменение и формат ячеек не изменяется, как и данные. Вот и получается, что тупо убирается запятая без каких либо других преобразований. Т.е. замена происходит "по-честному". Я бы отнес это скорее к плюсам, чем к минусам. Хотя некоторую сумятицу в понимание вносит...
спасибо за доходчивый ответ ))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.06.2011, 17:10
Помогаю со студенческими работами здесь

Замена точки на запятую
Как в строке заменить все символы точки на запятую (если таковые имеются)?var CurrentVersion : string; ... CurrentVersion := '6.1';

Замена точки на запятую в TextBox
Как заменить в, допустим, текстбоксе запись 0.4 на 0,4, то есть заменить точку на запятую?

Замена символов точки на запятую
Здравствуйте всем! Суть: меняю точку на запятую, при этом макрорекодером пишется код. Замена происходи удачно. После, использую...

Замена точки на запятую в столбце
записывался макрос, который во всём столбце заменяет точку на запятую: Columns(&quot;J:J&quot;).Select Selection.Replace...

Калькулятор из одного действия - замена точки на запятую
Люди кто знает как в этом примере разобраться? void __fastcall TForm2::LabeledEdit1Change(TObject *Sender) { double a; if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru