Здравствуйте !
Подскажите, пожалуйста, как правильно сделать. Есть столбец с числами. Нужно сделать их десятичными с одним знаком после запятой. В основном там просто двузначные числа. Есть несколько значений с одной цифрой после запятой.
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 ' Запятая меняется на точку
то там при попытке поменять запятую на точку всё превращается просто в обычное число без точки.
Целое число нельзя превратить в десятичное - подставить запятую и ноль - такой возможности в Экселе нет. Подставить запятую и ноль можно только визуально - используя числовой формат ячейки.
Ну вот в первом варианте я и делал числовой формат. Но как там запятую поменять на точку ?
У вас Офис русский или английский? Если русский, то зачем менять запятую на точку? В русской версии разделитель запятая.
Офис русский. Просто файл, который загружается на сайт, в этом столбце имеет цифры с точками и потом эти данные используются на сайте для подбора. И там тоже цифры с точками.
Чтобы сделать в русской версии в числах точку, нужно сначала в начало каждой ячейки записать апостроф, затем уже можете заменить запятую на точку любым удобным вам способом.
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
И ещё вам надо к целым числам подставить точку и ноль?
Да.
Я вот так сделал:
Спойлер
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
Заработало.
Да, странно, Текстовый формат помог.
Вчера я тоже сначала предложил вам Текстовый формат, но потом стал делать какие-то действия и число превратилось в дату. После чего я предложил апострофы. Сейчас не смог воспроизвести ситуацию, когда число превращается в дату.
Да, попадались варианты раньше в других местах, когда число превращается в дату. Сходу тогда не мог найти причину, почему (может из-за какого-то формата, прописанного в ячейке).
Вы всегда стараетесь решить вопросы максимально правильно, это здорово: порядок на расстоянии всегда бьёт качество, спасибо большое !