在LibreOffice或其他电子表格工具中,应用基于行而不是列的筛选器。

3
我们都知道标准筛选器,可以根据特定列(或多列)的值选择要显示的行。 但是否有可能实现相反的功能,即根据单个行的值来选择应该显示哪些列呢? 目前我唯一想到的方法是编写宏或手动完成。
2个回答

5

目前无法发表评论,因此:

您的工具能否执行常规的Excel操作,例如:

复制数据区域并将其以转置方式pastespecial,然后对列应用筛选器。


一个好的解决方案,只需要注意它的限制(仅在LibreOffice下测试): 条件格式会丢失; 带有$符号的公式无法正确转置(例如B$3会变成奇怪的东西,绝对不是应该的$C2)。 尽管如此,可以作为一种解决方法,最终可能需要进行一些额外的工作。 谢谢! - Ister
很高兴它有所帮助。不知道Libreoffice转置问题。顺便说一下,现在我可以发表评论了。 - ZAT
当然,“特殊粘贴”只是一次性的。但是还有一个函数=TRANSPOSE(...)。请确保将其插入为矩阵函数(向导中的复选框,或从单元格编辑中使用Ctrl-Enter)。 - Yahoo Serious

0
关于宏,我已经制作了一个小助手扩展,允许用户直接在单元格中编写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())

在 S[0] 中第一个“0”上面是工作表编号, S[0][col,0] 中的第二个“0”是具有您值的行的索引(第1行), 在这里,我只是根据单元格计算出的真实性(!= 0)设置可见性。 使用任何您想要的 Python 表达式。
这两行代码应该作为单元格的文本内容放入 - 注意第二行需要缩进,并且 LibreOffice 不会将任何命令的第一个字母更改为大写字母(并防止它默认执行的其他自动转换)。 应编写第二个单元格公式=pyexec(B1)(假设代码在单元格b1中)- 每当您想要“重新运行”过滤器时,只需编辑其中任何一个单元格即可。

我只在Linux上的LibreOffice中测试过这个 - 如果你尝试了,请在Github上报告任何问题。 - jsbueno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接