Форматировать номер, чтобы можно было правильно искать - PullRequest
0 голосов
/ 11 января 2019

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

Мне нужно отформатировать набор чисел, где все 6 цифр, а некоторые имеют начальный ноль. Затем у меня есть отдельный код поиска этих номеров для конкретного, поэтому в результате формат должен быть доступен для поиска. Первый код ниже - это форматирование, которое я не могу понять, а затем код поиска. Если я просто делаю «000000» для форматирования, я не верю, что это больше работает для моего поиска, поскольку теперь они становятся специальным форматом. Помогите пожалуйста?

Sub (First Code)

Dim lngLastRow As Long

lngLastRow = Cells(Rows.Count, "A").End(xlUp).Row

Range("O2:P" & lngLastRow).Select 'specify the range which suits your purpose
With Selection
    Selection.NumberFormat = "General"
    .Value = .Value
End With

Dim SUPLCD As Range
Set SUPLCD = Range("Q2:Q")
With Selection
Selection.NumberFormat = "@"
Selection.Value = Format(Selection, "000000")
End With

End Sub


Sub Worksheet()

 Dim i As Long
    Dim j As Long

    Dim wsCurrent As Worksheet
    Set wsCurrent = ActiveSheet

    Dim wsData As Worksheet
    Dim rngData As Range
    Set wsData = ThisWorkbook.Worksheets("Tempinterior")

    Dim wsTempinterior As Worksheet
    ' Note that .Add will activate the new sheet so we'll
    ' need to reactivate the worksheet that was previously active
    Set wsTempinterior = Worksheets.Add
    wsTempinterior.Name = "copy"

    ' Find the used range in columns A to K and copy over starting
    ' at cell A1 of wsGalreq
    Set rngData = Intersect(wsData.UsedRange, wsData.Range("A:M"))

    ' Copy over the first row containing column headers
    j = 1
    rngData.Rows(1).Copy Destination:=wsTempinterior.Cells(j, 1)

    For i = 2 To rngData.Rows.Count
        ' Check cell of column 10 of row i and copy if matched
        If rngData.Cells(i, 10).Value = "026572" Or rngData.Cells(i, 10).Value = "435740" Or rngData.Cells(i, 10).Value = "622639" Then
            ' Copy over to wsDalreq from row j
            j = j + 1
            rngData.Rows(i).Copy Destination:=wsTempinterior.Cells(j, 1)
        End If
    Next

End Sub

С приведенным выше кодом, поиск не вытягивает записи с этими номерами, я думаю, потому что они отформатированы как Специальные.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Вам не нужно форматировать Col Q, чтобы добавить 0, вы можете выполнить свою задачу без форматирования, используя Like в своем выражении If. Поскольку вам не ясно, где находятся значения, вы форматируете Col Q, но ищете Col J, я использовал Col Q.

Dim wsData As Worksheet
Set wsData = ThisWorkbook.Worksheets("Sheet1") '("Tempinterior")

Dim rngData As Range
Set rngData = Intersect(wsData.UsedRange, wsData.Range("A:M"))

    Sheets.Add(After:=Sheets(Sheets.Count)).Name = "copy"

    j = 1
    rngData.Rows(1).Copy Destination:=Sheets("copy").Cells(j, 1) 'copy headers for rngData

    For i = 2 To rngData.Rows.Count
        If wsData.Cells(i, 17).Value Like "26572" Or Sheet1.Cells(i, 17).Value = "435740" Or _
        Sheet1.Cells(i, 17).Value = "622639" Then
            j = j + 1
            rngData.Rows(i).Copy Destination:=Sheets("Copy").Cells(j, 1)
        End If
    Next i

End Sub
0 голосов
/ 11 января 2019

Сначала избегайте .Select, и вам нужно будет зациклить изменение:

Sub first()

    Dim lngLastRow As Long

    With Worksheets("Sheet1") 'Change to your sheet

        lngLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        With .Range("O2:P" & lngLastRow) 'specify the range which suits your purpose
            .NumberFormat = "General"
            .Value = .Value
        End With

        Dim SUPLCD As Range
        Set SUPLCD = .Range("Q2:Q" & lngLastRow)

        Dim rng As Range
        For Each rng In SUPLCD
            rng.NumberFormat = "@"
            rng.Value = Format(rng.Value, "000000")
        Next rng

    End With

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