【问题标题】:Looking for a "crosshair" highlight function in Google Sheets在 Google 表格中寻找“十字准线”突出显示功能
【发布时间】:2014-11-07 01:03:23
【问题描述】:

我在使用 Google 表格跟踪大型电子表格中某个单元格所属的行和列时遇到问题。

真正有用和简单的是一个“十字准线”功能,当它处于活动状态时,会自动突出显示当前选定单元格的行和列,这样当我选择一个单元格时,它看起来是这样的:

这将使跟踪较大电子表格上的单元格的工作变得更加容易。理想情况下,它可以设置为仅突出显示行、仅突出显示列或两者都突出显示,但出于我的需要,我希望自动突出显示两者。

这有可能吗?有没有脚本可以做到这一点?

【问题讨论】:

    标签: google-sheets


    【解决方案1】:

    CTRL + SPACE 突出显示列
    SHIFT + SPACE 突出显示行

    不幸的是,它们不能协同工作。

    如果我这个周末有时间,我会写一个插件。

    【讨论】:

    • 嗨,我想我会碰到这种需求再次出现。感谢您提供的任何帮助。
    • 再次碰头询问是否有人可以提供帮助。提前致谢。
    【解决方案2】:

    好吧,我找到了一种自动选择整行的方法。我刚刚安装了一个快捷方式管理器来修改按键行为。我在这里详细解释了它:https://stackoverflow.com/a/61516763/9356315

    我认为您可以轻松扩展它以同时选择整个列。我希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      实际上解决了同样的问题。 我刚刚创建了一个脚本,然后使用允许我配置快捷方式的宏调用它。

      function highlightCoords() {
        var ss = SpreadsheetApp.getActive();
        var s = ss.getActiveSheet();
        var a = ss.getActiveCell();
      
        var col = a.getColumn();
        var row = a.getRow(); 
      
        var r = s.getRange(row, 1, 1, col-1);
        var c = s.getRange(1, col, row-1, 1);
        var ar = s.getRange(row, col);      
      
        ss.getRangeList([r.getA1Notation(), c.getA1Notation(), ar.getA1Notation()]).activate();
      };
      

      然后我的宏将触发该功能。

      为了方便调用,将关联快捷方式。 简单如:[Ctrl + Alt + Shift + 1]

      请注意,将选择活动单元格,使 F2 可用于编辑

      【讨论】:

        【解决方案4】:

        您可以使用脚本来完成。本文详细讲解如何高亮行、列和十字准线:https://jec.fyi/blog/highlight-apps-script

        【讨论】:

          【解决方案5】:
          var userProperties = PropertiesService.getUserProperties();
          var H_MODE = 'M';
          
          function getMode() {
            return userProperties.getProperty(H_MODE);
          }
          
          function setMode(m) {
            userProperties.setProperty(H_MODE,m);
          }
          
          function createHighlightMenu() {
            setMode('off');
            SpreadsheetApp
              .getActiveSpreadsheet()
              .addMenu('Highlight', generateMenu());
          }
          
          function updateHighlightMenu() {
            SpreadsheetApp
              .getActiveSpreadsheet()
              .updateMenu('Highlight', generateMenu());
          }
          
          function generateMenu() {
            return [
              {name: (getMode()=='off'? " ✓ " :'')+'Off', functionName: 'setOff'},
              {name: (getMode()=='row'? " ✓ " :'')+' Highlight row', functionName: 'setHighlightRow'},
              {name: (getMode()=='column'? " ✓ " :'')+' Highlight column', functionName: 'setHighlightCol'},
              {name: (getMode()=='crosshair'? " ✓ " :'')+' Highlight crosshair', functionName: 'setHighlightCrosshair'}
            ];
          }
          
          function setOff() {
            setMode('off');
            updateHighlightMenu();
          }
          
          function setHighlightRow(){
            setMode('row');
            updateHighlightMenu();
          }
          
          function setHighlightCol(){
            setMode('column');
            updateHighlightMenu();
          }
          
          function setHighlightCrosshair(){
            setMode('crosshair');
            updateHighlightMenu();
          }
          
          function highlight(type) {
            const ss = SpreadsheetApp.getActive();
            const s = ss.getActiveSheet();
            const a = ss.getActiveCell();
          
            const col = a.getColumn();
            const row = a.getRow();
            const maxColumns = s.getMaxColumns();
            const maxRows = s.getMaxRows();
          
            const c = s.getRange(1, col, maxRows, 1);
            const r = s.getRange(row, 1, 1, maxColumns);
            const ar = s.getRange(row, col); 
            
            var ranges = [];
            if (type != 'column') ranges.push(r.getA1Notation());
            if (type != 'row') ranges.push(c.getA1Notation());
            ranges.push(ar.getA1Notation());
            console.log('Ranges ',ranges);
            s.getRangeList(ranges).activate();
            console.log('Active sheet ',s.getName());
            console.log('Active', s.getActiveRangeList());
          }
          
          function highlightRow() {
            highlight('row');
          }
          
          function highlightColumn() {
            highlight('column');
          }
          
          function highlightCrosshair() {
            highlight('crosshair');
          };
          
          // Uncomment this function if you need
          function onSelectionChange(e) {
            console.log('onSelChange',getMode());
            highlight(getMode());
          }
          

          https://jec.fyi/blog/highlight-apps-script 代码的一个小补充

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-05-19
            • 2012-05-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多