在 Google 表格中使用基本键盘命令创建简单的宏

问题描述 投票:0回答:1

我有一张工作表,其中的数据位于单列中的 4 个唯一行中。

示例:

| Column A |
| Cell 1   |
| Cell 2   |
| Cell 3   |
| Cell 4   |
| -blank-  |

我想要一个将数据调整为单行 4 列的宏。

示例:

| Column A |
| Cell 1   | Cell 2   | Cell 3   | Cell 4   |

我尝试使用键盘命令(箭头键、ctrl+x、ctrl+v)手动录制宏。这导致一个宏仅在我记录该宏的特定单元格范围内执行。这是生成的代码:

    /** @OnlyCurrentDoc */

    function TrashAddressAdjust() {
    var spreadsheet = SpreadsheetApp.getActive();
    spreadsheet.getRange('B1').activate();
    spreadsheet.getRange('A2').moveTo(spreadsheet.getActiveRan());
    spreadsheet.getRange('C1').activate();
    spreadsheet.getRange('A3').moveTo(spreadsheet.getActiveRange());
    spreadsheet.getRange('D1').activate();
    spreadsheet.getRange('A4').moveTo(spreadsheet.getActiveRange());
    spreadsheet.getRange('A2').activate();
    }
    ;

我希望宏在任何处于活动/选定状态的单元格(即单元格 1)中启动。然后将单元格 2、单元格 3 和单元格 4 移动到单元格 1 旁边的列。最后,它将删除空白行并将活动单元格到下一个数据集的开头,即下一个单元格 1。

我希望这一切都是有道理的,我没有过度解释一切。我真的想要一个宏,无论活动单元格在哪里,它都会执行这些命令:

    ⬇ ctrl+x, 
    ➡ ⬆ ctrl+v, 
    ⬇ ⬇ ⬅ ctrl+x, 
    ➡ ➡ ⬆ ⬆ ctrl+v,  
    ⬇ ⬇ ⬇ ⬅ ⬅ ctrl+x, 
    ➡ ➡ ➡ ⬆ ⬆ ⬆ ctrl+v, 
    ⬇ ⬅ ⬅ ⬅ delete row.

这应该将活动单元格保留在我的下一个单元格 1 数据集中。现在我可以冲洗并重复。

抱歉这么啰嗦,提前感谢您的帮助。

我尝试手动记录宏,但它仅在我记录的特定单元格范围内执行。

google-apps-script google-sheets macros
1个回答
0
投票

试试这个:

function miniTranpose() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getActiveSheet();
  const rg = sh.getActiveRange();
  const vs = rg.getValues().flat();
  const [row, col, h, w] = [rg.getRow(), rg.getColumn(), rg.getHeight(), rg.getWidth()];
  if (w == 1) {
    const cell = sh.getRange(row, col);
    sh.getRange(row, col, h, 1).clearContent()
    sh.getRange(row, col, 1, h).setValues([vs]);
  }
}

演示:

只需选择顶行和您想要移动的所有行并运行此功能。

© www.soinside.com 2019 - 2024. All rights reserved.