powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
23 сообщений из 23, страница 1 из 1
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37747966
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При выполнении команды над числами с десятичной частью
Код: vbnet
1.
ActiveSheet.Range("a1:a" & 10).Replace What:=".", Replacement:="", LookAt:=xlPart


в итоге вместо точки "." - заменяется на пусть ... запятая. т.е. суслика не видно,а он есть!

т.е. вместо 1 111,11 становится 111 111,00


кстати, запятую искать бесполезно - ее нет. А Обычная ручная замена ctrl+h работает как подсказывает логика

на 2010 и в 2003 эффект повторяется
файл-пример прилагаю.

з.ы.
это мне сперва txt-файл давали (с расширением xls),в котором числа были отформатированы и сохранены как текст. т.е. были с точками в качестве разделителя "1.111,11". Потому граждане стали присылать и нормальные xls-файл, в котором числа были как числа с но форматированием, а код-то замены точки на пусто остался - в итоге все увеличилось в 100 раз.
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748022
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так?
Код: vbnet
1.
ActiveSheet.Range("a1:a" & 10).Value.Replace
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748041
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у Value метода Replace быть не может (этож не vb.net)
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748059
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senin Viktor, Ой, прошу прощения, я еще спал, когда писал ))))
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748134
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Senin Viktor

Ничего не понял. Ты удаляешь из чисел признак дробной части(запятую) естественно из-за этого числа как-бы умножаются на
100. Для отображения у тебя стоит формат "Показывать два знака после запятой", что и делается.

Какая задача стоит?

P.S. Кстати по Ctrl+H результат аналогичный.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748159
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Копайте в сторону региональных настроек отображения десятичного разделителя. то что в ячейке вы видите число "1111,11" еще не значит что это действительно так. я вот открыл файл и вижу "-1744444.18" и т.д. Меняю "несуществующую" точку и вполне логично получаю что все увеличилось в 100 раз.
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748175
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос> Автор: Senin Viktor

Ничего не понял. Ты удаляешь из чисел признак дробной части(запятую) естественно и"


Я удаляю ТОЧКУ, и далее, неестественно, исчезает ЗАПЯТАЯ
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748214
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич АлександрКопайте в сторону региональных настроек отображения десятичного разделителя. то что в ячейке вы видите число "1111,11" еще не значит что это действительно так. я вот открыл файл и вижу "-1744444.18" и т.д. Меняю "несуществующую" точку и вполне логично получаю что все увеличилось в 100 раз.


В вашем случае -1744444.18 , попытайтесь искать (заменить) запятую на пусто: программно и в ручном режиме. м.б. так поймете


смысл в том,что в ручном режиме у меня не находит в числе -1744444,18 точку (что логично,т.к. ее там нет - разделитель ведь запятая), а программно - находит и заменяет (что не логично).
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748251
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Senin Viktor
> смысл в том,что в ручном режиме у меня не находит в числе -1744444,18 точку (что логично,т.к. ее там нет -
> разделитель ведь запятая), а программно - находит и заменяет (что не логично).

Прочитай коментарий к методу в справке. Там написано, что неуказанные параметры берутся из последних указанных
параметров, если их не указывали, то параметры берутся из настроек диалога поиска и замены. Теперь идем в диалог поиска
и замены и видим, что в варианте замены область поиска только формулы. Дальше идем в IDE VBA и вызываем окно
Wathes, делаем Add Wath и в строке Expression пишем - ActiveSheet.Cells(1, 1) . Дальше раскрываем плюсик и внимательно
изучаем все свойства имя которых начинаются с Formula.

P.S. Рискну предположить, что ексель хранит числа внутри себя с точкой, как тяжёлое наследие иностранного рождения, а
показывает так как хочет пользователь, как результат хорошего воспитания.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748257
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может дело в том, что в VBA десятичный разделитель всегда "."?
"Использовать системный разделитель" галочка стоит в настройках Excel?
VBA все равно что там в Excel c разделителями.
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748278
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот как узнать разделитель в VBA
Код: vbnet
1.
2.
3.
Sub sep()
MsgBox Mid$(1 / 3, 2, 1)
End Sub
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748416
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич Александрвот как узнать разделитель в VBA
Код: vbnet
1.
2.
3.
Sub sep()
MsgBox Mid$(1 / 3, 2, 1)
End Sub



