Вставить символ в середине числа для столбца VBA Excel

Я пытаюсь ввести «-» после третьей цифры чисел на рисунке, но не знаю, какой правильный код VBA использовать, чтобы это правильно работало со столбцом данных.

Это текущий код, который у меня есть:

LR = ws.Cells(Rows.Count, 2).End(xlUp).Row
ws.Range("B2:B" & LR).NumberFormat = "###-######"

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

Есть ли какая-то функция, которую я могу сделать, чтобы добавить этот «-» после третьего символа всех этих чисел в столбце? Спасибо

Это всего лишь простая манипуляция строками. Что вы пробовали? А вы не можете это исправить до того, как внесете данные?

Tim Roberts 05.03.2024 22:57

Вы уверены, что содержимое столбца B на самом деле является числами, а не текстом, похожим на числа?

braX 05.03.2024 23:00

Итак, вы видите - в ячейках, но хотите, чтобы он сохранялся при экспорте в другой формат?

Scott Craner 05.03.2024 23:01
ws.Range("B2:B" & LR).NumberFormat = "000-######" не изменит исходные числа, но отобразит - на 4-й позиции; если вы хотите изменить числа на отображаемые тогда значения, вам придется пройти через весь диапазон с помощью такой строки в теле цикла: ws.Cells(i,2).Value = ws.Cells(i,2).Text где i — ваша переменная итерации.
Spectral Instance 06.03.2024 00:35

Альтернативой циклу (после изменения формата отображения) является сохранение файла как .csv (если это подходит), так как при этом также сохранится -.

Spectral Instance 06.03.2024 00:55
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
5
66
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

попробуй это:

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

Другие вопросы по теме