寻找一个"十字准线" Google表格中的突出显示功能

时间:2014-09-12 19:14:21

标签: google-sheets

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

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

http://i.imgur.com/AL8j7Id.jpg

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

这一切都可能吗?有脚本可以做到吗?

5 个答案:

答案 0 :(得分:1)

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

不幸的是,他们不能一起工作。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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可供版本

Example

答案 3 :(得分:0)

你可以用脚本来完成。本文详细解释了如何突出显示行、列和十字准线:https://jec.fyi/blog/highlight-apps-script

答案 4 :(得分:0)

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 代码的一个小补充