Я получаю еженедельный файл, в котором столбец должен быть разделен с использованием разделителя «,», но в котором позиция целевого столбца и длина значений в этом столбцы неизвестны и будут отличаться.Сохранять ведущие нули в Excel Split Output
Некоторые значения в целевом столбце для Split имеют ведущие 0, которые в настоящее время удаляются, как и ожидалось, если символы были введены в столбец, отформатированный как General. Целевой столбец для Split всегда форматируется как Text перед выполнением Split. Все значения из столбцов, отличных от целевого столбца, должны быть сохранены.
Целевая колонка, по-видимому, преобразуется в генератор вместо требуемого формата текста после выполнения приведенной ниже процедуры. Я не уверен, как обеспечить, чтобы столбец оставался Text и ведущие 0 сохраняются.
Текущий Суб:
Sub Test_Split_Column()
Dim LR As Long, i As Long, LC As Integer
Dim x As Variant
Dim r As Range, iCol As Integer
On Error Resume Next
Set r = Application.InputBox("Click in the column to split by", Type:=8)
On Error GoTo 0
If r Is Nothing Then Exit Sub
On Error Resume Next
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Value = " "
On Error GoTo 0
iCol = r.Column
Application.ScreenUpdating = False
LC = Cells(1, Columns.Count).End(xlToLeft).Column
LR = Cells(Rows.Count, iCol).End(xlUp).Row
Columns(iCol).Insert
For i = LR To 1 Step -1
With Cells(i, iCol + 1)
If InStr(.Value, ",") = 0 Then
.Offset(, -1).Value = .Value
Else
x = Split(.Value, ",")
.Offset(1).Resize(UBound(x)).EntireRow.Insert
.Offset(, -1).Resize(UBound(x) - LBound(x) + 1).Value = Application.Transpose(x)
End If
End With
Next i
Columns(iCol + 1).Delete
LR = Cells(Rows.Count, iCol).End(xlUp).Row
With Range(Cells(1, 1), Cells(LR, LC))
On Error Resume Next
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
On Error GoTo 0
.Value = .Value
End With
With ActiveSheet.UsedRange
.Replace What:=" ", Replacement:=vbNullString, LookAt:=xlWhole
End With
Application.ScreenUpdating = True
End Sub
Примеры необработанных данных, выходной ток, и желанный выход связан ниже:
Любая помощь вы можете предоставить высоко оценили! Благодаря!
вы можете попробовать сформировать ячейки как текст с '.NumberFormat =" @ "перед тем, как назначить свои значения. – Slai
Также вы можете установить столбец как формат «Текст» – nightcrawler23
Возможно, вы сможете использовать метод «Range.TextToColumns» и указать столбцы как «xlTextFormat» –