Страницы: 1
RSS
Вставка данных в первую пустую ячейку 2-й строки
 
Добрый день!
Помогите, пожалуйста, с макросом. Второй день пытаюсь решить простецкую задачу, но интернет предлагает не совсем то, что мне нужно. Поиск по форуму тоже не помог.
В общем, необходимо из сводной таблицы копировать значения из диапазона C56:C155 в другой лист, чтобы первая ячейка этих данных была в первой непустой ячейке строки 2. Дело в том, что каждую неделю данные будут пополняться.
Записал макрос, но он копирует данные в активную ячейку. Я полагаю, что не хватает строки для выбора нужной ячейки.
Заранее спасибо!
Код
Sub Macro()
    Sheets("Cone Pivot").Select
    With ActiveSheet.PivotTables("Ñâîäíàÿ òàáëèöà2").PivotFields("parameter_id")
        .PivotItems("SROD_LMC").Visible = False
        .PivotItems("SROD_Mean").Visible = False
        .PivotItems("SROD_MMC").Visible = False
        .PivotItems("SROD_OOR").Visible = False
        .PivotItems("Upper_LROD").Visible = False
        .PivotItems("(blank)").Visible = False
    End With
    ActiveWindow.SmallScroll Down:=21
    Range("C56:C155").Select
    Selection.Copy
    Sheets("Cone Width").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
 
Добрый день!
Цитата
shooreek написал:
чтобы первая ячейка этих данных была в первой непустой ячейке строки 2.
Вы уверены что именно первой непустой ячейке в строке? Т.е. данные у вас будут каждый раз ложиться правее предыдущих?
 
Да, всё верно. Необходимо растить массив данных, регулярно добавляя новые значения.
 
Вопрос был в том что вы растить массив будете вправо???

Если так, то поиск первой пустой ячейки в строке:
Код
ColumnsCount = Workbooks(NameBook).Worksheets(Sheet).Cells(1, Columns.Count).End(xlToLeft).Column + 1
Первой пустой ячейки по столбцу:
Код
RowsCount = Workbooks(NameBook).Worksheets(Sheet).Cells(Rows.Count, 2).End(xlUp).Row + 1
 
Цитата
Ametist69 написал: Вопрос был в том что вы растить массив будете вправо?
Массив растёт вправо.
Добавил строку, но вставляет данные все равно в активную ячейку, а не справа от последней занятой ячейки второй строки.
Файл добавить не могу, т.к. весит более 100 Кб.
Код
Sub Macro()
    Sheets("Cone Pivot").Select
    With ActiveSheet.PivotTables("Ñâîäíàÿ òàáëèöà2").PivotFields("parameter_id")
        .PivotItems("SROD_LMC").Visible = False
        .PivotItems("SROD_Mean").Visible = False
        .PivotItems("SROD_MMC").Visible = False
        .PivotItems("SROD_OOR").Visible = False
        .PivotItems("Upper_LROD").Visible = False
        .PivotItems("(blank)").Visible = False
    End With
    ActiveWindow.SmallScroll Down:=21
    Range("C56:C155").Select
    Selection.Copy
    Sheets("Cone Width").Select
       
    ColumnsCount = Workbooks("FRM").Worksheets("Cone Width").Cells(2, Columns.Count).End(xlToLeft).Column + 1       
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False   
End Sub
Изменено: shooreek - 11.04.2019 14:29:54
 
Цитата
shooreek написал:
Добавил строку, но вставляет данные все равно в активную ячейку, а не справа от последней занятой ячейки второй строки.
Selection то замените. Selection - это активный диапазон, а по коду вы в него и вставляете.
За место строки:
Код
Sheets("Cone Width").Select
      
ColumnsCount = Workbooks("FRM").Worksheets("Cone Width").Cells(2, Columns.Count).End(xlToLeft).Column + 1
    
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

поставьте

Код
Sheets("Cone Width").Select      

ColumnsCount = Workbooks("FRM").Worksheets("Cone Width").Cells(2, Columns.Count).End(xlToLeft).Column + 1
    
Worksheets("FRM").Cells(2, ColumnsCount).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 
Спасибо!
Вы просто Бог экселя! :)
 
Вы не могли бы еще подсказать как сделать так, чтобы вкладка со сводной таблицей каждый раз создавалась с одним и тем же именем?
В файле есть вкладка Лист1, но сводные таблицы продолжают создаваться со сквозной нумерацией, даже если предыдущие вкладки удалены.
Т.е., например, я создаю новую вкладку, а она вместо того, чтобы называться Лист2, как мне бы хотелось, создается Лист5 (Лист6, Лист7 и т.д.), хотя вкладки с названием Лист2 уже в файле нет.
Возникнет ли подобная проблема с названием "Сводная таблица1"?
Заранее спасибо!

Часть кода (ошибка выделена):
Код
Sub Pivot()
'
' Pivot Макрос
'

'
    Sheets("Cone").Select
    Cells.Select
    Range("A3408").Activate
    Sheets.Add
' ------ ошибка здесь -------------------------------------------------
   ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Cone!R1C1:R65536C25", Version:=xlPivotTableVersion10).CreatePivotTable _
        TableDestination:="Лист2!R3C1", TableName:="Сводная таблица1", _
        DefaultVersion:=xlPivotTableVersion10
' ------------------------------------------------------------------------
    Sheets("Лист2").Select
    Cells(3, 1).Select
    With ActiveSheet.PivotTables("Сводная таблица1")
        .ColumnGrand = True
        .HasAutoFormat = True
        .DisplayErrorString = False
        .DisplayNullString = True
        .EnableDrilldown = True
        .ErrorString = ""
        .MergeLabels = False
        .NullString = ""
        .PageFieldOrder = 2
        .PageFieldWrapCount = 0
        .PreserveFormatting = True
        .RowGrand = True
        .SaveData = True
        .PrintTitles = False
        .RepeatItemsOnEachPrintedPage = True
        .TotalsAnnotation = False
        .CompactRowIndent = 1
        .InGridDropZones = True
        .DisplayFieldCaptions = True
        .DisplayMemberPropertyTooltips = False
        .DisplayContextTooltips = True
        .ShowDrillIndicators = True
        .PrintDrillIndicators = False
        .AllowMultipleFilters = True
        .SortUsingCustomLists = True
        .FieldListSortAscending = False
        .ShowValuesRow = True
        .CalculatedMembersInFilters = False
        .RowAxisLayout xlTabularRow
    End With
    With ActiveSheet.PivotTables("Сводная таблица1").PivotCache
        .RefreshOnFileOpen = False
        .MissingItemsLimit = xlMissingItemsDefault
    End With
    ActiveSheet.PivotTables("Сводная таблица1").RepeatAllLabels xlRepeatLabels
    With ActiveSheet.PivotTables("Сводная таблица1").PivotFields("parameter_id")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Сводная таблица1").PivotFields("subgroup_number")
        .Orientation = xlRowField
        .Position = 2
    End With
    ActiveSheet.PivotTables("Сводная таблица1").AddDataField ActiveSheet. _
        PivotTables("Сводная таблица1").PivotFields("double_data_value"), _
        "Сумма по полю double_data_value", xlSum
Страницы: 1
Наверх