Ошибка 1004: недопустимые ссылки при создании сводной таблицы с помощью VBA - PullRequest
0 голосов
/ 01 сентября 2010

В моем файле Excel есть лист с 3 столбцами (идентификатор, тип, месяц).

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

Мне сказали, что сводная таблица является решением. поэтому я создал сводную таблицу с макро-рекордером. когда я пытаюсь выполнить макрос, он посылает мне ошибку 1004: недопустимые ссылки.

вот мой макрос:

Sub Relivr()
'
Dim LastRow As Long

LastRow = ActiveWorkbook.Worksheets("Delivery").Range("A65536").End(xlUp).Row

'the error comes from this line
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="'Delivery'!R1C1:R" & LastRow & "C4", Version:=xlPivotTableVersion12).CreatePivotTable TableDestination:="'Delivery'!R1C13", TableName:="Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion12*
    Sheets("Delivery").Select
    Cells(1, 13).Select
    With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("ID")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
        "Month")
        .Orientation = xlColumnField
        .Position = 1
    End With

    ActiveSheet.PivotTables("Tableau croisé dynamique2").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique2").PivotFields("type"), _
        "Nb delivries", xlCount

    ActiveSheet.PivotTables("Tableau croisé dynamique2").RowGrand = False

    Range("H3").Select
    ActiveCell.FormulaR1C1 = "=COUNTIF(RC[6]:R[12342]C[6],""=2"")"
    Range("H4").Select
    ActiveCell.FormulaR1C1 = "=COUNTIF(R[-1]C[7]:R[12341]C[7],""=2"")"

End Sub

Я использую офис 2007

Любая помощь приветствуется.

Спасибо

1 Ответ

0 голосов
/ 01 сентября 2010

Это можно сделать двумя способами:

  1. Как вы говорите, сводная таблица была бы очевидным выбором, но я не уверен, почему вы считаете, что VBA исключает использование вамиодин?Управлять сводными таблицами в VBA сравнительно легко, если вы освоите его - макрос-рекордер действительно полезен для изучения входов и выходов объектной модели, или здесь - учебник для начинающих.

  2. Кроме того, вы можете подключиться к данным с помощью ADO и использовать запрос SQL для получения необходимой информации.Обратите внимание, что для этого потребуется соответствующим образом отформатировать данные на отдельном рабочем листе, но это можно сделать как часть программы.У Microsoft есть хорошее руководство по использованию ADO для запроса данных Excel .

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