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

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

【问题讨论】:

    标签: excel libreoffice openoffice-calc libreoffice-calc


    【解决方案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 上报告任何问题。
    猜你喜欢
    • 2019-01-01
    • 1970-01-01
    • 2016-04-23
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多