Применение фильтра на основе строк вместо столбцов в LibreOffice или другом инструменте SpreadSheet
Все мы знаем стандартный фильтр, в котором вы выбираете, какие строки показывать в зависимости от значений в определенном столбце (или столбцах). Возможно ли вообще то же самое, но выбирать, какие столбцы должны быть видны в зависимости от значений одной строки? Единственные идеи, которые у меня есть, - написать макрос или сделать это вручную.
2 ответа
Оставить комментарий пока не могу, так:
Можете ли вы сделать обычные операции Excel в вашем инструменте, как:
скопируйте область данных и вставьте ее как транспонированный, а затем примените фильтр к столбцам.
Что касается макроса, я собрал небольшое вспомогательное расширение, которое позволяет писать код Python прямо в ячейки - проверьте его по адресу https://github.com/jsbueno/librepylot/releases/tag/0.7
После установки некоторый код, подобный следующему в ячейке, может делать то, что вы хотите:
for col in range(0, 26): #A - Z
S[0]._sheet.Columns.getByIndex(col) = bool(S[0][col, 0]._cell.getValue())
Над первым "0" в S[0] находится номер листа, вторым "0" в S[0][col,0] является индекс строки с вашими значениями (строка 1), здесь я просто устанавливаю видимость основываясь на истинности (!= 0) вычисленного значения ячейки. Используйте любое выражение Python, которое вы хотите
Эти две строки кода должны быть вставлены как текстовое содержимое ячейки, учитывая, что вторая строка имеет отступ, и что libreoffice не изменяет первые буквы любой команды в верхний регистр (и предотвращая другие автоматические преобразования, которые она делает по умолчанию).) Вторая ячейка должна быть записана с формулой =pyexec(B1)
(при условии, что код находится в ячейке b1
) - Если вы хотите "перезапустить" фильтр, просто отредактируйте одну из двух ячеек.