Запятая в excel через vba

A_Qz

31 / 8 / 4

Регистрация: 21.01.2018

Сообщений: 53

1

Excel

Замена запятой на точку

09.12.2018, 11:23. Показов 20227. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Совсем маленький «зацеп». Несколько лет назад все работало как положено. А сегодня перестало.
Точку на запятую меняет. Все в порядке. По тексту:

Visual Basic
1
2
3
4
        sB = Application.ActiveWorkbook.ActiveSheet.Cells(iI, iJ).Value
        If sB = "" Or sB = " " Then sB = "0"
        sB = Replace(sB, ",", ".", , , 1)
        Application.ActiveWorkbook.Worksheets(1).Cells(iI, iJ) = Val(sB)

А вот обратно:

Visual Basic
1
2
3
4
        sB = Str(Application.ActiveWorkbook.ActiveSheet.Cells(iI, iJ).Value)
        If sB = "" Or sB = " " Then sB = "0"
        sB = Replace(sB, ".", ",", , , 1)
        Application.ActiveWorkbook.Worksheets(1).Cells(iI, iJ) = sB

запятая остается. Только содержимое ячейки переводит в текстовый формат, но запятая без изменении. Пробовал предварительно форматировать в текстовый, но ничего. Создается впечатление, где-то в VBA крепко зашита автозамена точки на запятую. Спасибо за объяснение.



1



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

09.12.2018, 11:23

4

1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

09.12.2018, 17:33

2

Лучший ответ Сообщение было отмечено A_Qz как решение

Решение

A_Qz, видимо в настройках экселя Пуск — Настройка — Дополнительно стоит галка Использовать системные разделители, а в винде разделитель запятая. Либо исправить в винде, либо здесь убрать галку и в Разделитель … поставить точку.



1



A_Qz

31 / 8 / 4

Регистрация: 21.01.2018

Сообщений: 53

09.12.2018, 21:51

 [ТС]

3

Спасибо за подсказку, убрал галку — «Использовать системные разделители». Win не трогал. Меняет запятую на точку, но только, если в Excel разделитель — запятая, то для того, чтобы была поставлена точка, ячейку обязательно предварительно нужно перевести в текстовый формат:

VB.NET
1
2
        Cells(iI, iJ).Select
        Selection.NumberFormat = "@"



0



Burk

1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

10.12.2018, 05:40

4

A_Qz,

Цитата
Сообщение от A_Qz
Посмотреть сообщение

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

Так надо поставить разделитель — точку и всё работает, привожу макросы, на которых проверял

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub From()
'Dim sB As String
        sB = Application.ActiveWorkbook.ActiveSheet.Cells(1, 1).Value
        If sB = "" Or sB = " " Then sB = "0"
        sB = Replace(sB, ",", ".", , , 1)
        Worksheets(1).Cells(1, 1) = Val(sB)
End Sub
 
Sub From2()
        sB = Str(Application.ActiveWorkbook.ActiveSheet.Cells(1, 1).Value)
        If sB = "" Or sB = " " Then sB = "0"
        sB = Replace(sB, ".", ",", , , 1)
        Application.ActiveWorkbook.Worksheets(1).Cells(1, 1) = Val(sB)
End Sub

Добавлено через 24 минуты
A_Qz, что-то ошибся (точка на запятую), плохо проверил, а вот так вроде работает

Visual Basic
1
2
3
4
5
6
7
Sub From2()
        Dim sB As String
        sB = Application.ActiveWorkbook.ActiveSheet.Cells(1, 1).Value
        If sB = "" Or sB = " " Then sB = "0"
        sB = Replace(sB, ".", ",", , , 1)
        Application.ActiveWorkbook.Worksheets(1).Cells(1, 1) = sB
End Sub



0



A_Qz

31 / 8 / 4

Регистрация: 21.01.2018

Сообщений: 53

10.12.2018, 18:40

 [ТС]

5

Это все понятно. Но мне нужно было, что бы при разделителе — запятая, сохранялась после замены точка. С тем, что бы я мог этот файл экспортировать в другие программы, где разделитель — точка. Ход действий был такой: убрал галку «Использовать системные разделители» и поправил код

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
          Cells.Select
          Selection.NumberFormat = "@"
          For iI = 1 To iR
            For iJ = 1 To iC
              sB = CStr(Workbooks.Application.Selection.Cells(iI, iJ))
              sB = Replace(sB, ",", ".", 1, -1, 1)
              Workbooks.Application.Selection.Cells(iI, iJ) = sB
            Next iJ
          Next iI
        End If
        Selection.NumberFormat = "General"
        Cells(1, 1).Select

В этом коде все работает так, как мне надо. sB была определена как String ранее.
При смене точки на запятую код такой:

VB.NET
1
2
3
4
5
6
7
8
9
          Cells.Select
          Selection.NumberFormat = "General"
          For iI = 1 To iR
            For iJ = 1 To iC
              sB = Workbooks.Application.Selection.Cells(iI, iJ)
              If sB = "" Or sB = " " Then Workbooks.Application.Selection.Cells(iI, iJ) = "0"
              Workbooks.Application.Selection.Cells(iI, iJ) = Workbooks.Application.Selection.Cells(iI, iJ).Value
            Next iJ
          Next iI

Спасибо ещё раз.



0



 

при замене на экране все нормально, макросом — просто убирает точки, запятые не вставляет.  
формат стоит текстовый, но пробовал и с другими.  
нашел два способа:    
1 поставить впереди апостроф — потом все меняет, но слишком муторно.  

  2 более красиво :) ставлю автозамену точки на запятую..  
 потом меняю макросом в нужном диапазоне.. точку на точку — получается запятая :)  

  как еще?

 

Меняем числа в текстовом формате с не тем разделителем дробной части на числовой формат? Или я не так понял?

 

да! правда и я мог не так понять .. :)

 

вот файл.  

  поменяйте мне точки на запятые

 

Ctrl+H, «.» на «,». Лист NEW.

 

а первый мой пост читали?  

  макросом мне надо!

 

{quote}{login=слэн}{date=27.05.2008 03:25}{thema=}{post}вот файл.  

  поменяйте мне точки на запятые{/post}{/quote}В результате должны получится числа или должен остаться текст?  
И решение зависит от используемого разделителя дробной части.  
Поменять на запятую потому что запятая Application.DecimalSeparator?

 
 

нужно макросом и с наибольшей скоростью ибо данных может быть много

 

На первый вопрос, содержащий «или», ответ «да» непонятен.  
Может так пойдет?  
   Selection.Replace What:=».», Replacement:=Application.DecimalSeparator, LookAt:=xlPart, _  
       SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _  
       ReplaceFormat:=False

 

на самом деле ответ совершенно верен :)  

  уж из текста числа я сделаю..  

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

 

{quote}{login=Лузер™}{date=27.05.2008 04:03}{thema=}{post}На первый вопрос, содержащий «или», ответ «да» непонятен.  
Может так пойдет?  
   Selection.Replace What:=».», Replacement:=Application.DecimalSeparator, LookAt:=xlPart, _  
       SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _  
       ReplaceFormat:=False{/post}{/quote}  

  врят ли — но щас попробуююю

 

снимаю шляпу — работает.  

  теперь объясните разницу..    
пожалста-а-а

 

Вариант:  
‘Sub Макрос1()  
   With Range(«A1:D2»)  
       .Replace What:=»,», Replacement:=».», LookAt:=xlPart  
   End With  
End Sub

 

{quote}{login=слэн}{date=27.05.2008 04:18}{thema=}{post}снимаю шляпу — работает.  

  теперь объясните разницу..    
пожалста-а-а{/post}{/quote}А фиг его знает. Я точно знаю, что DecimalSeparator в VBA «.»  
Думаю, что VBA меняет точку на точку, имея в виду DecimalSeparator, а эксель меняет вбашный DecimalSeparator на свой.  
Плюс этого кода в независимости от региональных настроек юзера.

 

да, возможно.  

  еще раз спасибо

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

—  
Application.DecimalSeparator всегда возвращает тот разделитель, который прописан в Сервис – Параметры – Международные – Разделитель целой и дробной части, даже если выбран флажок «Использовать системные разделители».  

  А символ десятичного разделителя чисел Excel зависит еще и от того, использованы ли системные разделители через меню: Сервис – Параметры – Международные — Использовать системные разделители.  

  Если не учитывать этот факт, то возможны ошибки в определении правильного знака десятичного разделителя для числовых ячеек.    

  Например:  
— системный десятичный знак – запятая;  
— в меню: Сервис – Параметры – Международные – Разделитель целой и дробной части указана точка, и при этом установлен флаг «Использовать системные разделители».  

  При этом Application.DecimalSeparator выдаст точку, а Excel-ю для числовых ячеек нужна запятая.  

  Чтобы не зависеть от подобных накладок я использую такую функцию:  

  ‘ Символ десятичного разделителя  
