Страницы: 1
RSS
Перенос данных для суммирования из таблицы с динамичными столбцами, код в макрос Exel 2016
 
Добрый день!

Прошу помочь с решением: есть таблица, в которую каждый месяц добавляется новый столбец с данными по продажам. Требуется добавить в макрос условие, чтобы выбор значений определялся именно из нового столбца каждый месяц
 
Евгения, дд.
Цитата
Евгения написал:
есть таблица
врете, нет никакой таблицы.
приложите фал-пример с исходными данными и покажите желаемый результат, ну само собой макрос в который нужно добавить условие
Изменено: Mershik - 09.07.2020 15:57:34
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
приложите фал-пример с исходными данными и покажите желаемый результат, ну само собой макрос в который нужно добавить условие
Как смогла схематизировала) Исходный файл не редактируется, к сожалению, а данные не подлежат огласке.В общем, перед тем как будет выполнятся команда из макроса, есть ещё условие выбора дстрибьютора из списка в фильтре, а далее уже вот

Код
Sub Вывод_списка()
'
' Вывод_списка Macro
' Вывод сумм по нужным покупателям
'
' Keyboard Shortcut: Ctrl+й
'
    Sheets.Add After:=ActiveSheet
    Columns("D:D").ColumnWidth = 15.57
    Range("D3").Select
    ActiveCell.FormulaR1C1 = "покупатель 1"
    Range("F2").Select
    Columns("E:E").ColumnWidth = 20.71
    Range("E3").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(Sheet1!R[2]C[2]:R[6]C[2])"
    Range("D4").Select
    ActiveCell.FormulaR1C1 = "покупатель 7"
    Range("E4").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(Sheet1!R[31]C[2]:R[35]C[2])"
    Range("D5").Select
    ActiveCell.FormulaR1C1 = "покупатель 10"
    Range("E5").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(Sheet1!R[45]C[2]:R[49]C[2])"
    Columns("E:E").Select
    Selection.NumberFormat = "0.00"
End Sub
Изменено: Евгения - 09.07.2020 18:21:30
 
Цитата
Евгения написал:
данные не подлежат огласке
не нужно ваш реальный файл прикреплять, нужно похожий и заменить секретную инфу на яблоки и пельмени и т.д. а из этого ничего не понятно.
а так вообще по логике =SUM(Sheet1!R[2]C[2]:R[6]C[2]) замените SUMIF или SUMIFS
Изменено: Mershik - 09.07.2020 16:55:10
Не бойтесь совершенства. Вам его не достичь.
 
Совсем подобный я не осилю, там много сложных для меня фильтров.
Собственно, вот ниже подредактированный скрин с оригинала, пример оформлен в этом же стиле, задачи все в примере соответствуют. Требуется с нужных "покупателей" из списка вывести сумму за (самое главное) новый месяц, который появляется в отчете в новом столбце каждый месяц. Ниже указаны данные до мая (5), также и в примере расчет идет со столбца с пометкой "5", собственно, как сделать, чтобы макрос автоматически рассчитал со столбца "6", когда тот появится в отчете

 
Евгения, конкретно для примера из #3 (можно не привязываться к "итого")
Код
Sub ds()
Dim  MyVal As Range, lr As Long
Dim sh1 As Worksheet, sh2 As Worksheet
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("Лист2")
lr = sh1.Cells(Rows.Count, 1).End(xlUp).Row
Set MyVal = sh1.Rows(4).Find("итого:")
sh2.Cells(3, 4) = "покупатель 1"
sh2.Cells(3, 5) = Application.WorksheetFunction.SumIf(sh1.Range(sh1.Cells(5, 1), sh1.Cells(lr, 1)), sh2.Cells(3, 4), sh1.Range(sh1.Cells(5, MyVal.Column - 1), sh1.Cells(lr, MyVal.Column - 1)))
sh2.Cells(4, 4) = "покупатель 2"
sh2.Cells(4, 5) = Application.WorksheetFunction.SumIf(sh1.Range(sh1.Cells(5, 1), sh1.Cells(lr, 1)), sh2.Cells(4, 4), sh1.Range(sh1.Cells(5, MyVal.Column - 1), sh1.Cells(lr, MyVal.Column - 1)))
sh2.Cells(5, 4) = "покупатель 3"
sh2.Cells(5, 5) = Application.WorksheetFunction.SumIf(sh1.Range(sh1.Cells(5, 1), sh1.Cells(lr, 1)), sh2.Cells(5, 4), sh1.Range(sh1.Cells(5, MyVal.Column - 1), sh1.Cells(lr, MyVal.Column - 1)))
End Sub

Изменено: Mershik - 09.07.2020 18:09:40
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
Евгения , конкретно для примера из #3
СПАСИБО!!! Это оно)
 
Евгения, код следует оформлять соответствующим тегом. Ищите такую кнопку (см. скрин) и исправьте своё сообщение.
 
Исправлено
Страницы: 1
Наверх