Применение фильтра на основе строк вместо столбцов в 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) - Если вы хотите "перезапустить" фильтр, просто отредактируйте одну из двух ячеек.

Другие вопросы по тегам