Function DecSep() As String  
With Application  
If .UseSystemSeparators Then  
DecSep = Mid$(CStr(0.1), 2, 1)  
Else  
DecSep = .International(xlDecimalSeparator)  
End If  
End With  
End Function  

  —  
ZVI

 

zvi, больше интересовала другая особенность:  

  при непосредственном указании             Range(Cells(2, 4), Cells(i, 7)).Replace What:=».», Replacement:=»,», LookAt:=xlPart, _  

  точки убираются, но запятые не появляются  

  при             Range(Cells(2, 4), Cells(i, 7)).Replace What:=».», Replacement:=Application.DecimalSeparator, LookAt:=xlPart, _  

    все нормально, точки меняются на запятые

 

{quote}{login=ZVI}{date=28.05.2008 01:37}{thema=Re:}{post}—  
Application.DecimalSeparator всегда возвращает тот разделитель, который прописан в Сервис – Параметры – Международные – Разделитель целой и дробной части, даже если выбран флажок «Использовать системные разделители».  

  А символ десятичного разделителя чисел Excel зависит еще и от того, использованы ли системные разделители через меню: Сервис – Параметры – Международные — Использовать системные разделители.  

  Если не учитывать этот факт, то возможны ошибки в определении правильного знака десятичного разделителя для числовых ячеек.    

  Например:  
— системный десятичный знак – запятая;  
— в меню: Сервис – Параметры – Международные – Разделитель целой и дробной части указана точка, и при этом установлен флаг «Использовать системные разделители».  

  При этом Application.DecimalSeparator выдаст точку, а Excel-ю для числовых ячеек нужна запятая.  

  Чтобы не зависеть от подобных накладок я использую такую функцию:  

  ‘ Символ десятичного разделителя  
Function DecSep() As String  
With Application  
If .UseSystemSeparators Then  
DecSep = Mid$(CStr(0.1), 2, 1)  
Else  
DecSep = .International(xlDecimalSeparator)  
End If  
End With  
End Function  

  —  
ZVI{/post}{/quote}Да. По поводу DecimalSeparator  
я ошибался.  
Сейчас провел небольшие изыскания и выяснил, что  
1. VBA всегда использует системный DecimalSeparator, хотя в коде употребляется только точка. Это понятно, т.к. запятая испоьзуется для других известных целей.  
2. Конструкция Application.International(xlDecimalSeparator) всегда корректно возвращает DecimalSeparator используемый в экселе, вне зависимости стоит галка UseSystemSeparators или нет  
3. Конструкция Mid$(CStr(0.1), 2, 1)  
всегда возвращает системый DecimalSeparator    
В приложении пример для опытов с услов. форматированием точка — красный, запятая — желтый.  
А также в модуле 2 нарытая аццкая функция для возврата системного DecimalSeparator :)  
2 слэн. Теперь думаю так: у Вас DecimalSeparator стоял точкой потому и прошло :)  
Можно тупо менять точку на точку, при этом ячейка переписывается заново, но уже с DecimalSeparator в понимании VBA  
Что характерно: Код типа Cells.Replace What:=».», Replacement:=Application.International(xlDecimalSeparator), LookAt:=xlPart, SearchOrder _  
       :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False  
работает, но корежит числа делая их текстом с «правильным» разделителем.  
Резьюм: меняем что-то на точку.

 
 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

{quote}{login=слэн}{date=28.05.2008 09:47}{thema=}{post}zvi, больше интересовала другая особенность:  

  при непосредственном указании             Range(Cells(2, 4), Cells(i, 7)).Replace What:=».», Replacement:=»,», LookAt:=xlPart, _  

  точки убираются, но запятые не появляются  

  при             Range(Cells(2, 4), Cells(i, 7)).Replace What:=».», Replacement:=Application.DecimalSeparator, LookAt:=xlPart, _  

    все нормально, точки меняются на запятые{/post}{/quote}  
—  
Метод .Replace хоть и со странностями, но с ним то все понятно.  

  Функция DecSep() мною была приведена в развитие темы, так как звучало «и с наибольшей скоростью ибо данных может быть много». С этой функцией замена текстовых ячеек на числовые работает в 2-3 раза быстрее, чем Replace. На моем компе — примерно в 2.9 раза быстрее.  

  Для того, чтобы сравнить эффективность 2-х методов замены прилагаю файл небольшой тест-системы с подробными комментариями.  
—  
ZVI

 

ZVI, безусловно, Вы нам уже не раз доказывали, что считать массив, обработать, записать гораздо быстрее, чем непосредственная обработка экселем.  
У меня показывает преимущество метода 2 в 1.89 раза.  
Но, с учетом моего предыдущего поста, я решил проэксперементировать и закоментировал следующий код  
‘    ds = DecSep()  
‘    For Each v In x  
‘      i = InStr(1, v, «.», 0)  
‘      If i > 0 Then Mid$(v, i, 1) = ds  
‘    Next  
Т.е. реально осталось:  
   x = .Value  
   .NumberFormat = «General»  
   .Value = x  
Работает, даже если поставить разделитель дробной части «%» :)  
Можно даже так:  
   .NumberFormat = «General»  
   .Value = .Value  
Но все это работает в отношении текста с точкой.

 

ZVI, простите, но я нашел у Вас ошибку.  
Mid$(v, i, 1) = ds меняет символ только для переменной v  
массив х остается без изменений. Т.е. работает так:  
x = .Value  
.NumberFormat = «General»  
.Value = x  
А «фор ич в ин х» пустая трата времени.  
Попробуйте с    
TestString = «1,5518»  
и    
i = InStr(1, v, «,», 0)  
В результате получаем числа, но такие: 15518. Без разделителя.

 

Придумал метод 3  
Идея такая:    
Пусть TestString = «1,5518», т.е. у нас некий текст с разделителем «запятая»  
Запоминаем текущие настройки .UseSystemSeparators и .DecimalSeparator  
меняем .DecimalSeparator на запятую или тот разделитель, который был в TestString    
копируем пустую ячейку, вставляем значения со сложением.  
Возвращаем настройки на место.  
Скорость приятно удивляет даже без оптимизации кода (см. файл)  
Поправил метод 2 немного.

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

{quote}{login=Лузер™}{date=29.05.2008 09:21}{thema=}{post}ZVI, простите, но я нашел у Вас ошибку.  
Mid$(v, i, 1) = ds меняет символ только для переменной v  
массив х остается без изменений. Т.е. работает так:  
x = .Value  
.NumberFormat = «General»  
.Value = x  
А «фор ич в ин х» пустая трата времени.  
Попробуйте с    
TestString = «1,5518»  
и    
i = InStr(1, v, «,», 0)  
В результате получаем числа, но такие: 15518. Без разделителя.{/post}{/quote}  
—  
Да, Вы абсолютно правы!  
Действительно, у меня получился частный случай с лишним For Next.  

  Ваша идея с манипуляцией .UseSystemSeparators и .DecimalSeparator замечательная!  
Но только и она пока, к сожалению, является частным случаем, т.к. не работает, если системный разделитель запятая — выдает 15518.  
Возможно, нужно манипулировать системым разделителем вместо Excel-ного.  

  Смогу подключиться к проблеме уже на выходных.  
—  
ZVI

 

