Я самоучка и относительно новичок в 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