在 LibreOffice 或其他电子表格工具中应用基于行的过滤器而不是基于列的过滤器

Posted

技术标签:

【中文标题】在 LibreOffice 或其他电子表格工具中应用基于行的过滤器而不是基于列的过滤器【英文标题】:Applying row based filter instead of column based in LibreOffice or other SpreadSheet tool 【发布时间】:2014-09-29 07:38:14 【问题描述】:

我们都知道标准过滤器,您可以在其中根据特定列(或多列)中的值选择要显示的行。 是否有可能相同,但根据单行的值选择哪些列应该可见? 到目前为止,我唯一的想法是编写宏或手动执行。

【问题讨论】:

【参考方案1】:

还不能发表评论,所以:

您可以在您的工具中进行正常的 excel 操作吗,例如:

复制数据区域并pastespecial作为转置,然后对列应用过滤器。

【讨论】:

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

至于宏,我已经整理了一个小的帮助扩展,它允许将 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 中) - 每当您想“重新运行”hte 过滤器时,只需编辑两个单元格中的任何一个即可。

【讨论】:

我只在 linux 上的 libreoffice 中测试过这个 - 如果你试一试,请在 github 上报告任何问题。

以上是关于在 LibreOffice 或其他电子表格工具中应用基于行的过滤器而不是基于列的过滤器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 LibreOffice 或 Google 表格中修剪整列的起始空间?

LibreOffice Calc:公式不会重新计算

在无头模式下将 libreoffice 电子表格合并到多页文档中?

LibreOffice 电子表格:使用特定过滤器选择随机单元格

通过 Python 脚本更新之前打开的 LibreOffice 电子表格而不关闭 LibreOffice

如何使用 C# 和 LibreOffice/OpenOffice 在电子表格单元格中设置粗体文本?