Я пытаюсь ввести «-» после третьей цифры чисел на рисунке, но не знаю, какой правильный код VBA использовать, чтобы это правильно работало со столбцом данных.
Это текущий код, который у меня есть:
LR = ws.Cells(Rows.Count, 2).End(xlUp).Row
ws.Range("B2:B" & LR).NumberFormat = "###-######"
Хотя это не добавляет тире, а просто меняет форматирование. Таким образом, этого недостаточно, когда я загружаю данные в последнее место, поскольку они не распознают форматирование и не добавляют тире.
Есть ли какая-то функция, которую я могу сделать, чтобы добавить этот «-» после третьего символа всех этих чисел в столбце? Спасибо
Вы уверены, что содержимое столбца B на самом деле является числами, а не текстом, похожим на числа?
Итак, вы видите - в ячейках, но хотите, чтобы он сохранялся при экспорте в другой формат?
ws.Range("B2:B" & LR).NumberFormat = "000-######" не изменит исходные числа, но отобразит - на 4-й позиции; если вы хотите изменить числа на отображаемые тогда значения, вам придется пройти через весь диапазон с помощью такой строки в теле цикла: ws.Cells(i,2).Value = ws.Cells(i,2).Text где i — ваша переменная итерации.
Альтернативой циклу (после изменения формата отображения) является сохранение файла как .csv (если это подходит), так как при этом также сохранится -.


попробуй это:
Sub Add_Character()
Dim rng As Range, c As Range
Dim ws As Worksheet
Set ws = ActiveSheet
LR1 = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
Set rng = ws.Range("B2:B" & LR1)
For Each c In rng
new_val = WorksheetFunction.Replace(c.Value, 4, 0, "-")
c.Value = new_val
Next
End Sub
Вы также можете использовать этот код:
Sub AddHyphen()
Dim ws As Worksheet, LR As Long
Set ws = ActiveSheet
LR = ws.Cells(Rows.Count, 2).End(xlUp).Row
ws.Columns("C").Insert
With ws.Range("B2:B" & LR)
.Offset(, 1).Formula = "=LEFT(B2,3) & ""-"" & RIGHT(B2,6)"
.Value = .Offset(, 1).Value
End With
ws.Columns("C").Delete
End Sub
Это всего лишь простая манипуляция строками. Что вы пробовали? А вы не можете это исправить до того, как внесете данные?