Страницы: 1
RSS
Поместить продажи из таблицы листа 1 в таблицу листа 2 на основании текущей даты через ВБА
 
Здравствуйте, друзья!

Нужнен совет. Задача тривиальна. На листе "Sales" есть таблица, туда каждый день вносятся продажи, себестоимость и прибыл за текущий день. Есть другая таблица на листе "Sales Data". В нее хотелось бы по клику кнопки с листа "Sales" переносить суммарные продажи, себестоимость и прибыль за каждый конкретный день.
На данном конкретном примере, хотелось бы содержимое ячеек E3, F3, G3 с листа "Sales" перенести в ячейки C5, C6, C7 листа "Sales Data" по клику мышки. Завтра, когда снова открою файл, дата в ячейке B1 уже будет 03/08/22, значит и продажи надо перенести в D5, D6, D7 соответственно. Пример во вложение. Заранее спасибо!
 
если честно, то вашу таблицу на листе Sales Data надо переделать в вертикальную (чтобы она уходила вниз), а не вправо, как у вас. Вы через месяц заходите отфильтровать вашу таблицу и... придёте снова на форум и скажите: Ребят, я тут фигню нагородил, как мне теперь вот это всё отфильтровать.
А если сейчас вам кто-то напишет макрос, то когда вы поймёте, что таблица должна быть вертикальной, а не горизонтальной, то и макрос придётся переписывать
P.S. Не совсем правильно давать переменным одно и тоже имя Dim  Profit, Profit

Попробуйте так
Код
Sub Test()
    Dim dtDate As Date, dSales As Double, dExpenses As Double, dProfit As Double
    Dim Rng As Range, LO As ListObject

    With Worksheets("Sales")
        dtDate = CDate(.Range("B1"))
        dSales = .Range("E3")
        dExpenses = .Range("F3")
        dProfit = .Range("G3")
    End With
    
    With Worksheets("Sales Data")
        Set LO = .ListObjects(1)
        Set Rng = LO.HeaderRowRange.Find(Format$(dtDate, "dd\/MM\/yy"), , xlFormulas, xlWhole)
        If Not Rng Is Nothing Then
            With LO.DataBodyRange
                .Cells(1, Rng.Column).Value = dSales
                .Cells(2, Rng.Column).Value = dExpenses
                .Cells(3, Rng.Column).Value = dProfit
            End With
        End If
    End With
End Sub
Изменено: New - 02.08.2022 13:44:45
 
New, спасибо большое за предложенный вариант! Все работает! Вообще как дальше поменять макрос я разберусь, для меня было важно сам способ определения ячеек и записи инфы туда определить. И Ваш вариант открыл мне новые горизонты для изучения, например: ListObjects, HeaderRowRange.Find, DataBodyRange. Буду теперь изучать. Спасибо! )

З.Ы. По поводу таблицы, есть причина почему она горизонтальная, а не вертикальная. Это лишь кусок всего файла, там дальше по ходу дела это имеет значение, хотя вертикальный вариант я тоже рассматривал. А по-поводу переменной, это да, я когда файл под пример менял, пропустил ))
 
Вот ещё почитайте
https://www.thespreadsheetguru.com/blog/2014/6/20/the-vba-guide-to-listobject-excel-tables
 
и вообще записывайте свои действия макрорекордером там увидите много нового для себя
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх