根据列中的最大单元格值隐藏一组列

时间:2018-02-19 19:02:51

标签: google-sheets show-hide

我担心我需要一个脚本用于此目的,除非有一种方法可以在没有脚本的情况下执行此操作。在下面链接的文档的脚本编辑器中尝试脚本失败,可以删除。

我想隐藏不相关的列组(请参阅每个大小组的较暗边框),具体取决于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)。
  7. 即使只有一个大于1的批次,也可以取消隐藏所有行的列。

    enter image description here

    Spreadsheet

1 个答案:

答案 0 :(得分:0)

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

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)
    }
}