2016-03-24 4 views
2

У меня есть столбец полностью с номерами (форматированный в целом), который выглядит следующим образомУдалить точки из числа Excel VBA

| 2.500,00 | 
| 70,2  | 
| ...  | 

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

| 2500,00 | 
| 70,2 | 
| ...  | 

, но когда я делаю это с помощью следующей строки:

Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False 

он также удаляет запятые в клетке, не найти точку, результат выглядит следующим образом:

| 2500,00 | 
| 702  | 
| ...  | 

Я не понимаю, что происходит, поскольку формат ячейки остается общим, любой ключ от того, почему это произошло, оценено. Благодаря!

+0

Это вопрос культуры. Вы используете запятую как разделитель десятичной дроби, но Excel, похоже, настроен на использование точки в качестве десятичного разделителя. –

+0

Если вы используете Excel 2013 или новее, взгляните на функцию «NUMBERVALUE». –

+0

Да, я получаю файл из США, и я редактирую во Франции, но я попытался изменить форматирование, и он не работает, и вопрос о том, почему работает вручную, все еще существует – user3540466

ответ

2

Вам нужно изменить десятичный разделитель, используемый в Excel, вместо запятой, а не точки, чтобы соответствовать вашим данным.

Скопировано от Microsoft: Change the character used to separate thousands or decimals

Нажмите кнопку Office, Microsoft Office, изображения кнопки, а затем нажмите кнопку Параметры Excel.

На вкладке «Дополнительно» в разделе «Параметры редактирования» снимите флажок «Использовать системные разделители».

Напечатайте новые разделители в разделителях Десятичных разделителей и Тысячи сепараторах.

СОВЕТ. Если вы хотите снова использовать системные разделители, установите флажок Использовать системные разделители.

ПРИМЕЧАНИЕ. Для постоянного решения необходимо изменить региональные настройки на панели управления.

ДРУГОЕ РЕШЕНИЕ:

На самом деле то, что я обычно делаю это просто использовать формулу, чтобы удалить точки и преобразовать запятые расставить все точки. Затем используйте форматирование, чтобы показать номер, какой вы хотите.

=VALUE(SUBSTITUTE(SUBSTITUTE(A1,".",""),",",".")) 
+0

было бы здорово показать решение в VBA, чтобы временно изменить эту функцию, а затем включить ее (если необходимо), чтобы OP мог реализовать ее прямо в своем коде. –

+0

это сделало это, поскольку @ScottHoltzman говорит, что мне нужно будет реализовать его в макросе, которое я еще не понял. Тем не менее, теперь у меня есть множество пробелов перед самим номером и только в некотором – user3540466

+0

. Я хочу сохранить запятую как десятичный разделитель, так почему бы мне изменить ее на точку? – user3540466

1

Используйте десятичный разделитель, определяемый приложением вместо:

Selection.Replace What:=Application.DecimalSeparator, Replacement:="", LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False 
Смежные вопросы