Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.12.2007, 15:02   #1
Romuald
Форумчанин
 
Регистрация: 12.11.2007
Сообщений: 209
По умолчанию Поменять точку на запятую

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


6.34607 6,34607
3.30045 3,30045
2.67 2,67
456.01 456,01
1.1 1,1
1234.67209 1234,67209
Romuald вне форума
Старый 17.12.2007, 15:17   #2
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Не думаю, что выделять диапазон есть правильное решение задачи, т.к. это увеличивает код макроса и замедляет его работу
Без выделения диапазона, наверное, так

Код:
Sub Макрос1()
    With Range("A1:A10")
        .Replace What:=".", Replacement:=",", LookAt:=xlPart
    End With
End Sub

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

Код:
Sub Макрос2()
    Range("A1:A10").Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("M13").Select
End Sub
Видите, 2 макроса выполняющий одно и тоже действие. Но первый короче и быстрее

Последний раз редактировалось Pavel55; 17.12.2007 в 17:17.
Pavel55 вне форума
Старый 17.12.2007, 16:36   #3
Romuald
Форумчанин
 
Регистрация: 12.11.2007
Сообщений: 209
По умолчанию

Все получается но некоторые цифры - ?????????

1.19000 1,19
0.01667 0,01667
1.05000 1,05
2.83000 2,83
5.38000 5,38
2.54000 2,54
6.18000 6,18
0.85000 0,85
1.52000 1,52
0.82000 0,82
4.92000 4,92
2.97000 2,97
2.28000 2,28
2.40500 2405.00000
1.94000 1,94
1.77000 1,77
0.84750 0,8475
1.10143 110143.00000
1.16017 116017.00000
0.11867 0,11867
1.39000 1,39
2.46000 2,46
2.46000 2,46
1.27000 1,27
Romuald вне форума
Старый 17.12.2007, 16:45   #4
Alkaline
Пользователь
 
Регистрация: 22.11.2007
Сообщений: 79
По умолчанию

Проверьте, что в системе в качестве разделителя целой и дробной части стоит запятая, а разделителем разрядов является пробел.
Alkaline вне форума
Старый 17.12.2007, 17:40   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если этот вопрос в свете "Сокращения после запятой", то такая замена вряд ли поможет. Если в ячейке с действительным числом, например, 2,3 искать запятую, то она найдется вне зависимости от того, какой в Excel установлен разделитель целой и дробной части числа. Эта установка влияет только на отображение разделителя на экране при выводе действительного числа.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 17.12.2007, 17:53   #6
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Попробуйте этот код )

Код:
Sub Макрос1()
    With Range("A1:A24")
        .Replace What:=".", Replacement:=".", LookAt:=xlPart
    End With
End Sub
Pavel55 вне форума
Старый 17.12.2007, 17:59   #7
Alkaline
Пользователь
 
Регистрация: 22.11.2007
Сообщений: 79
По умолчанию

SAS888, если в системе запятая установлена как разделитель троек разрядов, то при замене это может привести к превращению дробного числа к большому целому.

PS: Romuald, возможно, не в тему, но: при копировании из других программ, особенно с web-страниц, иногда в конце или в середине числа появляется знак, выглядящий как пробел, но им не являющийся. Он, впрочем, легко удаляется с помощью замены. В поле поиска его нужно вставить по копипасту.
Alkaline вне форума
Старый 17.12.2007, 18:55   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Alkaline, я не про разделитель разрядов, а про разделитель целой и дробной части числа. Создал макрос (если интересно, посмотри в вопросе от Romuald "Сокращение после запятой"), который, в частности ищет позицию запятой в ячейке, значение которой - действительное число. Так вот этот поиск прекрасно работает при любом установленном в Excel разделителе цел. и дробн. части (хоть точка, хоть запятая). На листе отображается то, что установлено в системе, а поиск всегда по запятой. Работает корректно.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поменять местами столбцы veter_s_morya SQL, базы данных 4 29.06.2008 13:36
Си - Решение задачи про многоугольник и точку andreas Помощь студентам 1 27.05.2008 19:29
Задача про седловую точку матрицы (С++) Fuckin_Princess Помощь студентам 3 28.11.2007 16:39
Кто знает как поменять курсор mishel Общие вопросы Delphi 2 15.03.2007 00:37