Она не совсем не работает. Я эксперементировал с запятой и получил работающий код. На радостях выложил. Продолжил эксперименты с разделителем «%» — не работает. Вернулся к запятой, снова не работает.  
Но работает с любым разделителем, если операцию спец вставки выполнять вручную. Даже записав их макрорекордером, я получаю 15518. Хотя еще один раз у меня сработал код, но отследить и повторить не удалось. :(

 

{quote}{login=Лузер™}{date=30.05.2008 10:24}{thema=}{post}Она не совсем не работает. Я эксперементировал с запятой и получил работающий код. На радостях выложил. Продолжил эксперименты с разделителем «%» — не работает. Вернулся к запятой, снова не работает.  
Но работает с любым разделителем, если операцию спец вставки выполнять вручную. Даже записав их макрорекордером, я получаю 15518. Хотя еще один раз у меня сработал код, но отследить и повторить не удалось. :({/post}{/quote}  

  вот-вот :)  

  но ваш первый код работает(у меня) без проблем.(это с replace и decimalseparator)  

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

  файлов может быть до 1000  
строк в каждом до 20000  

  в конечной таблице строк до 800 000  

  сейчас работаю с 60 000 строк основной таблицы — для этого требуется обработать около 40 файлов — на генерацию таблицы уходит 27сек

 

Если есть возможность занести значения в эксель как текст с точкой (если установленный разделитель запятая то любые цифры разделённые точкой воспринимаются общим форматом как текст)  
для активного листа  
Sub USNumbers()  
  Application.ScreenUpdating = False  
  Application.Calculation = xlCalculationManual  
  Dim cell As Range  
  On Error Resume Next  
  For Each cell In ActiveSheet.Cells.SpecialCells(xlConstants, xlTextValues)  
     On Error Resume Next  
     cell.Value = Val(cell.Value)  
     On Error GoTo 0  
  Next cell  
  Application.Calculation = xlCalculationAutomatic  
  Application.ScreenUpdating = True  
End Sub  

  ‘функция вал работает только с us-строками  
‘aeyrwbz свид, тьфу cdbl работает с региональными стандартами, то бишь запятой

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

{quote}{login=dl}{date=02.06.2008 08:40}{thema=val  и cdbl}{post}Если есть возможность занести значения в эксель как текст с точкой (если установленный разделитель запятая то любые цифры разделённые точкой воспринимаются общим форматом как текст)  
для активного листа  
Sub USNumbers()  
  Application.ScreenUpdating = False  
  Application.Calculation = xlCalculationManual  
  Dim cell As Range  
  On Error Resume Next  
  For Each cell In ActiveSheet.Cells.SpecialCells(xlConstants, xlTextValues)  
     On Error Resume Next  
     cell.Value = Val(cell.Value)  
     On Error GoTo 0  
  Next cell  
  Application.Calculation = xlCalculationAutomatic  
  Application.ScreenUpdating = True  
End Sub  

  ‘функция вал работает только с us-строками  
‘aeyrwbz свид, тьфу cdbl работает с региональными стандартами, то бишь запятой{/post}{/quote}  
—  
Верно, но это в 4 раза медленнее, чем модифицированный Лузером™ вариант 2.  
С учетом уточненой Слэном задачи (наверное, уже и выполненной), эффективнее, пожалуй, было бы считать весь текстовый файл в переменную, произвести в этой переменной замену точки на запятую, и затем с помощью .TextToColumns скопировать в ячейки как числа.  
Или, не мудрствуя, использовать исходный вариант 2 без For Next, так как речь идет о преобразовании точки в запятую, а не наоборот  
—  
ZVI

 

слэн

Гость

#30

05.06.2008 14:51:16

«спешу» предоставить уважаемому сообществу третий способ преобразования, еще более быстрый..  
благодаря предоставленному ZVI тесту, мне не пришлось себя утруждать :)  
см вложение  

  ps мне этот способ не понадобился  — я обошелся вообще без преобразования(вернее оно выполняется встроенными средствами иксель при открытии текстового файла). Надо конечно попробовать упомянутый ZVI способ чтения файла в переменную..

Прикрепленные файлы

  • post_19474.rar (13.8 КБ)

Private Sub CommandButton1_Click()

        Dim myCheckBox As MSForms.CheckBox
    Dim strRes As String
    Dim i As Long

            ‘Помещение в свойства «ControlTipText» текста.
        ‘Не знаю, зачем это надо — в коде ниже это не используется.
    If CheckBox1.Value = True Then CheckBox1.ControlTipText = «Груша»
    If CheckBox2.Value = True Then CheckBox2.ControlTipText = «Слива»
    If CheckBox3.Value = True Then CheckBox3.ControlTipText = «Яблоко»

        ‘Просмотр всех чекбоксов. У чекбоксов имя должно иметь корень «CheckBox».
    For i = 1 To 3 Step 1
        ‘Если стоит флажок.
        If Me.Controls(«CheckBox» & i).Value = True Then
            ‘Запись в переменную «strRes».
            strRes = strRes & Me.Controls(«CheckBox» & i).Caption & «, «
        End If
    Next i

        ‘Удаление с конца заранее вставленной запятой.
    ‘Если ни одного флажка не было, то в переменной «strRes» будет пусто и будет ошибка,
        ‘если попробуем в этом случае использовать команду «Left».
    If strRes <> «» Then
        strRes = Left(strRes, Len(strRes) — 2)
    End If

        ‘Вставка результата в форму.
    UserForm1.TextBox1.Value = strRes

        ‘Закрытие и выгрузка формы из оперативной памяти компьютера.
    Unload Me

    End Sub

[свернуть]

6 способов замены точки на запятую в программе Microsoft Excel

Замена точек на запятые в Microsoft Excel

​Смотрите также​строк в каждом​ 15518. Без разделителя.​ разделителем.​ Сервис – Параметры​ потому что запятая​ ней есть текст.(​ удачи Вам!​ выручили, ребята!​ по столбцам)​ всю систему) ,​После этого задачу, как​ можно приступать к​В поле​ замены. В поле​ нижней границы области,​. Жмем на кнопку​Многие пользователи программы Эксель​ до 20000​Лузер™​Резьюм: меняем что-то​ – Международные –​ Application.DecimalSeparator?​ И как будет​

​Levetan​Мотя​

Способы смены точки на запятую

​2 — Сцепил​ то ты в​ в Excel заменить​ замене. Для этого​«Разделитель целой и дробной​«Что»​ содержащей преобразуемые данные.​«OK»​ сталкиваются с вопросом​в конечной таблице​

Способ 1: инструмент «Найти и заменить»

​: Придумал метод 3​ на точку.​ Разделитель целой и​слэн​ читаться число с​​: если ты имел​​: Charlene!​ столбцы через запятую.​ Екселе можешь просто​ точку на запятую,​ на главной вкладке​ части»​ставим точку. В​Теперь нам нужно присвоить​.​ замены точек на​ строк до 800​Идея такая:​

  1. ​Лузер™​​ дробной части указана​​: три раза да!​​ двумя запятыми ).​​ ввиду Num клавиши​Не забудьте вернуть​​ (=СЦЕПИТЬ (D1;»,»;E1))​​ выделить свои столбцы​ можно считать решенной.​​ кликните по кнопке​​меняем запятую на​

    Переход к замене в Microsoft Excel

  2. ​ поле​​ ячейкам числовой формат.​​После того, как мы​​ запятые в таблице.​​ 000​Пусть TestString =​​: Файл забыл :)​​ точка, и при​слэн​Спасибо всем ,​​ и там точка?​​ «всё на круги​

    Переход в параметры замены в Microsoft Excel

  3. ​3 — Полученная​ мышей, потом Правка​ Переходим к последнему​​ «Найти и выделить»​​ точку. Жмем на​​«Чем»​​ Выделяем всю область​

    Переход в формат замены в Microsoft Excel

  4. ​ вернулись в окно​ Это чаще всего​сейчас работаю с​ «1,5518», т.е. у​ZVI​ этом установлен флаг​: нужно макросом и​ кто мне ответил​ тогда просто смени​​ своя», чтобы потом​​ ячейка используется в​ — Заменить, указываешь​​ — четвертому методу.​​ и в выпадающем​​ кнопку​​— запятую. Жмем​

    Устанорвка формата в Microsoft Excel

  5. ​ преобразованных данных. На​«Найти и заменить»​​ связано с тем,​​ 60 000 строк​ нас некий текст​: —​ «Использовать системные разделители».​ с наибольшей скоростью​ и еще ответит​ язык на англ​ не иметь «геморроя»​ расчетах​ «Что заменить» -​Данный способ подойдет в​ списке выберите «Заменить».​«OK»​​ на кнопку​​ ленте во вкладке​

Запуск замены в Microsoft Excel

​, выделяем весь диапазон​ что в англоязычных​

Замена завершена в Microsoft Excel

​ основной таблицы -​ с разделителем «запятая»​

Способ 2: использование функции ПОДСТАВИТЬ

​Метод .Replace хоть​При этом Application.DecimalSeparator​ ибо данных может​ .​Shurovik​ с EXCEL.​Светлана лазарева​ точку, «На что​ тех случаях, когда​

  1. ​В окне, что появится,​.​«Заменить все»​«Главная»​ ячеек на листе,​​ странах принято отделять​​ для этого требуется​Запоминаем текущие настройки​ и со странностями,​

    Переход в Мастер функций в Microsoft Excel

  2. ​ выдаст точку, а​ быть много​Я нашел ответ​: В настройках программы​​Charlene​​: Мне помогло ctr+H​ заменить» — запятую.​​ нужно произвести замену​​ в поле «Найти»​

    Выбор функции ПОДСТАВИТЬ в Microsoft Excel

  3. ​Копируем данные через Блокнот​.​​ищем блок инструментов​​ где нужно будет​ десятичные дроби от​ обработать около 40​ .UseSystemSeparators и .DecimalSeparator​ но с ним​ Excel-ю для числовых​Лузер™​ и привожу его​ измените, как отделять​​: Да, конечно, спасибо​​ самое простое и​ Жмешь «Заменить все».​​ так, чтобы формулы​​ введите точку, а​ в Excel.​​Выделяем измененные данные в​​«Число»​ выполнить замену точки​ целого числа точкой,​​ файлов — на​​меняем .DecimalSeparator на​​ то все понятно.​​ ячеек нужна запятая.​

    Аргументы функции ПОДСТАВИТЬ в Microsoft Excel

  4. ​: На первый вопрос,​ здесь :​ целую часть от​ за совет.​ крутое решение. Спасибо​ Все.​ оставались действенными. Выполняется​ в «Заменить на»​Возвращаем прежние настройки Windows.​ Блокноте. Кликаем правой​. В выпадающем списке​ на запятую. Это​ а у нас​ генерацию таблицы уходит​ запятую или тот​Функция DecSep() мною​Чтобы не зависеть​ содержащий «или», ответ​» Необходимо поменять​ дробной. Подробнее сказать​Romchik​

    Копирование функции ПОДСТАВИТЬ в Microsoft Excel

  5. ​ Виталий!​Пользователь удален​ он следующим образом:​ — запятую.​Последний пункт очень важен.​​ кнопкой мыши, и​​ меняем формат на​​ очень важно, ведь​​ – запятой. Хуже​ 27сек​ разделитель, который был​