Лучше так Application.International(xlDecimalSeparator)
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748426
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senin Viktor,
Или так :)

Код: vbnet
1.
2.
Const SReg = "HKEY_CURRENT_USER\Control Panel\International\"
sDecimal = CreateObject("WScript.Shell").RegRead(SReg & "sDecimal")
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748477
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос> Автор: Senin Viktor
> смысл в том,что в ручном режиме у меня не находит в числе -1744444,18 точку (что логично,т.к. ее там нет -
> разделитель ведь запятая), а программно - находит и заменяет (что не логично).

Прочитай коментарий к методу в справке. Там написано, что неуказанные параметры берутся из последних указанных
параметров, если их не указывали, то параметры берутся из настроек диалога поиска и замены. Теперь идем в диалог поиска
и замены и видим, что в варианте замены область поиска только формулы. Дальше идем в IDE VBA и вызываем окно
Wathes, делаем Add Wath и в строке Expression пишем - ActiveSheet.Cells(1, 1) . Дальше раскрываем плюсик и внимательно
изучаем все свойства имя которых начинаются с Formula.

P.S. Рискну предположить, что ексель хранит числа внутри себя с точкой, как тяжёлое наследие иностранного рождения, а
показывает так как хочет пользователь, как результат хорошего воспитания.



ActiveCell(1,1).Formula="-1744444.18"
ActiveCell(1,1).FormulaLocal="-1744444,18"

Вопрос (риторический): где ищет ручной поиск, а где программный? Причем программный поиск,как вы правильно заметили, использует ту же область поиска (формулы/значения/примечания) заданного в ручном и не настраивается (//что вообще странно).
Т.е. получается ручной поиск ищет в FormulaLocal, программный в Formula.
и об этом нигде ни слова, и исправить это с(т)ранное поведение replace никак нельзя. И поэтому, ища запятую, екцель находит точку.

з.ы.
Есно, глупо искать в числе (числовом значении) точки - ибо это нафиг не нужно. Но вот у меня совпало так, что там,взависимости от типа файла, м.б. и текст со всякими точками.
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748481
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R DmitrySenin Viktor,
Или так :)

Код: vbnet
1.
2.
Const SReg = "HKEY_CURRENT_USER\Control Panel\International\"
sDecimal = CreateObject("WScript.Shell").RegRead(SReg & "sDecimal")



В екцеле раньше (до 2003 включительно) можно было задать разделитель, отличный от системного (виндовского). У меня некоторые, гммм, пользователю этим баловались. А ваш алгоритм - только системные берет.
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748489
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senin ViktorДиклевич Александрвот как узнать разделитель в VBA
Код: vbnet
1.
2.
3.
Sub sep()
MsgBox Mid$(1 / 3, 2, 1)
End Sub



Лучше так Application.International(xlDecimalSeparator)
Это разделитель Excel, что не всегда одно и то же что и разделитель в VBA.
Я привел для VBA.
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748500
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senin Viktor,

Повторюсь: десятичный разделитель Excel в общем случае не равен десятичному разделителю VBA. Это же относится и к датам. Будьте внимательны!
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748518
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич Александр,

PS. Даже использование системных разделителей в Excel не гарантирует равенства.
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748541
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич АлександрSenin Viktorпропущено...


Лучше так Application.International(xlDecimalSeparator)
Это разделитель Excel, что не всегда одно и то же что и разделитель в VBA.
Я привел для VBA.

Метод Replace объекта Range к VBA отношения не имеет.
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748587
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senin Viktor,

а откуда ж он вызывается как не из VBA?
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748606
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич АлександрSenin Viktor,

а откуда ж он вызывается как не из VBA?

Хоть вызывай этот метод из любого языка VBA, vb.net, дельфи,с# и т.п. логика работы метода replace объекта excel.application.worksheet.Range не изменится.
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748647
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senin Viktor,

Судя по 12398914 , логика все-таки меняется.
...
Рейтинг: 0 / 0
Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
    #37748813
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич АлександрSenin Viktor,

Судя по 12398914 , логика все-таки меняется.

а что там разве написано, что "метод replace объекта excel.application.worksheet.Range " при вызове их разных языков программирования ведет себя по разному?
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Баг в Excel: команда Replасе ищет не то,что в ней задано и ... находит
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]