Вычитание значений месяца в таблице - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть сводная таблица, в которой первый столбец - это дата, когда были взяты значения, а последующие столбцы - просто данные.Я пытаюсь сделать так, чтобы, когда я нажимаю кнопку, вводятся данные, но если в месяце есть изменение, вставляется «итоговая строка» (или просто еще одна строка, в которую я могу установить значения).

Я не могу понять, как выполнить проверку месяца в выписке.

Пробовал гуглить все, не мог найти ничего конкретного, только кучу кусочков, которые я не могу понять, как собрать.

Private Sub CommandButton1_Click()

Dim dtbl As ListObject
Dim ss As Worksheet
Dim newrow As ListRow


Set ss = Worksheets("Summary")
Set dtbl = ss.ListObjects("Summary_Table")
Dim last As Long
Dim slast As Long

last = dtbl.Range.Rows.Count
slast = dtbl.Range.Rows.Count - 1

With dtbl
    If Month(.Cells(last, 1)) - Month(.Cells(slast, 1)) = 0 Then
        'do nothing
    Else
        Set newrow = tbl.ListRows.Add     'need to add above, not below
            With newrow
                .Range(1) = 1 'replace with desired values
                .Range(2) = 2
            End With
    End If
End With

End Sub

Сводная таблица:

December 5    data1    data2    data3
December 7    data1    data2    data3
...
December 31   data1   data2   data3
TOTAL         SUM(DATA1)   ...   ...
January 3    data1    data2   data3

1 Ответ

0 голосов
/ 24 декабря 2018

Почему бы не иметь данные в виде таблицы Excel и создать их сводную таблицу со строками промежуточных итогов за месяц?Я хотел бы иметь поле даты в качестве фактического поля даты, но формат для отображения, как вы хотите.Также добавьте поля месяца и года, чтобы помочь с последующей группировкой.Вы можете использовать функции Год и Месяц, примененные к полю даты, чтобы создать эти дополнительные столбцы.Правильная настройка данных в начале делает этот формат простым в обслуживании.

enter image description here

Затем просто добавьте кнопку на лист, связанный с кодом, чтобы обновитьповоротный?Или просто щелкните правой кнопкой мыши обновление, если это единственное требуемое действие.

Worksheets("SheetName").PivotTables("PivotTableName").PivotCache.Refresh

Вы даже можете поместить в событие worksheet_change.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...