Установка числового формата в Microsoft Excel

​ была приведена в​ от подобных накладок​

Способ 3: применение макроса

​ «да» непонятен.​ разделитель целой и​ не могу, ибо​: Проблема еще в​

  1. ​Charlene​: Поставь запятую вместо​​Нажмите кнопку «Файл».​​Нажмите кнопку «Заменить все».​ Если его не​

    Включение макросов в Microsoft Excel

  2. ​ в списке выбираем​​ числовой.​​ если вы не​

    Переход в меню разработчика в Microsoft Excel

  3. ​ всего то, что​​dl​​ в TestString​

    Переход в Visual Basic в Microsoft Excel

  4. ​ развитие темы, так​ я использую такую​

    ​Может так пойдет?​
    ​ дробной части в​
    ​ не знаю, какая​

    ​ том, что при​

    Вставка кода в Microsoft Excel

  5. ​: Добрый день.​ точки, num del​Перейдите в меню «Параметры».​​Это был первый способ,​​ выполнить, то вы​​ пункт​​На этом преобразование данных​

    Переход в макросы в Microsoft Excel

  6. ​ выделите диапазон, то​ числа с точкой​: Если есть возможность​​копируем пустую ячейку,​ как звучало «и​​ функцию:​​Selection.Replace What:=».», Replacement:=Application.DecimalSeparator,​​ настройках Excel! В​

Переход к выполнению макроса в Microsoft Excel

​ у вас версия​ изменения запятых на​Подскажите пожалуйста, как​ — это «,»​

​В появившемся окне перейдите​ как в Excel​ не сможете проводить​«Копировать»​ закончено.​ замена произойдет по​ не воспринимаются в​

​ занести значения в​ вставляем значения со​

Способ 4: использование Блокнота

​ с наибольшей скоростью​’ Символ десятичного​ LookAt:=xlPart, _​ 2007:​ Офиса.​ точки не отражаются​

  1. ​ решить проблему? Требуется,​ а обычная точка​ в раздел «Дополнительно».​ заменить точку на​ привычные арифметические действия​. Или жмем на​Заменить точку на запятую​​ всему листу, что​​ русскоязычных версиях Excel,​

    Копирование данных в Microsoft Excel

  2. ​ эксель как текст​ сложением.​ ибо данных может​ разделителя​SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False,​​Меню-Параметры Excel-Дополнительно-​​NoFrost​

    Вставка в Блокноте

  3. ​ в самой диаграмме.​​ чтобы в статье​​ это точка соответственно​В меню «Параметры вставки»​​ запятую. Но возможно,​​ с преобразованными данными.​ клавиатуре сочетание клавиш​ в Экселе можно​​ не всегда нужно.​​ как числовой формат.​

    Замена в Блокноте

  4. ​ с точкой (если​Возвращаем настройки на​​ быть много». С​​Function DecSep() As​ _​​снимите галку с​​: У меня такой​ Странно, что названия​​ дробные числа разделялись​​Сплошное недоразумение​

    Замена в программе Блокнот

  5. ​ уберите отметку рядом​ он вам не​ Кроме того, возможно​Ctrl+C​ также при помощи​​ Затем, жмем на​​ Поэтому, именно данное​ установленный разделитель запятая​​ место.​​ этой функцией замена​

    Копирование в Блокноте

  6. ​ String​ReplaceFormat:=False​ «Использовать системные разделители»​ вопрос, как можно​ (в моем случае​ точкой, а не​: пуск-настройка-панель управления -​​ с «Использовать системные​​ подойдет, поэтому переходим​​ некорректно будут работать​​.​ макроса.​​ кнопку​​ направление замены настолько​

    Вставка данных в Microsoft Excel

  7. ​ то любые цифры​Скорость приятно удивляет​ текстовых ячеек на​With Application​слэн​

Установка формата в Microsoft Excel

Способ 5: изменение настроек Excel

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

  1. ​ разделители».​​ ко второму.​​ и другие программы,​

    Переход во вкладку Файл в Microsoft Excel

  2. ​Возвращаемся в Эксель. Выделяем​​Прежде всего, нужно включить​​«Заменить все»​

    Переход в параметры в Microsoft Excel

  3. ​ актуально. Давайте разберемся,​​ разделённые точкой воспринимаются​​ даже без оптимизации​

    Переход в Дополнительно настроек в Microsoft Excel

  4. ​ числовые работает в​​If .UseSystemSeparators Then​​: на самом деле​ разделители групп разрядов​​ запятую в длинной​​ в окне Excel,​​ я могу поменять​ стандарты — вкладка​​В пункте «Разделитель целой​Сейчас мы разберемся, как​​ установленные на компьютере.​​ диапазон ячеек, где​

    Изменение параметров в Microsoft Excel

  5. ​ макросы и вкладку​.​ как поменять точки​ общим форматом как​ кода (см. файл)​ 2-3 раза быстрее,​

    Данные в блокноте в Microsoft Excel

  6. ​DecSep = Mid$(CStr(0.1),​ ответ совершенно верен​ и Разделитель дробных​

Возврат к настройкам по умолчанию в Microsoft Excel

Способ 6: изменение системных настроек

​ колонке цифр?​ сразу отражаются на​ вручную или функцией​ «региональные параметры»- кнопка​ и дробной части»​ с помощью формулы​

  1. ​Как видим, существует несколько​​ следует заменить значения.​​«Разработчик»​​Как видим, замена выполнена​​ на запятые в​

    Переход в Панель управления

  2. ​ текст)​Поправил метод 2​​ чем Replace. На​​ 2, 1)​

    Переход в раздел Часы в Microsoft Excel

  3. ​ :)​​ и целых частей.​​Попробую более развернуто…​

    Переход в подраздел Язык и региональные стандарты в Microsoft Excel

  4. ​ диаграмме, а вот​ «Найти и заменить»,​​ «настройка»- вкладка «числа»​​ замените запятую на​​ заменить запятую на​​ способов замены точки​

    Переход в дополнительные параметры в Microsoft Excel

  5. ​ Кликаем по нему​​, если они у​ успешно.​​ программе Microsoft Excel​для активного листа​ немного.​​ моем компе -​​Else​

    Изменение системных настроек Windows

  6. ​уж из текста​Групп разрядов -​

    Вставка в Microsoft Excel

  7. ​ Экспортирую из форекса​

Возврат к прежним системным настройкам Windows

​ запятые — нет.​ но для построения​ — поле «разделитель​ точку.​ точку в Excel.​ на запятую в​ правой кнопкой. В​ вас не включены.​Урок: замена символов в​ различными способами.​

​Sub USNumbers()​ZVI​ примерно в 2.9​DecSep = .International(xlDecimalSeparator)​ числа я сделаю..​ пробел. Целых и​ для анализа архив​ Не знаю почему.​ диаграммы эти ячейки​​ дробной части» -​​Кликните по «ОК».​ Его суть заключается​ программе Microsoft Excel.​ появившемся меню в​Переходим во вкладку​ Excel​Скачать последнюю версию​Application.ScreenUpdating = False​: —​

​ раза быстрее.​

lumpics.ru

Четыре способа, как в Excel заменить точку на запятую

​End If​но, подчиняясь ,​ дробных частей -​ котировок для excel.​ Зато быстрое двойное​ Excel 2007 не​ удали там точку​После проделанных действий все​ в том, что​ Конечно, большинство пользователей​ разделе​«Разработчик»​Ещё одним вариантом замены​ Excel​Application.Calculation = xlCalculationManual​Да, Вы абсолютно​Для того, чтобы​End With​ в конечном виде​ запятая.​ Появляются 4 колонки​ нажатие по элементу​ воспринимает. Как быть?​ и поставь запятую.​ формулы будут отображаться​ с помощью специального​ предпочитают для данной​«Параметры вставки»​

как в excel заменить точку на запятую

Первый способ: «Найти и заменить»

​.​ точки на запятую​Существует несколько проверенных способов​Dim cell As​ правы!​ сравнить эффективность 2-х​End Function​ нужны числа, и,​В 2003 это​ из цифр, разделенных​ с величиной тут​ Вот пример диаграммы,​при слуедующем запуске​ программой нормально. И​ оператора мы преобразуем​ процедуры использовать наиболее​

  1. ​кликаем по кнопке​Жмем на кнопку​ является использование функции​ смены точки на​ Range​Действительно, у меня​ методов замены прилагаю​
  2. ​—​ значит, будем считать​ находится в: Сервис-Параметры-Международные.​ точкой, пример:​
  3. ​ же позволяет вручную​ где по оси​ excel — вместо​ на этом статья​ данные в других​ легкий и удобный​«Сохранить только текст»​«Visual Basic»​
  4. ​ ПОДСТАВИТЬ. Правда, при​ запятую в программе​On Error Resume​ получился частный случай​ файл небольшой тест-системы​
  5. ​ZVI​

заменить запятую на точку excel vba

​ это ответом на​Скорее всего сейчас​1.005​ изменить запятые на​ ординат должны быть​ точки будет запятая​ подходит к концу.​

Второй способ: формулы

​ ячейках, а потом​ инструмент​. Либо, жмем сочетание​.​ использовании этой функции​ Эксель. Одни из​ Next​ с лишним For​ с подробными комментариями.​слэн​ первую часть вопроса,​ установлены: Групп разрядов​

  1. ​1.012​ точки.​ дробные числа с​Пользователь удален​ Надеемся, что один​
  2. ​ перенесем их на​«Найти и заменить»​
  3. ​ клавиш​В открывшееся окно редактора​
  4. ​ замена происходит не​

​ них полностью решаются​For Each cell​ Next.​—​

  1. ​: zvi, больше интересовала​ после получения которого,​ — запятая. Целых​
  2. ​1.007​GaLaXoN​ точкой.​
  3. ​: Правой кнопкой ->​ из предложенных способов​ необходимый диапазон:​
  4. ​. Но, к сожалению,​

​Ctrl+V​ вставляем следующий код:​ в исходных ячейках,​ с помощью функционала​ In ActiveSheet.Cells.SpecialCells(xlConstants, xlTextValues)​Ваша идея с​ZVI​ другая особенность:​ ответ на вторую​

  1. ​ и дробных частей​
  2. ​1.007​
  3. ​:​
  4. ​Друзья, я обычный​
  5. ​ формат там выбири​ помог вам добиться​

​Кликаем по ячейке, которая​ в некоторых случаях​.​Sub Макрос_замены_точки_на_запятую()​ а отображается в​

Третий способ: макрос

​ данного приложения, а​On Error Resume​ манипуляцией .UseSystemSeparators и​Лузер™​при непосредственном указании​ часть будет очевиден​

  1. ​ — точка.»​
  2. ​0.996​
  3. ​Всем доброго времени суток!​ непродвинутый пользователь, поэтому​ какой нравится​ желаемых результатов.​
  4. ​ располагается первой рядом​

заменить запятую на точку excel формула

​ с его помощью​На весь диапазон ячеек​

  1. ​Selection.Replace What:=».», Replacement:=»,»​
  2. ​ отдельной колонке.​
  3. ​ для применения других​
  4. ​ Next​ .DecimalSeparator замечательная!​
  5. ​: ZVI, безусловно, Вы​

​ Range(Cells(2, 4), Cells(i,​ :)​После этого я​Но работать с​У меня возник​ объясните, пожалуйста, попроще.​

Четвертый способ: настройки

​Виталий​Автор: Вадим Матузок​ с теми, в​ не удаётся корректно​ устанавливаем числовой формат​End Sub​

  1. ​Выделяем ячейку, которая станет​
  2. ​ требуется использование сторонних​
  3. ​cell.Value = Val(cell.Value)​Но только и​
  4. ​ нам уже не​ 7)).Replace What:=».», Replacement:=»,»,​Guest​ воспользовался советом Казанский​
  5. ​ ними как с​ один вопрос, который​ :) Прикрепленные файлы​: Чё за тупка?​
  6. ​выделил столбцы по вертикали,​

​ которых нужно произвести​ преобразовать данные. Вот​ тем же способом,​Закрываем редактор.​ самой первой в​ программ.​On Error GoTo​ она пока, к​ раз доказывали, что​

​ LookAt:=xlPart, _​

fb.ru

Програма excel… как заменить точку на запятую в десятичном числе???

​: врят ли -​ и убрал все​ числами не получается​ завел меня в​ 1.JPG (41.28 КБ)​ Выделяешь столбец, жмёшь​ там цена указана​ замену.​ тогда на помощь​ как делали это​

​Выделяем область ячеек на​​ колонке для вывода​Самый простой способ замены​ 0​ сожалению, является частным​ считать массив, обработать,​точки убираются, но​ но щас попробуююю​ запятые с помощью​ из-за этой вот​ тупик!​

​KuklP​​ Ctrl+H. Меняешь точку​ с двумя знаками​Нажимаем на кнопку «Вставить​ могут прийти и​ ранее.​ листе, которую нужно​ измененных данных. Кликаем​ точек на запятые​Next cell​ случаем, т.к. не​ записать гораздо быстрее,​

​ запятые не появляются​​слэн​ «Ctrl+H, заменить запятую​ точки, нужно чтоб​имеются 2 числа,​: В настройках Экса​ на запятую…​ после запятой, только​ функцию».​ другие варианты решения​

​Как один из способов​​ преобразовать. Во вкладке​ по кнопке​ — это воспользоваться​Application.Calculation = xlCalculationAutomatic​ работает, если системный​ чем непосредственная обработка​при Range(Cells(2, 4),​: снимаю шляпу -​ на пусто. «​

​ была запятая, вручную​​ с десятичными (например​

​ поменяйте разделитель целой​​Максим колосов​ вот сама запятая​В списке находим функцию​ проблемы.​ преобразования точки в​«Разработчик»​«Вставить функцию»​ возможностями, которые предоставляет​Application.ScreenUpdating = True​ разделитель запятая -​ экселем.​ Cells(i, 7)).Replace What:=».»,​ работает.​Спасибо и удачи​ изменить это нереально.​ вместо 0,4 я​ и дробной части.​

​: Есть специальная замена,​​ была написана точкой..​ «Подставить».​Автор: Максим Тютюшев​ запятые, можно использовать​жмем на кнопку​

​, которая располагается слева​​ инструмент​End Sub​ выдает 15518.​У меня показывает​ Replacement:=Application.DecimalSeparator, LookAt:=xlPart, _​теперь объясните разницу..​ всем​ Может кто подсказать​ ставлю 0.4).​
​Charlene​ она может работать​ . а менять​

​Кликаем по «ОК».​​Профессионально работающие в «Эксель»​ изменение настроек программы​«Макросы»​

​ от места нахождения​​«Найти и заменить»​’функция вал работает​Возможно, нужно манипулировать​ преимущество метода 2​

​все нормально, точки​​пожалста-а-а​слэн​ решение проблемы?​каким образом с​: А поконкретнее, пошагово​ на весь столбец​ каждый столбец вручную​Далее возникнет окно функции,​ люди зачастую сталкиваются​ Excel.​.​ строки функций.​. Но, и с​ только с us-строками​

​ системым разделителем вместо​​ в 1.89 раза.​ меняются на запятые​Guest​: при замене на​

​NoFrost​​ ними вообще можно​ можете рассказать?​ или линию (выделенное)​ требует времени.. .​

​ в которое необходимо​​ с необходимостью заменить​Переходим во вкладку​

​В открывшемся окне представлен​​Запускается Мастер функций. В​ ним нужно вести​’aeyrwbz свид, тьфу​ Excel-ного.​Но, с учетом​Лузер™​: Вариант:​ экране все нормально,​: Спасибо огромное The_Prist,​ работать (умножить, суммировать….и​KuklP​ , помоему она​ помогите кто знает​ ввести все нужные​ запятую (,) на​«Файл»​ список макросов. Выбираем​ списке, представленном в​ себя осторожно. Ведь,​ cdbl работает с​Смогу подключиться к​ моего предыдущего поста,​
​: Да. По поводу​’Sub Макрос1()​
​ макросом — просто​ помогло.​ т.д).​: Да куда уж​ так и называется,​Evgeny m.​
​ значения:​ точку (.). Чаще​.​
​ из списка​ открытом окне, ищем​ при неправильном его​

​ региональными стандартами, то​​ проблеме уже на​ я решил проэксперементировать​ DecimalSeparator​With Range(«A1:D2»)​

Как заменить на диаграмме запятую на точку?

