Сводная диаграмма Excel: показать последние 25 строк - PullRequest
1 голос
/ 04 октября 2019

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

Выглядит так (изображение - моя вторая версия с инкрементным, а не уменьшенным)

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

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

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


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

Col D: присвоить значениестрока

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


Я поставил этот код для 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")

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

спасибо

1 Ответ

0 голосов
/ 05 октября 2019

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

До

        '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, которые мне интересны

Спасибо за потраченное время!

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