【问题标题】:Hide a group of columns based on maximum cell value in column根据列中的最大单元格值隐藏一组列
【发布时间】:2018-02-19 19:02:51
【问题描述】:

我担心我需要一个脚本来实现这个目的,除非有办法在没有脚本的情况下做到这一点。在下面链接的文档的脚本编辑器中尝试脚本失败,可以删除。

我想根据 H 列中的最大值隐藏不相关的列组(请参阅每个尺寸组的深色边框)。

如果 H 列(包装尺寸数量)中值的批次大于 1,那么我们希望取消隐藏与包装尺寸数量相关的列组。

  1. 如果有 2 种包装尺寸,请取消隐藏 L-M
  2. 如果有 3 种封装尺寸,请取消隐藏 L-Q
  3. 如果有 4 种包装尺寸,请取消隐藏 L-T
  4. 如果有 5 种封装尺寸,请取消隐藏 L-W
  5. 如果有 6 种封装尺寸,请取消隐藏 L-Z
  6. 否则,我们希望隐藏额外的列组 (L-Z)。

即使只有一个大于 1 的批次,也可以取消隐藏所有行的列。

Spreadsheet

【问题讨论】:

    标签: google-sheets show-hide


    【解决方案1】:

    我花了一些时间学习一个小脚本,这就是我最终得到的。请注意,在我的脚本示例中,列组略有偏移。

    function onEdit(e) {
    
        // Set a comment on the edited cell to indicate when it was changed.
        var range = e.range;
        range.setNote('Last modified: ' + new Date());
    
        var app = SpreadsheetApp;
        var ss = app.getActiveSpreadsheet();
        var activeSheet = ss.getActiveSheet();
    
        var clmnwdth = activeSheet.getRange("A4:A12").getValues();
        var maxi = Math.max.apply(Math, clmnwdth);
    
        Logger.log(maxi); 
    
        if (maxi == 0) {
            activeSheet.setColumnWidths(5, 20, 10)
        } else if (maxi == 1) {
            activeSheet.setColumnWidths(5, 20, 10)
        } else if (maxi == 2) {
            activeSheet.setColumnWidths(9, 16, 10), activeSheet.setColumnWidths(1, 8, 100)
        } else if (maxi == 3) {
            activeSheet.setColumnWidths(13, 12, 10), activeSheet.setColumnWidths(1, 12, 100)
        } else if (maxi == 4) {
            activeSheet.setColumnWidths(17, 8, 10), activeSheet.setColumnWidths(1, 16, 100)
        } else if (maxi == 5) {
            activeSheet.setColumnWidths(21, 4, 10), activeSheet.setColumnWidths(1, 20, 100)
        } else {
            activeSheet.setColumnWidths(1, 24, 100)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      相关资源
      最近更新 更多