​ убирает точки, запятые​​Serge​
​Спасибо за внимание!​ конкретней. Прикрепленные файлы​ специальная вставка. Можно​: Сначала выдели все​В «Текст» вводим первую​ всего это связано​Выбираем раздел​«Макрос замены запятых на​ функцию​ использовании будут заменены​ бишь запятой​ выходных.​ и закоментировал следующий​я ошибался.​.Replace What:=»,», Replacement:=».»,​ не вставляет.​: Sub Replace_Point()​китин​
​ 2013-11-20_103552.gif (58.3 КБ)​ заменить любой (ые)​ эти ячейки и​ ячейку, в которой​ с редактированием файлов​

​«Параметры»​​ точки»​ПОДСТАВИТЬ​ все точки на​

​ZVI​​—​ код​:)

​Сейчас провел небольшие​​ LookAt:=xlPart​формат стоит текстовый,​Selection.Replace What:=».», Replacement:=»,»,​

​: а Ctrl+Н найти​​KuklP​

​ символ (ы) в​​ сделай их тип​ нужно провести замену.​ англоязычной локализации, так​.​. Жмем на кнопку​. Выделяем её и​:cry:

​ листе, даже в​​: —​:oops:​ZVI​’ ds =​ изыскания и выяснил,​End With​
​ но пробовал и​ LookAt:=xlPart, _​ «.» заменить на​

​: Кросс:​​ выделенной области любым​ числовой с нужным​;)​В «Стар_текст» вводим запятую,​ как за рубежом​Переходим в пункт​«Выполнить»​ жмем на кнопку​

​ тех местах, где​​Верно, но это​Лузер™​ DecSep()​ что​End Sub​

​ с другими.​​SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False,​
​ «,» не катит?​Charlene​ (ми) символом (ами).​

​ количеством десятичных знаков.​​ беря ее в​ единый стандарт подразумевает​«Дополнительно»​.​
​«OK»​ они действительно нужны,​ в 4 раза​: Она не совсем​’ For Each​1. VBA всегда​Лузер™​нашел два способа:​:)

​ _​​GaLaXoN​
​: Ага, заменила. А​ Где-то в контекстном​ Потом зайди в​ кавычки.​ использование в качестве​:)

​.​​После этого, выполняется преобразование​.​:)

​ например, в датах.​​ медленнее, чем модифицированный​ не работает. Я​ v In x​ использует системный DecimalSeparator,​: А фиг его​1 поставить впереди​ReplaceFormat:=False​: так мне и​ на оси диаграммы,​ меню помоему. если​ «Правка» —> «Замена»​В «Нов_текст» вводим точку,​ разделителя десятичных чисел​В разделе настроек​ точек на запятые​Активируется окно аргументов функции.​ Поэтому, этим способом​ Лузером™ вариант 2.​ эксперементировал с запятой​

planetaexcel.ru

Сумма чисел в которых вместо запятой стоит точка. (Формулы/Formulas)

​’ i =​​ хотя в коде​​ знает. Я точно​
​ апостроф — потом​End Sub​ не нужно их​ построенной по таким​
​ надо, посмотрю.​ и поставь чтобы​ также беря ее​ точку, в то​
​«Параметры правки»​ в выделенном диапазоне​ В поле​ нужно пользоваться осторожно.​
​С учетом уточненой​

​ и получил работающий​​ InStr(1, v, «.»,​ употребляется только точка.​ знаю, что DecimalSeparator​

​ все меняет, но​​Guest​ заменять!​ данным, все равно​
​Vzotin​ заменить точку на​

​ в кавычки.​​ время как у​снимаем галочку с​ ячеек.​«Текст»​
​Находясь во вкладке​ Слэном задачи (наверное,​

​ код. На радостях​​ 0)​
​ Это понятно, т.к.​ в VBA «.»​

​ слишком муторно.​​: Если без замены​
​они должны отображаться​

​ дроби с запятой​​: Панель управления винды​ запятую.​
​Нажимаем «ОК».​

​ нас — запятую.​​ пункта​Внимание! Очень внимательно применяйте​нужно ввести координаты​​«Главная»​​ уже и выполненной),​

excelworld.ru

Вместо запятой — точка, плиз хелп пиплы. Excel.

​ выложил. Продолжил эксперименты​’ If i​ запятая испоьзуется для​Думаю, что VBA​

​2 более красиво​​ точки на запятую,​ с точкой!​

​ выходят.​​ — языки и​Геннадий гривин​Теперь, зажав ЛКМ нижний​ И наоборот, для​«Использовать системные разделители»​ данный способ. Последствия​ первой ячейки столбца,​, в группе инструментов​ эффективнее, пожалуй, было​

​ с разделителем «%»​​ > 0 Then​ других известных целей.​ меняет точку на​ :) ставлю автозамену​ то можно изменить​

​heaven33rus​​Charlene​ стандарты. Вот там​: В Экселе принята​ правый угол нашей​ разделения разряда используют​. В активировавшееся поле​ действия этого макроса​ где располагаются числа​

Заменить точку на запятую

​«Редактирование»​​ бы считать весь​ — не работает.​ Mid$(v, i, 1)​2. Конструкция Application.International(xlDecimalSeparator)​ точку, имея в​

​ точки на запятую..​ настройки.​: В параметры экселя/дополнительно/​: Прошу пощения.​ и меняйте.​ именно такая форма​ выделенной ячейки, перетаскиваем​

​ запятую, а у​
​«Разделитель целой и дробной​
​ необратимы, поэтому выделяйте​
​ с точками. Это​
​на ленте жмем​

​ текстовый файл в​ Вернулся к запятой,​ = ds​ всегда корректно возвращает​ виду DecimalSeparator, а​потом меняю макросом​СЕРВИС-ПАРАМЕТРЫ-МЕДУНАРОДНЫЕ, убрать галку​ убрать галочку с​Я поняла, что​

​Владислав борисоглебский​​ записи чисел и​ его до конца​

​ нас — точку.​​ части»​
​ только те ячейки,​ можно сделать, просто​
​ на кнопку​ переменную, произвести в​
​ снова не работает.​
​’ Next​

​ DecimalSeparator используемый в​​ эксель меняет вбашный​ в нужном диапазоне..​ «использовать системные разделители»,​ «системного разделителя» и​
​ кросс не приветствуется.​: зачем тебе что​ менять ничего не​ нужного диапазона. Вся​ В этой статье​ставим точку. Жмем​

planetaexcel.ru

Нечитаемые числа (содержащие точку вместо запятой): как внедрить в вычисления

​ к которым желаете​​ выделив эту ячейку​«Найти и выделить»​ этой переменной замену​Но работает с​Т.е. реально осталось:​ экселе, вне зависимости​ DecimalSeparator на свой.​ точку на точку​ в «разделитель целой​ поставить там точку.​ Просто очень срочно​ — то менять?​

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

​ точки на запятую,​​ любым разделителем, если​x = .Value​

​ стоит галка UseSystemSeparators​​Плюс этого кода​ — получается запятая​ и дробной части»​

​Будетработать с точками​​ надо решить проблемку.​ excel в числах​ не сможет считать,​ с замененными точками.​ том, как в​«OK»​Урок: как создать макрос​ помощью мыши. В​
​ переходим по пункту​ и затем с​ операцию спец вставки​.NumberFormat = «General»​
​ или нет​ в независимости от​ :)​
​ поставить точку, в​ вместо запятых.​Дайте кто-нибудь хоть​ должна стоять точка!​ т. е. сумму​
​ Теперь вам надо​
​ Excel заменить точку​.​
​ в Microsoft Excel​ поле​«Заменить»​ помощью .TextToColumns скопировать​
​ выполнять вручную. Даже​.Value = x​3. Конструкция Mid$(CStr(0.1),​ региональных настроек юзера.​
​как еще?​ «разделитель разрядов»- запятую.​
​GaLaXoN​ платную консультацию что​Аксенов никита​ по столбцам и​ выполнить следующее:​
​ на запятую с​Но, данные сами собой​Следующий способ предполагает копирование​«Стар_текст»​.​ в ячейки как​
​ записав их макрорекордером,​Работает, даже если​

CyberForum.ru

замена разделяющей точки на запятую

​ 2, 1)​​слэн​Лузер™​djeck71​: только с точками?​ ли…​
​: Вот простой способ​ строкам… Жми F1​Выделить измененные значения.​
​ помощью специальных инструментов,​
​ не изменятся. Копируем​ данных в стандартный​вставляем точку (.).​Открывается окно​

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

​Z​

​ решить проблему https://youtu.be/N4o0g7yrhgg​​ и читай, там​Нажать CTRL+X.​ чтобы данный процесс​ их в Блокнот,​ текстовый редактор Windows​ В поле​«Найти и заменить»​

