О точном определении диапазона (ссылаясь на колонки 1 и диапазон 1, как вы сказали):
Sub RangeDefinition()
Dim sh As Worksheet, lastRow As Long, lastCol As Long, rng As Range
Set sh = ActiveSheet 'use here your needed sheet
lastRow = sh.Range("A" & Rows.count).End(xlUp).Row
lastCol = sh.Cells(1, Columns.count).End(xlToLeft).Column
Set rng = sh.Range(sh.Range("A1"), sh.Cells(lastRow, lastCol))
Debug.Print rng.Address 'in order to check if it returns what you need...
End Sub
Пожалуйста, попробуйте полностью определить ваши переменные. ActiveSheet
может вызвать проблемы, если по ошибке ваш активный лист будет другим. В моем коде я использовал ActiveSheet
только для целей тестирования, рекомендуя использовать ваше (реальное) имя листа.
UsedRange
может работать, если лист только что был создан, и вы не внесли никаких изменений в формат ниже существующие данные ... Таким образом, поля диапазона рассчитываются.
Для другой проблемы сначала попробуйте: TableDestination:=PivotSheetName & "!R3C1",
вместо TableDestination _
`:=PivotSheetName & "!R3C1",`
Как минимум, удалить промежуточную пустую строку. Такой способ работает только для последовательных строк.