powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / создание сводная таблица
12 сообщений из 12, страница 1 из 1
создание сводная таблица
    #37204536
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день! Спасибо за ответы!
Возникла задача построить сводную таблицу.
вот код, не могу понять в чем загвоздка, помогите исправить :


ошибка 5(недопустимый вызов процедуры)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Public Sub Plot_Pivot(shName As String, Source_data As String)

Dim lastrow%, lastcol%
Dim I%

lastrow = Sheets(Source_data).Range("a65353").End(xlUp).Row
lastcol = Sheets(Source_data).Range("IV1").End(xlToLeft).Column

Sheets.Add after:=ActiveWorkbook.Sheets(Sheets.Count)
ActiveSheet.Name = shName
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="" & Source_data & "!R1C1:R" & lastrow & "C" & lastcol & "", _
Version:=xlPivotTableVersion10).CreatePivotTable _
        TableDestination:="" & shName & "!R3C1", _
        DefaultVersion:=xlPivotTableVersion10

End Sub
...
Рейтинг: 0 / 0
создание сводная таблица
    #37204768
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamx,

переделал так:
но не помогает:)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Sub Plot_Pivot(shName As String, Source_data As String)
Dim opc
Dim lastrow%, lastcol%
Dim PivotTblName$

lastrow = Sheets(Source_data).Range("a65353").End(xlUp).Row
lastcol = Sheets(Source_data).Range("IV1").End(xlToLeft).Column

Sheets.Add after:=ActiveWorkbook.Sheets(Sheets.Count)
ActiveSheet.Name = shName
PivotTblName = shName
shName = "[" & ActiveWorkbook.Name & "]" & shName & "!R3C1"

Set opc = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="" & Source_data & "!R1C1:R" & CStr(lastrow) _
& "C" & CStr(lastcol) & "")

opc.CreatePivotTable _
TableDestination:=shName, _
TableName:=PivotTblName, _
DefaultVersion:=xlPivotTableVersion10

End Sub
...
Рейтинг: 0 / 0
создание сводная таблица
    #37204799
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamx, попробуйте так:

Код: plaintext
1.
2.
With Sheets(Source_data)
Set opc = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=.Range(.Cells( 1 ,  1 ), .Cells(lastrow, lastcol)))
End With

Несмотря на запись рекордера, для построения сводной требуется все именно диапазон, а не его строковое отображение.
...
Рейтинг: 0 / 0
создание сводная таблица
    #37204853
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,

ошибка возникает здесь:
Код: plaintext
1.
2.
3.
opc.CreatePivotTable _
TableDestination:=shName, _
TableName:=PivotTblName, _
DefaultVersion:=xlPivotTableVersion10
я попробовал Ваш вариант, но он выдает ту же ошибку.
...
Рейтинг: 0 / 0
создание сводная таблица
    #37204905
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamx,

ну можно же чуть подумать.
TableDestination:=shName - почему строковое? Запишите рекордером и посмотрите на что ссылается данный параметр - на диапазон
...
Рейтинг: 0 / 0
создание сводная таблица
    #37204913
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamxя попробовал Ваш вариант, но он выдает ту же ошибку.А можете показать, какой в результате код получился? Тот, что с ошибкой?
...
Рейтинг: 0 / 0
создание сводная таблица
    #37204916
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так создаю сводные
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
Option Explicit

Private Sub CreatePivotTables(sh1 As Worksheet, sRang1 As String, sh2 As Worksheet, sRang2 As String)
Dim s As Worksheet, w As Workbook, r As Range
Dim sNamePivot As String
Set w = sh1.Parent
Set s = CheckSheet(w, "Проверочные сводные")
Set r = s.Range("A3")
' Делаем сводную по исходным данным
sNamePivot = "СводнаяТаблица_" + CStr(Now())

w.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    sh1.Range(sRang1)).CreatePivotTable TableDestination:=r, _
    TableName:=sNamePivot, DefaultVersion:=xlPivotTableVersion10
'ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
'ActiveSheet.Cells(3, 1).Select
s.PivotTables(sNamePivot).AddFields RowFields:=Array( _
    "Месяц оплаты", "№ платежного поручения"), ColumnFields:= _
    "Принадлежность"
With s.PivotTables(sNamePivot).PivotFields( _
    "Разбивка оплаченных счетов")
    .Orientation = xlDataField
    .Function = xlSum
End With
Range("C5").Select
With s.PivotTables(sNamePivot).PivotFields( _
    "Сумма по полю Разбивка оплаченных счетов")
    .NumberFormat = "# ##0.00"
End With
Columns("C:C").ColumnWidth =  13 
Columns("D:D").ColumnWidth =  12 

' Делаем сводную по обработанным данным
Set r = Range("I3")

sNamePivot = "СводнаяТаблица_" + CStr(Now())

w.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    sh2.Range(sRang2)).CreatePivotTable TableDestination:=r _
    , TableName:=sNamePivot, DefaultVersion:= _
    xlPivotTableVersion10
s.PivotTables(sNamePivot).AddFields RowFields:=Array( _
    "Месяц оплаты", "№ платежного поручения"), ColumnFields:= _
    "Принадлежность"