​Или, не мудрствуя,​​ Хотя еще один​ части «%» :)​ DecimalSeparator​еще раз спасибо​

​ текстовом формате с​​ , как исправить​

​ точками и запятыми?​: Сначала вы -​

​Садоводческое некомерческое товарищество радуга​​ все написано!​Выделить неизмененные значения.​

​ отнимал как можно​​ а после вставляем​ Блокнот, и изменение​

​«Нов_текст»​

​. В поле​​ использовать исходный вариант​ раз у меня​Можно даже так:​
​В приложении пример​ZVI​ не тем разделителем​
​ числа ,которые выглядят​Pelena​ дайте ваш пример-хотелку…​

​: Всем спасибо за​​Оксана​

​Кликнуть ПКМ.​​ меньше времени.​ на то же​ их в этой​ставим запятую (,).​

​«Найти»​​ 2 без For​ сработал код, но​.NumberFormat = «General»​
​ для опытов с​
​: —​ дробной части на​
​ так 45,567.98 -на​: Как вариант​
​Да вчитайтесь в​

​ ответы. Вопрос на​​: зачем тебе нужна​Выбрать параметр вставки с​В первом способе мы​

​ место обычным способом.​ программе.​

​ Поле​вставляем знак точки​ Next, так как​ отследить и повторить​.Value = .Value​ услов. форматированием точка​Application.DecimalSeparator всегда возвращает​ числовой формат? Или​ числа, с которыми​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ПОДСТАВИТЬ(A1;».»;»,»)*ПОДСТАВИТЬ(A2;».»;»,»)​

​ предложенные варианты, и​​ самом деле не​ запятая? в числе​

​ обозначением «123».​​ будем использовать инструмент​После завершения операции рекомендуется​

​Выделяем в Excel область​
​«Номер_вхождения»​

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

​GaLaXoN​​ опишите в каких​ так прост и​ в excele вообще-то​Вот мы и разобрали​
​ под названием «Найти​ вернуть настройки Эксель​ ячеек, в которых​заполнять не нужно.​«Заменить»​ преобразовании точки в​
​слэн​ работает в отношении​ — желтый.​

​ прописан в Сервис​​ понял?​

​ (45567,98)? Или как​

​: ооо! вот это​​ настройках XL реально​
​ такие элементарные действия​ должна стоять точка.​ второй способ, как​ и заменить». Но​ по умолчанию.​ нужно заменить точку​ Сама функция будет​— знак запятой​ запятую, а не​

​: вот-вот :)​ текста с точкой.​А также в​ – Параметры –​слэн​ изменить настройки ,​ само то! =))))​ работаете.​ знают, наверно, все.​

​ Но если тебе​ в Excel заменить​ перед тем как​Этот способ похож на​ на запятую. Кликаем​ иметь такой шаблон:​

​ (,). Кликаем по​
​ наоборот​но ваш первый​
​Лузер™​ модуле 2 нарытая​ Международные – Разделитель​: да! правда и​ чтобы читались первые(45,567.98)числа​спасибо!​Мотя​ Я тоже столкнулся​

​ надо преобразовать ее​ точку на запятую.​ в Excel заменить​ предыдущий. Только на​

​ правой кнопкой мыши.​«=ПОДСТАВИТЬ(адрес_ячейки;».»;»,»)»​ кнопке​—​

​ код работает(у меня)​: ZVI, простите, но​
​ аццкая функция для​ целой и дробной​
​ я мог не​
​ (можно было работать​
​AlexM​: В панели управления​
​ с такой проблемой.​
​ в строку и​
​ Переходим к третьему.​
​ точку на запятую​
​ этот раз мы​

​ В контекстном меню​
​. Жмем на кнопку​

​«Параметры»​​ZVI​ без проблем.(это с​

​ я нашел у​ возврата системного DecimalSeparator​ части, даже если​ так понять ..​

​ с ними в​: Если чисел не​

​ — «Язык и​ Эксель автоматически обновляет​ с запятой, то​

​Теперь нужно рассмотреть, как​ таким образом, стоит​

​ меняем не настройки​​ выбираем пункт​«OK»​
​.​
​слэн​ replace и decimalseparator)​ Вас ошибку.​
​ :)​ выбран флажок «Использовать​ :)​ различных формулах)? Спасибо.​ два, а много,​ региональные стандарты»: Числа,​ курс валют, а​
​ пиши помогу.​ можно с помощью​ сказать, что он​ Excel. А системные​«Копировать»​.​
​Открываются дополнительные настройки поиска​: «спешу» предоставить уважаемому​
​вообще мне нужно​Mid$(v, i, 1)​
​2 слэн. Теперь​ системные разделители».​слэн​Serge 007​ то можно так​
​ Разделитель целой и​ центробанк их выкладывает​Александра​ VBA заменить запятую​ совершенно не годится​
​ настройки Windows.​.​Как видим, в новой​ и замены. Напротив​ сообществу третий способ​
​ было:​ = ds меняет​ думаю так: у​А символ десятичного​: вот файл.​: В параметрах поменяйте​
​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ПРОИЗВЕД(—ПОДСТАВИТЬ(A1:A10;».»;»,»))​ дробной части.​ с точкой. От​: Сервис-Параметры-Международные. Там есть​
​ на точку в​ в случае с​
​Через меню​Открываем Блокнот. Делаем клик​ ячейке у числа​ параметра​
​ преобразования, еще более​разархивировать файл​

​ символ только для​​ Вас DecimalSeparator стоял​

​ разделителя чисел Excel​​поменяйте мне точки​
​ разделители целой и​Формула массивная​Мотя​ сих и вытекает​

​ окошечко «Разделитель целой​ Excel. Для этого​ формулами, так как​«Пуск»​ правой кнопкой мыши,​ уже вместо точки​«Заменить на…»​ быстрый..​получившийся текстовый файл​ переменной v​ точкой потому и​ зависит еще и​ на запятые​ дробной части с​На цифровом блоке клавиатуры​

​: Charlene!​ проблема. Дальнейшие расчеты​ и дробной части»,​ нужно:​ все значения в​
​входим в​
​ и в появившемся​

​ запятая. Теперь нам​​кликаем по кнопке​благодаря предоставленному ZVI​ загрузить в иксель(я​массив х остается​ прошло :)​ от того, использованы​Guest​
​ точки на запятую​ (калькуляторе), нажимая запятую​Зачем Вам нужна​
​ цен не возможны.​ в нем надо​Перейти во вкладку «Разработчик».​ таблице перейдут в​«Панель управления»​
​ списке кликаем по​ нужно сделать подобную​
​«Формат»​ тесту, мне не​
​ загружаю с установкой​ без изменений. Т.е.​Можно тупо менять​
​ ли системные разделители​: Ctrl+H, «.» на​ и уберите запятую​ в Excel ставится​
​ эта «идея фикс»​
​ Не будешь же​
​ поставить запятую (в​
​Нажать на Visual Basic.​
​ текстовый формат. Итак,​
​.​ пункту​ операцию для всех​
​.​
​ пришлось себя утруждать​
​ столбцов в тесктовый​
​ работает так:​ точку на точку,​ через меню: Сервис​

​ «,». Лист NEW.​​ из разделителей разрядов.​ точка. Как исправить?​ со сменой разделителя?​
​ каждые 5 минут​ окошечке «Использовать системные​В появившемся окне вставить​ приступим:​
​В Панели управления переходим​«Вставить»​ других ячеек столбца.​
​Открывается окно, в котором​
​ :)​
​ формат, хотя тут​
​x = .Value​ при этом ячейка​ – Параметры –​
​слэн​
​djeck71​
​Виталя константинов​
​Charlene​ открывать и выполнять​
​ разделители» убрать «галку»,​ текст, который будет​Для начала надо преобразовать​

​ в раздел​​.​
​ Конечно, вводить для​
​ мы сразу можем​см вложение​ и можно поиграть​.NumberFormat = «General»​
​ переписывается заново, но​ Международные — Использовать​
​: а первый мой​: Спасибо. Но если​: нужно поставить формат​: А! Ура! Помогло!​
​ предложенные Вами действия,​ если она есть,​ указан под этим​
​ формат ячеек в​«Часы, язык и регион»​
​Кликаем по пункту меню​ каждого числа функцию​ установить формат изменяемой​
​ps мне этот​ с сепаратором)​

​.Value = x​​ уже с DecimalSeparator​
​ системные разделители.​ пост читали?​
​ можно поподробней .​ ячеек общий​ Через панель управления!​ а изменения в​

​ «Ок» или «Применить».​ списком.​ текстовый. Для этого​
​.​«Правка»​ не нужно, есть​ ячейки, какой бы​ способ не понадобился​вырезать из этого​А «фор ич​
​ в понимании VBA​Если не учитывать​макросом мне надо!​

