Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Макрос применяется только на одном листе

Автор Pasha777, 17.08.2011, 15:02

« назад - далее »

Pasha777

Хелп!
Записал макрос на 1-ом листе, пытаюсь применить на других - не получается.
Что нужно добавить в код?

nilem

Код находится в стандартном модуле?

Pasha777

Sub Макрос1()
'
' Макрос1 Макрос
'

'
    ActiveWindow.SmallScroll Down:=-3
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Астрахань!R1C1:R65536C4", Version:=xlPivotTableVersion10).CreatePivotTable _
        TableDestination:="Астрахань!R2C12", TableName:="СводнаяТаблица1", _
        DefaultVersion:=xlPivotTableVersion10
    Sheets("Астрахань").Select
    Cells(2, 12).Select
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Наименование")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("С/С")
        .Orientation = xlRowField
        .Position = 2
    End With
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Реализ.шт.")
        .Orientation = xlRowField
        .Position = 3
    End With
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Реал.руб.")
        .Orientation = xlRowField
        .Position = 4
    End With
    ActiveSheet.PivotTables("СводнаяТаблица1").AddDataField ActiveSheet.PivotTables _
        ("СводнаяТаблица1").PivotFields("Наименование"), _
        "Количество по полю Наименование", xlCount
    ActiveSheet.PivotTables("СводнаяТаблица1").AddDataField ActiveSheet.PivotTables _
        ("СводнаяТаблица1").PivotFields("С/С"), "Количество по полю С/С", xlCount
    With ActiveSheet.PivotTables("СводнаяТаблица1").DataPivotField
        .Orientation = xlColumnField
        .Position = 1
    End With
    ActiveSheet.PivotTables("СводнаяТаблица1").AddDataField ActiveSheet.PivotTables _
        ("СводнаяТаблица1").PivotFields("Реализ.шт."), "Количество по полю Реализ.шт." _
        , xlCount
    ActiveSheet.PivotTables("СводнаяТаблица1").AddDataField ActiveSheet.PivotTables _
        ("СводнаяТаблица1").PivotFields("Реал.руб."), "Количество по полю Реал.руб.", _
        xlCount
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields( _
        "Количество по полю Наименование")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields( _
        "Количество по полю С/С")
        .Caption = "Среднее по полю С/С"
        .Function = xlAverage
    End With
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields( _
        "Количество по полю Реализ.шт.")
        .Caption = "Сумма по полю Реализ.шт."
        .Function = xlSum
    End With
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields( _
        "Количество по полю Реал.руб.")
        .Caption = "Сумма по полю Реал.руб."
        .Function = xlSum
    End With
    ActiveWorkbook.ShowPivotTableFieldList = False
    ActiveWindow.SmallScroll Down:=-123
    Columns("A:D").Select
    Selection.ClearContents

    Range("L4:O4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy

    Range("A2").Select
    ActiveSheet.Paste
    Range("E9").Select
End Sub



Вотмакрос какой получился

Pasha777

Названия листов- названия городов.
Как сделать так, что бы они автоматически менялись в коде?

GWolf

Встраивать код в таблицу, еще та засада. Может оглушите примерчиком!?

А имена листов в код - через переменную.
Путей к вершине - множество. Этот один из многих!

Pasha777

Вот пример:
у меня 3 листа, на каждом по 2 таблицы.
Допустим на перовм листе делаю следущие действия: создаю две _сводные_ таблицы (по одной на каждую имеющуюся): наименование, среднее знач по колонке цена 1 и сумма знач по остальным, вставляю данные из сводной вместо тех, что есть и удалаю _сводные_. Далее применяю функцию ВПР для присоединения данных из таблицы 2 к таблице 1. То есть хочу, что бы в первой таблице стало 7 колонок.
Пока пытался сделать первую часть, создание сводных и замена значений в таблице, но ко всем листам почему то не применяется..

nilem

Вместо сводной можно попробовать такой макрос на зеленой стрелке - см. лист Астрахань. Дальше, про 7 колонок непонятно. И конечная цель в чем?