Поменять запятую на точку в числовом формате для одного столбца

Автор Посетитель 22.08.2024, 22 августа 2024, 14:49

Посетитель 22.08.2024

Здравствуйте !
Подскажите, пожалуйста, как правильно сделать. Есть столбец с числами. Нужно сделать их десятичными с одним знаком после запятой. В основном там просто двузначные числа. Есть несколько значений с одной цифрой после запятой.

1. Если переделать в числовой формат Selection.NumberFormat = "0.0" и пробовать поменять запятую на точку — не меняется.

2. Если сделать Application.DecimalSeparator = "." то запятая на точку меняется во всём экселе, а нужно только для одного столбца.

3. Если просто прогонять циклом по каждой ячейке столбца

Спойлер
Dim i As Long
    For i = 2 To R
    If Cells(i, 14).Value Like "*,*" Then
      Else
      Cells(i, 14).Value = Cells(i, 14).Value & ",0"
    End If
    Next
   
    Columns("N:N").Replace What:=",", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2 ' Запятая меняется на точку
[свернуть]
то там при попытке поменять запятую на точку всё превращается просто в обычное число без точки.

Администратор

Целое число нельзя превратить в десятичное - подставить запятую и ноль - такой возможности в Экселе нет. Подставить запятую и ноль можно только визуально - используя числовой формат ячейки.

Посетитель 22.08.2024

Ну вот в первом варианте я и делал числовой формат. Но как там запятую поменять на точку ?

Администратор

У вас Офис русский или английский? Если русский, то зачем менять запятую на точку? В русской версии разделитель запятая.

Посетитель 22.08.2024

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

Администратор

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

Dim i As Long

For i = 2 To R
    Cells(i, 14).Value = "'" & Cells(i, 14).Value
Next i

Columns("N:N").Replace What:=",", Replacement:=".", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

Администратор

И ещё вам надо к целым числам подставить точку и ноль?

Посетитель 22.08.2024

Да.
Я вот так сделал:

Спойлер
Columns("N:N").NumberFormat = "@"
    Dim i As Long
    For i = 2 To R
     If Cells(i, 14).Value Like "*,*" Then
      Cells(i, 14).Value = Replace(Cells(i, 14).Value, ",", ".")
       Else
        Cells(i, 14).Value = Cells(i, 14).Value & ".0"
     End If
    Next
[свернуть]

Заработало.

Администратор

Да, странно, Текстовый формат помог.
Вчера я тоже сначала предложил вам Текстовый формат, но потом стал делать какие-то действия и число превратилось в дату. После чего я предложил апострофы. Сейчас не смог воспроизвести ситуацию, когда число превращается в дату.

Посетитель 22.08.2024

Да, попадались варианты раньше в других местах, когда число превращается в дату. Сходу тогда не мог найти причину, почему (может из-за какого-то формата, прописанного в ячейке).
Вы всегда стараетесь решить вопросы максимально правильно, это здорово: порядок на расстоянии всегда бьёт качество, спасибо большое !