With s.PivotTables(sNamePivot).PivotFields( _
    "Разбивка оплаченных счетов")
    .Orientation = xlDataField
    .Function = xlSum
End With
'ActiveWindow.SmallScroll ToRight:=5
'Range("K6").Select
With s.PivotTables(sNamePivot).PivotFields( _
    "Сумма по полю Разбивка оплаченных счетов")
    .NumberFormat = "# ##0.00"
End With
Columns("K:K").ColumnWidth =  13 
Columns("L:L").ColumnWidth =  12 
' Ставим проверочные формулы на проверку соответствия сумм
Range("H5").FormulaR1C1 = "=RC[-3]-RC[5]"
Range("H5").Select
Selection.AutoFill Destination:=Range("F5:H5"), Type:=xlFillDefault
sNamePivot = ActiveCell.SpecialCells(xlLastCell).Row
Range("F5:H5").Select
Selection.AutoFill Destination:=Range("F5:H" + sNamePivot), Type:=xlFillDefault
Columns("H:H").ColumnWidth =  10 . 86 
End Sub

Private Function CheckSheet(w As Workbook, sName As String, Optional bReCreate As Boolean = True) As Worksheet
Dim b As Boolean
b = Application.DisplayAlerts
Application.DisplayAlerts = False
On Error GoTo labErr
' Если есть лист пытаемся удалить его
w.Sheets(sName).Delete
If bReCreate Then
' Если удалили и нужно создавать, создаем и возвращаем
    Set CheckSheet = w.Sheets.Add
    CheckSheet.Name = sName
End If
Application.DisplayAlerts = b
Exit Function
labErr:
Application.DisplayAlerts = b
If bReCreate Then
' Если нужно создавать, создаем и возвращаем
    Set CheckSheet = w.Sheets.Add
    CheckSheet.Name = sName
End If
End Function
...
Рейтинг: 0 / 0
создание сводная таблица
    #37204943
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,

да,конечно

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Public Sub Plot_Pivot(shName As String, Source_data As String)
Dim opc
Dim lastrow%, lastcol%
Dim i%
Dim rgn As String
Dim PivotTblName As String 
Dim PivotTblAddress As String


lastrow = Sheets(Source_data).Range("a65353").End(xlUp).Row
lastcol = Sheets(Source_data).Range("IV1").End(xlToLeft).Column

Sheets.Add after:=ActiveWorkbook.Sheets(Sheets.Count)
    ActiveSheet.Name = shName
    PivotTblName = shName
        PivotTblAddress = "[" & ActiveWorkbook.Name & "]" & shName & "!R3C1"
getRange Source_data, rgn

With Sheets(Source_data)
    Set opc = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=rgn)
End With

opc.CreatePivotTable _
TableDestination:=PivotTblAddress, _
TableName:=PivotTblName
'DefaultVersion:=xlPivotTableVersion10


Private Sub getRange(ByRef SheetName As String, ByRef rgn As String)
Dim r As Range
Set r = Worksheets(SheetName).Range("A1").CurrentRegion
rgn = SheetName & "!" & r.Address(ReferenceStyle:=xlR1C1)
End Sub
...
Рейтинг: 0 / 0
создание сводная таблица
    #37204973
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamx,

Что по Вашему вернет Ваша функция - getRange? Почему Dim rgn As String ? Советую проверять то, какие значения возвращают Ваши функции после работы.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Public Sub Plot_Pivot(shName As String, Source_data As String)
    Dim opc
    Dim lastrow%, lastcol%
    Dim i%
    Dim r [color=red]As Range[/color]
    Dim PivotTblName As String
    Dim PivotTblAddress As String


    lastrow = Sheets(Source_data).Range("a65353").End(xlUp).Row
    lastcol = Sheets(Source_data).Range("IV1").End(xlToLeft).Column

    Sheets.Add after:=ActiveWorkbook.Sheets(Sheets.Count)
    ActiveSheet.Name = shName
    PivotTblName = shName
    
    Set r = Worksheets(SheetName).Range("A1").CurrentRegion
    Set PivotTblAddress = Sheets(shName).Cells( 3 ,  1 )
    
    
    With Sheets(Source_data)
        Set opc = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=r)
    End With

    opc.CreatePivotTable _
            TableDestination:=PivotTblAddress, _
            TableName:=PivotTblName
    'DefaultVersion:=xlPivotTableVersion10
End Sub
...
Рейтинг: 0 / 0
создание сводная таблица
    #37204997
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,
Вы извините, я в миф не очень силен
пишет Object required:
Код: plaintext
Set PivotTblAddress = Sheets(shName).Cells( 3 ,  1 )
...
Рейтинг: 0 / 0
создание сводная таблица
    #37205004
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,

по моему ф-ция getRange вернет стринговое значение с адресом. я не думал,что может быть ошибка, но просто это я взял с учебника. :(
...
Рейтинг: 0 / 0
создание сводная таблица
    #37205011
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamxThe_Prist,
Вы извините, я в миф не очень силен
пишет Object required:
Код: plaintext
Set PivotTblAddress = Sheets(shName).Cells( 3 ,  1 )


фишку просек! Спасибо все заработало
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / создание сводная таблица
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]