Автоматически выберите последнюю строку в исходных данных сводной таблицы, чтобы избежать (пробелы) - PullRequest
0 голосов
/ 18 июня 2010

Требуется небольшая помощь, у меня есть макрос, автоматически создающий сводные таблицы и диаграммы, все это работает нормально, но я получаю (пусто) в своей сводной таблице, потому что мой диапазон до 65536. Как автоматически получить lastrow / column в моих исходных данных, чтобы я не получал никаких пробелов. Данные постоянно меняются, поэтому они должны быть автоматически

Вот исходные данные, я надеюсь получить R65536C37, который будет автоматически сгенерирован на основе последнего столбца «необработанного» листа

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    "raw!R1C1:R65536C37").CreatePivotTable _
    TableDestination:="Frontpage!R7C1", TableName:="PivotTable2", _
    DefaultVersion:=xlPivotTableVersion10

Я пытался;

LastRow = ActiveSheet.UsedRange.Rows.Count
SourceData:= "raw!R1C1:" & LastRow & C37"

Pivot Macro

    Sheets("Frontpage").Select
Range("A7").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    "raw!R1C1:R65536C37").CreatePivotTable _
    TableDestination:="Frontpage!R7C1", TableName:="PivotTable2", _
    DefaultVersion:=xlPivotTableVersion10
Sheets("Frontpage").Select
Cells(7, 1).Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("Frontpage!$A$7:$H$22")
ActiveChart.ChartType = xlColumnClustered
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Priority")
    .Orientation = xlRowField
    .Position = 1
End With
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
    "PivotTable2").PivotFields("Case ID"), "Count of Case ID", xlCount
ActiveChart.Parent.Name = "IncidentsbyPriority"
ActiveChart.ChartTitle.Text = "Incidents by Priority"
Dim RngToCover As Range
Dim ChtOb As ChartObject
Set RngToCover = ActiveSheet.Range("D7:L16")
Set ChtOb = ActiveSheet.ChartObjects("IncidentsbyPriority")
ChtOb.Height = RngToCover.Height ' resize
ChtOb.Width = RngToCover.Width ' resize
ChtOb.Top = RngToCover.Top ' reposition
ChtOb.Left = RngToCover.Left ' reposition

Любая помощь будет принята с благодарностью. Мне нужно повторить это в четырех других опорных точках, чтобы избежать попадания (пустых) в мои таблицы и диаграммы.

1 Ответ

0 голосов
/ 19 июня 2010

Я обычно использую именованный динамический диапазон.Например, создайте именованный диапазон с именем RawData с формулой:= OFFSET (Raw! $ A $ 1,0,0, COUNTA (Raw! $ A: $ A), COUNTA (Raw! $ 1: $ 1))

Предполагается, что пробелы отсутствуют в пределах данные в столбце 1 или строке 1 (пробелы / пустые после конца данных не являются проблемой).

Если в ваших данных есть пробелы, вам нужно использовать другую функцию: выможет загрузить набор функций (fxlCountFuncs.zip) для этого вида подсчета изhttp://www.decisionmodels.com/downloads.htm

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