​Казанский​Я​ :{} , Мотя,​
​ настройках разделителя влияет​
​Ирина с.​

​Закрыть окно.​​ выделите нужную область,​Переходим в подраздел​. В появившемся списке​ намного более быстрый​ она до этого​ — я обошелся​ массива нужные данные(по​ в ин х»​Что характерно: Код​ этот факт, то​
​Лузер™​: Ctrl+H, заменить запятую​: Кнопка «Офис»-«параметры Excel»-«правописание»-«параметры​ спасибо!​ на все остальное.​: вставка — символ​Теперь можно приступать к​ нажмите ПКМ и​«Язык и региональные стандарты»​ выбираем пункт​ способ выполнить преобразование.​

​ не была. В​​ вообще без преобразования(вернее​

​ двум параметрам)​ пустая трата времени.​ типа Cells.Replace What:=».»,​ возможны ошибки в​

​: В результате должны​ на пусто. Заменить​
​ автозамены» в поле​
​Вы понимаете, пишу​Я решил эту​Нету​ замене.​ в меню кликните​.​«Заменить»​
​ Становимся на правый​ нашем случае главное​ оно выполняется встроенными​
​заменить точку на​Попробуйте с​
​ Replacement:=Application.International(xlDecimalSeparator), LookAt:=xlPart, SearchOrder​ определении правильного знака​
​ получится числа или​

​ точку на запятую.​ «заменять» жмем нашу​
​ научную статью, а​ проблему так:​

​: Если не хочешь​Выделите нужные ячейки.​ по «Формат ячеек».​

​В открывшемся окне во​. Или же, можно​ нижний край ячейки,​ установить числовой формат​ средствами иксель при​ запятую​TestString = «1,5518»​ _​

​ десятичного разделителя для​​ должен остаться текст?​djeck71​ точку на цифровом​ правила журнала требуют​1 — разбил​ менять региональные стандарты,​Перейдите во вкладку «Разработчик».​В появившемся окне, находясь​ вкладке​
​ просто набрать на​
​ которая содержит преобразованные​
​ данных. Во вкладке​
​ открытии текстового файла).​
​преобразовать в числовой​и​
​:=xlByRows, MatchCase:=False, SearchFormat:=False,​ числовых ячеек.​
​И решение зависит​: Спасибо . Этот​
​ блоке, в поле​ именно такой формат.​
​ содержимое ячейки по​
​ как уже указали,​Нажмите кнопку «Макросы».​
​ на вкладке «Число»,​
​«Форматы»​
​ клавиатуре комбинацию клавиш​
​ данные. Появляется маркер​

​«Число»​ Надо конечно попробовать​
​ формат​i = InStr(1,​ ReplaceFormat:=False​Например:​

​ от используемого разделителя​​ вариант не подходит​
​ «на» точку на​ Два дня голову​ столбцам используя в​ (я бы не​
​В появившемся окне выделите​ выберите «Текстовый» и​жмем на кнопку​Ctrl+H​ заполнения. Удерживая левую​среди наборов числовых​ упомянутый ZVI способ​вставить в таблицу​ v, «,», 0)​работает, но корежит​- системный десятичный​ дробной части.​ т.к. у меня​
​ основном блоке. Все​ ломаем всей кафедрой.))​ качестве разделителя точку.​ стал, потому что​ недавно созданный макрос.​ кликните по «ОК».​«Дополнительные настройки»​.​
​ кнопку мыши, тянем​
​ форматов выделяем пункт​

​ чтения файла в​​файлов может быть​В результате получаем​ числа делая их​ знак – запятая;​
​Поменять на запятую​ таблица и в​ сохраняете — и​ Вы нас очень​
​ (Данные — текст​

​ это влияет на​Нажмите «Выполнить».​После изменения формата ячеек​.​Открывается окно поиска и​ его вниз до​«Числовой»​ переменную..​ до 1000​ числа, но такие:​ текстом с «правильным»​

planetaexcel.ru

​- в меню:​

Пытаюсь написать код vba методом DDE. Код нацелен на копирование набора столбцов таблицы Excel и вставку его в параметрическую таблицу в программе EES (Engineering Equation Solver). Затем запускается код EES для решения таблицы, генерируя столбцы выходных данных. Затем эти данные копируются и вставляются обратно в файл Excel, содержащий входные данные.

Поскольку я новичок в vba, я использовал в качестве руководства пример, предоставленный EES (выполнение макросов EES из EXCEL).

Проблема возникает, когда данные вставляются обратно в электронную таблицу Excel: код, кажется, игнорирует десятичный разделитель! И мой excel, и EES настроены на работу с запятой в качестве десятичного разделителя, и когда я вручную копирую результаты из EES и вставляю затем, чтобы превзойти, число вставляется нормально, с запятой (также числа из excel правильно вставляются в ESS ).

Однако, когда я устанавливаю код для выполнения этой задачи, такие числа, как «15,47», вставляются в excel как «1,55E + 12» или «1547421377050». Код показан ниже:

Private Sub cmdDDE_Click()
Dim ChNumber As Integer
Dim myShell As String

ChNumber = -1
myShell = frmEESDDE.txtApp.Text

On Error Resume Next

'Copy selected rows into clipboard
Range("B2:G1401").Select
Selection.Copy

Shell_R = Shell(myShell, 1)

If Shell_R <> "" Then
'Initiate DDE
ChNumber = Application.DDEInitiate(app:="ees", topic:="")

If ChNumber <> -1 Then
    'Open EES
    Application.DDEExecute ChannelNumber, "[Open C:EESTablesolve.ees]"
    'Paste data
    Application.DDEExecute ChannelNumber, "[Paste Parametric 'Table 1' R1 C1]"
    'Solve parametrictable
    Application.DDEExecute ChannelNumber, "[SOLVETABLE 'TABLE 1' Rows=1..1400]"
    'Copy results
    Application.DDEExecute ChannelNumber, "[COPY ParametricTable 'Table 1' R1 C7:R1400 C14]"
    'Choose separators
    Application.DecimalSeparator = ","
    Application.ThousandsSeparator = "."
    Application.UseSystemSeparators = False
    'Paste results from EES into EXCEL
    Application.Paste Destination:=Worksheets("Sheet1").Range("H2:O1440")
    Application.UseSystemSeparators = True
    'Quit EES and Terminate DDE
    DDEExecute ChNumber, "QUIT"
    Application.DDETerminate ChNumber
Else
    MsgBox "Unable to initiate connection to EES", vbExclamation, "EES DDE"
End If

frmEESDDE.Hide

Else
    MsgBox "The application, " & myShell & ", was not found", vbExclamation, "EES DDE"
End If

PS = Как видите, я попытался установить десятичный разделитель на «,», как предлагается в этой ссылке: Вставка десятичных чисел в excel / comma и десятичный разделитель точки, но это тоже не сработало!

Я ценю вашу помощь!

3 ответа

Лучший ответ

Задача решена! Я также разместил вопрос в португалоязычном сообществе stackoverflow и получил очень полезный ответ. С небольшими изменениями он решил мою проблему! Ссылка на решение на португальском языке:

https://pt.stackoverflow.com/questions/74860/vba-excel-n%C3%A3o-reconhece-v%C3%ADrgula-de-dados-externos

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

1- объявить переменные диапазона:

Dim interval As Range 'represent the cells in which info was pasted
Dim Cell As Range 'to allow cell format to be changed

2- после копирования результатов из внешней программы и перед вставкой:

Set interval = Worksheets("Sheet1").Range("H2:O1440") 'set interval to paste the results
interval.NumberFormat = "@" 'set format to text

3- после оклейки:

interval.NumberFormat = "General" 'set format to general
For Each Cell In interval
    Cell.Value = FormatNumber(CDbl(Cell.Value), 2) 'set only 2 decimal places
    Cell.Value = CDbl(Cell.Value) 'set to double
Next

Остальная часть кода остается как есть.

Особая благодарность Cantoni, который помог с решением в версии pt.


1

Community
13 Апр 2017 в 12:59

Вы также можете попробовать это:

Worksheets("Sheet1").Range("H2").PasteSpecial xlPasteValuesAndNumberFormats


0

R.Katnaan
16 Июл 2015 в 13:47

Вместо того, чтобы вставлять application.paste, попробуйте вставить только значения. т.е.: вместо

Application.Paste Destination:=Worksheets("Sheet1").Range("H2:O1440")

Использовать

Range("H2:O1440").PasteSpecial xlPasteValues

Если это не сработает, проанализируйте вывод как строку.


0

user3476534
15 Июл 2015 в 19:16

Понравилась статья? Поделить с друзьями:
  • Запчасти для инвалидных колясок excel
  • Зарплата за месяц в таблице excel
  • Запчасти для janome my excel
  • Зарисуйте значок текстового редактора word
  • Запустить текстовый редактор word командой программы microsoft word