Каждую неделю я импортирую необработанные данные Excel из внешнего источника. Я обычно вставляю их как значения, чтобы он поддерживал таблицу, в которую они должны войти. Этот скрипт запускается еженедельно, чтобы исправить некоторые проблемы форматирования, такие как изменение выбранных столбцов на числа или даты, а затем сортировка (для имеющегося у меня массива). Но когда я запускаю это, он выбирает весь столбец (всего пару столбцов), поэтому, когда скрипт запускается, он расширяет таблицу до тысяч строк и выдает ошибочные данные в более поздней сводной таблице. Мне нужно изменить код выбора столбцов, но я не уверен, как.
Одна большая проблема состоит в том, что пара этих столбцов имеет ячейки без данных. Если это возможно, следует выбрать все строки в таблице TABLE для столбца, поскольку этот сценарий не будет работать до тех пор, пока не будут введены новые данные, уже изменяя размер таблицы.
Я записал действия, необходимые для создания этого скрипта, что означает, что он не очень оптимизирован, но он выполняет свою работу и достаточно быстро. Я попытался следующий код, но я не думаю, что он работает как замена для Columns.ActiveSheet.Range ("C2", ActiveCell.SpecialCells (xlLastCell)). Выберите
Sub WeeklyRoutine()
'
' WeeklyRoutine Macro
'
'
Sheets("PR Raw Data").Select
Columns("EN:EN").Select
Selection.TextToColumns Destination:=Range( _
"BurnData[[#Headers],[est_po_place]]"), DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _
False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 3) _
, TrailingMinusNumbers:=True
Range("EN2").Select
ActiveWorkbook.Worksheets("PR Raw Data").ListObjects("BurnData").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("PR Raw Data").ListObjects("BurnData").Sort. _
SortFields.Add Key:=Range("EN2"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("PR Raw Data").ListObjects("BurnData").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("Current Week - SMPP Data").Select
Columns("C:C").Select
Selection.TextToColumns Destination:=Range("SMPPTrend[[#Headers],[PR]]"), _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter _
:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, _
Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
Columns("I:I").Select
Selection.TextToColumns Destination:=Range("SMPPTrend[[#Headers],[PR Age]]") _
, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
Columns("H:H").Select
Selection.TextToColumns Destination:=Range( _
"SMPPTrend[[#Headers],[Est PO Place Dt]]"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 3), TrailingMinusNumbers:=True
Selection.NumberFormat = "m/d/yyyy"
Range("H2").Select
ActiveWorkbook.Worksheets("Current Week - SMPP Data").ListObjects("SMPPTrend"). _
Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Current Week - SMPP Data").ListObjects("SMPPTrend"). _
Sort.SortFields.Add Key:=Range("H2"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Current Week - SMPP Data").ListObjects( _
"SMPPTrend").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub