Сводная диаграмма Excel: показать последние 25 строк

У меня есть набор данных, и у меня есть макрос, добавляющий строку каждые 5 секунд. Это связано со сводной таблицей и сводной диаграммой на панели инструментов.

Выглядит так (на фото моя вторая версия с инкрементной вместо декрементной)

У меня есть поле на скрытой странице, где я помещаю, сколько последних зарегистрированных строк я хочу видеть

Например, у меня есть 1000 строк, и я хочу, чтобы график панели управления нажатием кнопки переключался между «просмотреть только последний X» или «просмотреть все».

Я хочу найти более легкий способ сделать то, что я сделал, потому что я вижу большую задержку


Я добился этого, добавив в свои данные два столбца с формулой записи макроса таким образом, чтобы

Col D: дать значение линии

Col E : если значение D > 0, напишите «последние X журналов», а остальные «до X журналов».


Я поставил этот код для Col D

Настройки! I4 = Поле, где я но количество журналов, которые я хочу Ex; 15

Настройки! I5 = Где я храню значение последней строки, которое будет использоваться в формуле, таким образом обновляя всю строку в каждой добавленной строке

setsheet.Range("I5").Value = lastrow

logsheet.Range("D" & lastfreerow).Value = ("=Settings!I4-(Settings!I5)") & "+" & setsheet.Range("I5").Text

Это напишет формулу в ячейке и будет выглядеть так:

=Settings!I4-(Settings!I5)+7

результатом является обратный отсчет, где самым последним значением является «15», а самым старым идет отрицательное значение.


И поместите этот код для Col E

logsheet.Range("E" & lastfreerow).Value = "=IF(RC[-1]>0,""Last"" & "" "" & Settings!R4C[4] & "" logs"",""Before the last"" & "" "" & Settings!R4C[4] & "" logs"")"

Это напишет формулу в ячейке и будет выглядеть так:

=IF(D8>0;"Last" & " " & Settings!I$4 & " logs";"Before the last" & " " & Settings!I$4 & " logs")

И я использую эти «значения» в слайсере, которые сортируют мою сводную таблицу.

благодарю вас


person Uzwel    schedule 03.10.2019    source источник
comment
Вставьте полный код и некоторые примеры данных, иначе трудно сказать, как его улучшить.   -  person Ricardo Diaz    schedule 04.10.2019


Ответы (1)


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

До

        'Create the IF formula that will give a value to the row, the older the row the smaller the value
setsheet.Range("I5").Value = lastrow

logsheet.Range("D" & lastfreerow).Value = ("=Settings!I4-(Settings!I5)") & "+" & setsheet.Range("I5").Text

        'Create the IF formula that will say if the row is part of the desired range for the "last logs" option
logsheet.Range("E" & lastfreerow).Value = "=IF(RC[-1]>0,""Last"" & "" "" & Settings!R4C[4] & "" logs"",""Before the last"" & "" "" & Settings!R4C[4] & "" logs"")"

После

        'Log#; simply give an incremental value to each row starting from 1
            setsheet.Range("I6").Value = lastrow - 6                                            'Row value of the last log, put into the hidden setting page to be used in a formula
            logsheet.Range("D" & lastfreerow).Value = (lastrow - 6)                             'Row value of the last log,

        'Create the IF formula that will say if the row is part of the desired range for the "last logs" option
            logsheet.Range("E" & lastfreerow).Value = "=IF((Settings!R6C9 - Settings!R4C9) < (Log!RC[-1]),""Last"" & "" "" & Settings!R4C9 & "" logs"",""Before the last"" & "" "" & Settings!R4C9 & "" logs"")"

Если у вас есть идеи о том, как отсортировать таблицу таким образом, чтобы на диаграмме отображались только последние значения X, меня это интересует.

Спасибо за ваше время!

person Uzwel    schedule 04.10.2019