VBA L oop текст в столбец формат даты - PullRequest
0 голосов
/ 20 марта 2020

Я самоучка и относительно новичок в VBA! Я многому научился на вашем сайте, но теперь я застрял.

Я получаю несколько файлов, в которых есть несколько столбцов того, что должно быть датами. Файлы изначально экспортируются в формате CSV и открываются в Excel. При открытии в любой версии Excel до Office 365 только те даты, в которых «день» меньше 12 ..., распознаются как даты, а день записывается как месяц. Я выяснил, как запустить текст в столбцы дважды, чтобы исправить даты (ы), которые импортируются (согласно VBA ниже)

Columns("E:E").Select
Selection.TextToColumns Destination:=Range("E1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 4), TrailingMinusNumbers:=True
Columns("E:E").Select
Selection.TextToColumns Destination:=Range("E1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 3), TrailingMinusNumbers:=True

Однако я должен указать столбцы, которые содержат даты, которых я пытаюсь избежать, предполагая, что в какой-то момент конкретные столбцы могут измениться. Я нашел несколько VBA, которые будут проходить через l oop и выделять столбцы на основе заголовков - однако я не могу понять, как применить текст к столбцам с теми столбцами, которые он находит, которые содержат дату. Я работал с различными фрагментами кода, которые я нашел на этом и других сайтах, но теперь застрял ...

Этот код ниже хорошо работает, чтобы найти столбцы и что-то с ними сделать, но мне нужно сделать это использовать вышеуказанный код вместо того, который я выделил ниже в коде ... так как я не уверен, что он делает, но он заменяет значение в правильно определенных столбцах

Строка I полагаю, что мне нужно заменить следующее: mycell.Value = Val (mycell.Value), поскольку это что-то делает и заменяет соответствующие столбцы на какое-то значение, но не делает то, что я хочу, то есть вывод столбцов и вывод текста в столбцы дважды. Первоначально написанный код выглядит следующим образом:

Sub FindAndConvert()
    Dim i           As Integer
    Dim lastRow     As Long
    Dim myRng       As Range
    Dim mycell      As Range
    Dim MyColl      As Collection
    Dim myIterator  As Variant

    Set MyColl = New Collection

    MyColl.Add "Birthdate"
    MyColl.Add "Collection Date"

    lastRow = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

    For i = 1 To 200
        For Each myIterator In MyColl
            If Cells(1, i) = myIterator Then
                Set myRng = Range(Cells(2, i), Cells(lastRow, i))
                For Each mycell In myRng


                    **mycell.Value = Val(mycell.Value)**


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