【问题标题】:Google Sheets - select column minus header (or deselect cell)谷歌表格 - 选择列减去标题(或取消选择单元格)
【发布时间】:2017-06-20 17:34:03
【问题描述】:

我一直在寻找解决方案,我发现唯一不涉及脚本的事情需要手动转到每列的底部。我的电子表格确实包含空白单元格,所以我不能使用 ctrl shift down。我希望能够选择一列(或一组列),但不包括标题。或者,另一种选择是全选,然后手动取消选择标题行。根据谷歌的说法,取消选择目前在表格上不可用。如果有一些不涉及脚本的简单方法会很棒,因为我真的根本不知道脚本,这是我会在很多工作表上多次使用的东西,所以不得不复制跨页的脚本总是听起来不吸引人。我理论上知道如果制作成功的脚本可以创建插件,但这也是我不熟悉的。

【问题讨论】:

  • 我不明白对我的问题的负面反馈。我搜索了答案,但没有找到任何东西。我知道这对程序员来说可能是一件容易的事,但我不是,我是一名图形设计师,需要帮助处理一些电子表格的东西。我认为这样的事情应该是可能的,但我不知道脚本,所以我想我会来一个有用的社区寻求建议。如果这需要负面评价,请告诉我原因,这样我就可以避免此类错误。
  • 负面反馈可能来自两个相互关联的来源。首先,您在 Stack Overflow(一个编程问答网站)上提出了这个问题,但特别要求避免使用脚本(唯一可能与编程相关的东西)。其次,您实质上是要求有人为您编写完整的解决方案,而 Stack Overflow 成员通常对此表示不满。我们很乐意帮助您编写代码,但我们通常不会编写完整的解决方案。将来,您可能会考虑在Web Applications 上询问有关如何有效使用 Google Apps 的问题。
  • 如果说我“问”的内容,请参考哪里,因为我不记得我在哪里要求任何人为我“写一个完整的解决方案”。我有一个问题,我认为可能有一个非常简单的解决方案,但我无法找到答案,并认为在这方面有更多经验的人可能会知道。而且我没有要求避免使用脚本,我说如果有一个我不知道的简单方法会很棒。如果可能的话,想知道一个简单的方法有什么问题吗?我得到的答案涉及脚本,这不仅有帮助,而且还教会了我一些东西。

标签: google-apps-script google-sheets


【解决方案1】:

执行此操作的快速手动方法是选择列,然后按住 CTRL 并选择要删除的标题。

【讨论】:

    【解决方案2】:

    选择列但跳过标题行

    它可能并不完美,但这里有一些可能会有所帮助。您可以将 n 设置为您想要的任何值。它默认为 2,因此第一行未选中。但您可以创建其他版本,如下所示:

    function selectColumnMinus(n) 
    {
        var n=(typeof(n)!='undefined')?n:2;
        var ss=SpreadsheetApp.getActiveSpreadsheet();
        var sht=ss.getActiveSheet();
        var cols=sht.getActiveCell().getA1Notation().replace(/\d+/,'');
        var rngs=cols + n + ':' + cols;
        var outrng=sht.getRange(rngs);
        outrng.activate();
    }
    
    function minus3()
    {
      selectColumnMinus(3);
    }
    

    只需确保所选内容的左上角位于所需的列中即可。

    我开始考虑选择多个列也可能有用。所以就在这里。它还提供了在顶部输入要跳过的行数的提示。

    function selectColumnsSkipHeader() 
    {
        var resp=SpreadsheetApp.getUi().prompt('Rows to Skip', 'Enter numbers of rows to skip at top.', SpreadsheetApp.getUi().ButtonSet.OK);
        var skip=Number(resp.getResponseText());
        var skip=(typeof(skip)!='undefined')?skip:1;
        var ss=SpreadsheetApp.getActiveSpreadsheet();
        var sht=ss.getActiveSheet();
        var rng=sht.getActiveRange();
        var rngA= sht.getActiveRange().getA1Notation().split(':');
        var ul=rngA[0].replace(/\d+/,'');
        if(rng.getNumColumns()>1)
        {
          var lr=rngA[1].replace(/\d+/,'');
        }
        else
        {
          lr=ul;
        }
        var rngs=ul + ++skip + ':' + lr;
        var outrng=sht.getRange(rngs);
        outrng.activate();
    }
    

    我对此进行了一些尝试,另一种方法避免了提示获取要跳过的行数的需要。相反,只需将选择的顶部放在您希望选择开始的行上。

    function selectColumnsSkipHeader1() 
    {
        var ss=SpreadsheetApp.getActiveSpreadsheet();
        var sht=ss.getActiveSheet();
        var rng=sht.getActiveRange();
        var rngA= sht.getActiveRange().getA1Notation().split(':');
        var ul=rngA[0].replace(/\d+/,'');
        if(rng.getNumColumns()>1)
        {
          var lr=rngA[1].replace(/\d+/,'');
        }
        else
        {
          lr=ul;
        }
        var rngs=ul + rng.getRow() + ':' + lr;
        var outrng=sht.getRange(rngs);
        outrng.activate();
    }
    

    【讨论】:

    • 谢谢。这似乎是这样做的,但仅针对单列,如果我选择一组 4 列,它只选择最左边的列,不包括标题。但是,这比每次滚动几千行要好。如果 Sheets 只允许 ctrl 单击取消选择,那就容易多了……就像 word 中几乎所有其他启用选择的系统一样。
    • @CBJ 这是您要求的多列解决方案。如果您检查我的答案,我将不胜感激。谢谢
    • 效果很好!这需要四处传播。我发现的所有内容都涉及热键,可以让您更快地到达底部,但仍然需要手动选择范围。您是否考虑过将其作为附加组件发布?我敢打赌很多人都会喜欢它。
    • 说实话,我从来没有做过插件。也许我会试一试。谢谢你的问题。不要让反对票让你失望​​。当我提出问题时,我总是得到它们。事实上,这就是我删除问题的原因。这里有一种思维定势,即只有组织良好、纪律严明的程序员提出的问题才可接受。但是该站点确实非常适合其预期用途。我在这里学到了很多东西。有一些非常聪明的人在这个网站做志愿者。这是从 Google+ Google Apps 脚本社区迈出的重要一步。
    • 确实!我已经用过很多次了。我只是从被扔在公共汽车下并不得不弥补一些东西中获得了足够的东西,我已经很好地调整了某些东西以满足我的需求,但是 Javascript 是一个完全不同的世界。在某些时候,如果我必须继续处理这些事情,我可能不得不站出来学习它,但我没有奢侈的让这份工作坐几个月,而我学习一个完全陌生的(对我来说) ) 编程语言。如果我能得到一个常规的公式来做我想做的事,我会想跳一场胜利之舞。再次感谢,这就像魔术一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    相关资源
    最近更新 更多