Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
29.04.2015, 17:48
|
|||
---|---|---|---|
|
|||
Замена точки на запятую в excel 2010 |
|||
#18+
Наверняка это обсуждалось, но не могу найти. Разделитель разрядов - запятая. В ячейке число 1234,456. Записываю макрос замены точки на запятую. При записи макроса Excel выдает сообщение о том, что заменять нечего. Это верно. Теперь запускаю записанный макрос. Код: vbnet 1. 2.
и получаю 1234456. Как с этим бороться? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2015, 17:56
|
|||
---|---|---|---|
|
|||
Замена точки на запятую в excel 2010 |
|||
#18+
Есть значение, которое хранится в ячейке (числовое), а есть его отображение (форматирование) Не очень понятно, чего вы хотите добиться в итоге. Превратить число в текст? Текст в число? Изменить формат отображения чисел? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2015, 17:56
|
|||
---|---|---|---|
|
|||
Замена точки на запятую в excel 2010 |
|||
#18+
SevolodВ ячейке число 1234,456.В ячейке может быть число, а может быть текст, зависит от обстоятельств, как оно туда попало. Лучше приложите файл и объясните, чего надо добиться ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2015, 18:01
|
|||
---|---|---|---|
|
|||
Замена точки на запятую в excel 2010 |
|||
#18+
Shocker.Pro, я хочу, чтобы со значением в этой ячейке ничего не произошло. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2015, 18:06
|
|||
---|---|---|---|
|
|||
Замена точки на запятую в excel 2010 |
|||
#18+
Sevolodхочу, чтобы со значением в этой ячейке ничего не произошло.Хорошее пожелание. Если с ячейкой ничего не будете делать, то ничего и не произойдет - в чем проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2015, 19:53
|
|||
---|---|---|---|
|
|||
Замена точки на запятую в excel 2010 |
|||
#18+
Shocker.Pro, запускаю макрос, который находится в книге, приложенный к предыдущему сообщению. Предполагается, что макрос поменяет точку на запятую. Так как разделитель разрядов = ",", а в этой ячейке число, то макрос, казалось бы, не должен ничего сделать. Однако он меняет содержимое ячейки. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2015, 20:39
|
|||
---|---|---|---|
Замена точки на запятую в excel 2010 |
|||
#18+
Sevolodи получаю 1234456. Как с этим бороться?Попробуйте заменять точку на точку. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2015, 21:53
|
|||
---|---|---|---|
|
|||
Замена точки на запятую в excel 2010 |
|||
#18+
Еще раз - чего требуется добиться? В конечном итоге. Если требуется добиться, чтобы в ячейке ничего не менялось, не запускайте макрос. Если требуется замена в других ячейках, не включайте эту ячейку в область замены. Макрос с числами работает в американском формате. То есть разделитель десятичных разрядов - точка, а запятая - разделитель тысяч. В итоге, макрос убирает десятичный разделитель (запятая не играет роли для получения числа) и кладет число обратно в ячейку. Там оно уже форматируется в соответствии с национальными стандартами. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2015, 22:16
|
|||
---|---|---|---|
|
|||
Замена точки на запятую в excel 2010 |
|||
#18+
Sevolodполучаю 1234456. Как с этим бороться? Я бы попробовал так: (1) Считать значение из ячейки в строковую переменную. (2) В строковой переменной (а не в ячейке) поменять точку на запятую. (3) Преобразовать полученную строку в число. (4) Записать получившееся значение обратно в ячейку. Хотя это, конечно, "костыли":). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2015, 22:38
|
|||
---|---|---|---|
|
|||
Замена точки на запятую в excel 2010 |
|||
#18+
The_Prist, ну да. Получилось, меняя точку на точку. А это где-нибудь описано в документации по Экселю? Есть ли ограничения у такого странного на вид метода? Shoker.Pro В конечном итоге я хочу, чтобы макрос, который записывается при выборе пункта меню "найти и заменить", работал, как пункт меню "найти и заменить". Shoker.Pro"в итоге, макрос убирает десятичный разделитель (запятая не играет роли для получения числа) и кладет число обратно в ячейку. ". Ну да. Выглядит похоже, но все немного сложнее. Если у числа два знака после запятой, а не три, то замена точки на запятую обычным образом происходит нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2015, 22:42
|
|||
---|---|---|---|
|
|||
Замена точки на запятую в excel 2010 |
|||
#18+
uux, ну да, наверное, такие костыли помогут. Но, во-первых, - дело в скорости. Во-вторых, хочется на будущее понять - почему такие проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2015, 23:36
|
|||
---|---|---|---|
|
|||
Замена точки на запятую в excel 2010 |
|||
#18+
SevolodShoker.Pro В конечном итоге я хочу, чтобы макрос, который записывается при выборе пункта меню "найти и заменить", работал, как пункт меню "найти и заменить".мы уже выяснили, что этого не происходит. И это - не первый случай, когда записанный макрос не работает точно так же, как действия пользователя при его записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.04.2015, 07:12
|
|||
---|---|---|---|
|
|||
Замена точки на запятую в excel 2010 |
|||
#18+
Sevoloduux, ну да, наверное, такие костыли помогут. Но, во-первых, - дело в скорости. Во-вторых, хочется на будущее понять - почему такие проблемы. Почему такие проблемы - понятно, это явный глюк Экселя (вот эта вот ваша фраза прекрасно это иллюстрирует): SevolodЕсли у числа два знака после запятой, а не три, то замена точки на запятую обычным образом происходит нормально. А с глюками бороться можно или обходными технологиями (они же "костыли"), или шаманством с бубном и заячьей лапкой (это про предложенный The_Prist метод замены точки на точку), больше особо вариантов нет. На то они и глюки:). Про "дело в скорости" - не уверен, что предложенные мной костыли работают медленнее, чем стандартная автозамена, и даже если это действительно так, что это замедленее будет хоть как-то заметно на вашей задаче. Другое дело, что это потребует написания некоторого кода, и, если замена точки на точку устраивает, то действительно - зачем заморачиваться? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.04.2015, 12:58
|
|||
---|---|---|---|
Замена точки на запятую в excel 2010 |
|||
#18+
Это не глюк. Это документированная особенность. VBA использует региональные разделители групп разрядов и целой и дробной части, принятые для USA. А там разделитель групп разрядов запятая, а разделитель целой и дробной части - точка. И следует отметить, что реализация метода Replace на уровне VBA и на уровне вызванной через Ctrl+H формы различается. В момент замены(после того как символ уже заменен) Excel пытается определить тип данных в ячейке. Если это число(даже записанное как текст) - Excel пытается его преобразовать в реальное число, применив установленные разделители. Если быть более точным - то такое преобразование происходит при любом изменении в ячейке с установленным для ячейки числовым или общим форматом(ну и даты). Осуществляется это отдельной "внутренней" процедурой(так назовем). Если грубо описать процесс: Вызывая напрямую из Excel метод Replace - в эту внутреннюю процедуру передается локализация для приложения Excel. В Вашем случае русская. И во внутреннюю процедуру передаются разделители, установленные для Excel. А вызывая из VBA - передается локализация VBA(это все же другое приложение, встроенное в Excel). А у VBA она как правило всегда англ.USA. И используемые им разделители. Таким образом вот что происходит при замене через Excel(Ctrl+H): -он находит точку, меняет её на запятую. Проверяет в соответствии с установленными разделителями является ли полученный текст числом. Если да - преобразует. Вас это устраивает, т.к. никакого расхождения с логикой пользователя не происходит. Что происходит при вызове метода из VBA: -он заменяет корректно точку на запятую, но в этот же момент Excel пытается определить тип полученного значения, но уже не учитывая установленную локализацию, а опирается только на принятые для VBA(т.к. в процедуру переданы разделители, установленные для него). Поэтому запятую он считает разделителем групп разрядов и тем самым "съедает" часть дробную. Таким образом происходит эта оказия именно потому, что метод Replace передает во внутреннюю процедуру "приложение", которое его вызвало и использует его локализацию. Как-то так... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.04.2015, 13:14
|
|||
---|---|---|---|
|
|||
Замена точки на запятую в excel 2010 |
|||
#18+
The_Prist, интересно. А можете привести фрагмент документации, где об этом сказано? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=61&mobile=1&tid=2173516]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 129ms |
0 / 0 |