VBA Excel вставляет 0 перед только определенными значениями - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть таблица со значениями в столбце А. Некоторые из этих значений - 1,5 535, W15.Моя проблема в том, что мне нужны все значения до 10 с нулем впереди (например, 01,05), но без других значений.Я думал о форматировании текста и выполнении поиска и замены, но тогда все мои числа будут затронуты.

Columns("L").Replace What:="5", _'
                        Replacement:="05", _
                        LookAt:=xlPart, _
                        SearchOrder:=xlByRows, _
                        MatchCase:=False, _
                        SearchFormat:=False, _
                        ReplaceFormat:=False

Моя следующая мысль состояла в том, чтобы сделать все мои значения длиной в 6 цифр, но подразделения больше не вводили в систему моей компании.

lastRow = Range("A1048576").End(xlUp).Row
Range("B2:B" & lastRow).Formula = "=Text(A1,"000000")

Я исследовал онлайн, но не могу найти решение.Буду признателен за любую оказанную помощь.Спасибо, Мэтт

Ответы [ 4 ]

0 голосов
/ 21 февраля 2019

Не уверен, что это лучший способ сделать это, но, похоже, работает:

Sub format_stuff()

Dim R1 As Range, R2 As Range, a
Set R2 = Intersect(ActiveSheet.UsedRange, Columns("L"))

For Each R1 In R2
    R1.NumberFormat = "00": a = R1.Text: R1.NumberFormat = "@": R1 = a
Next R1

End Sub
0 голосов
/ 21 февраля 2019

Вы можете ...

  1. зациклить ячейки в диапазоне
  2. проверить, содержит ли ячейка значение
  3. отформатировать ячейку в текстовый формат, еслионо имеет значение
  4. , добавляющее начальный ноль, если длина значения, если 1 (например, однозначное число)

Вот этот код:

Public Sub AddingLeadingZeroIfSingleDigit()
    For Each c In Worksheets("Test").Columns("L").Cells
        If Not IsEmpty(c) Then
            c.NumberFormat = "@"
            If Len(CStr(c.Value)) = 1 Then
                c.Value = "0" & CStr(c.Value)
            End If
        End If
    Next
End Sub

Возможно, вам потребуется настроить строку 2 кода в соответствии с вашей рабочей книгой.В настоящее время он настроен на цикл по ячейкам в столбце L рабочего листа с именем «Тест».

0 голосов
/ 21 февраля 2019

вы можете сначала проверить значение ячейки, а затем отформатировать его

= IF (D23 <10, TEXT (D23, "00"), D23) </p>

enter image description here

0 голосов
/ 21 февраля 2019

вы можете попробовать код удара.просто добавьте "'" & ниже txt (a1,

Range ("B2: B" & lastRow) .Formula = "= "' " & Text (A1," 000000 "))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...