我正在运行一个包含多张表的电子表格,在Sheet3中输入一些数据并运行一个自动排序代码,该代码按D列升序排序。
表3示例|表1示例
Sheet1中的“名称”和“位置”是从Sheet3导入的,因此当Sheet3进行排序时,它们会交换位置,但是,问题是从D到F(Sheet1)的信息没有交换,它将为错误的人显示。
这是我正在使用的脚本:
对其进行了轻微修改,以适用于特定的工作表,因为我当时不需要对整个文档进行自动排序。
/*
* @author Mike Branski (@mikebranski)
* @link https://gist.github.com/mikebranski/285b60aa5ec3da8638e5
*/
var SORT_COLUMN_INDEX = 4;
var ASCENDING = true;
var NUMBER_OF_HEADER_ROWS = 2;
var SHEET_NAME = 'Sheet3';
var activeSheet;
function autoSort(sheet) {
var s = SpreadsheetApp.getActiveSheet();
if (s.getName() == SHEET_NAME) {
var range = sheet.getDataRange();
if (NUMBER_OF_HEADER_ROWS > 0) {
range = range.offset(NUMBER_OF_HEADER_ROWS, 0, (range.getNumRows() - NUMBER_OF_HEADER_ROWS));
}
range.sort( {
column: SORT_COLUMN_INDEX,
ascending: ASCENDING
} );
}
}
function onEdit(event) {
var s = SpreadsheetApp.getActiveSheet();
if (s.getName() == SHEET_NAME) {
var editedCell;
activeSheet = SpreadsheetApp.getActiveSheet();
editedCell = activeSheet.getActiveCell();
if (editedCell.getColumn() == SORT_COLUMN_INDEX) {
autoSort(activeSheet);
}
}
}
function onOpen(event) {
var s = SpreadsheetApp.getActiveSheet();
if (s.getName() == SHEET_NAME) {
activeSheet = SpreadsheetApp.getActiveSheet();
autoSort(activeSheet);
}
}
function onInstall(event) {
onOpen(event);
}
所以基本上,当我编辑Sheet3并进行自动排序时,我希望Sheet1中从D到F的行与来自Sheet3的重新定位一起进行。我希望我能正确解释我想要什么。
我试图让它工作,但没有成功;我想不出正确的方法,尤其是由于Sheet1表的范围不同。
我想出了如何解决这个问题,所以我将在这里发布代码。基本上,每当您编辑您在Sheet3(主表)中选择排序的列时,它将首先在Sheet1(目标表)中复制您在A中所做的更改
我用了A
// Master Sheet Settings (Copy ranges must be similar in size)
var msName = 'Master Sheet';
var msSortCol = 4; // which column to trigger the sorting when you edit
var msSkipRows = 6; // how many rows to skip, if you have header rows
var msCopyRange = 'A7:B51'; // the range you want to copy
// Target Sheet Settings
var tsSortCol = 3;
var tsSkipRows = 10;
var tsName = 'Target Sheet';
var tsCopyRange = 'A11:B55';
var sortAscending = true;
var activeSheet;
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var editedCell = ss.getActiveRange().getColumnIndex();
if (ss.getSheetName() == msName) {
activeSheet = SpreadsheetApp.getActiveSheet();
if (editedCell == msSortCol) {
copyRow();
autoSort(activeSheet);
}
}
}
function copyRow() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(msName);
var values = sheet.getRange(msCopyRange).getValues();
ss.getSheetByName(tsName).getRange(tsCopyRange).setValues(values);
SpreadsheetApp.flush();
}
function autoSort() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var msheet = ss.getSheetByName(msName);
var tsheet = ss.getSheetByName(tsName);
var mrange = msheet.getDataRange();
var trange = tsheet.getDataRange();
if (ss.getSheetName() == msName) {
if (msSkipRows > 0) {
mrange = mrange.offset(msSkipRows, 0, (mrange.getNumRows() - msSkipRows));
}
if (tsSkipRows > 0) {
trange = trange.offset(tsSkipRows, 0, (trange.getNumRows() - tsSkipRows));
}
mrange.sort({ column: msSortCol, ascending: sortAscending });
trange.sort({ column: tsSortCol, ascending: sortAscending });
}
}
请看前面关于这个问题的帖子;自动排序不能在一个Google工作表中的多个工作表上工作 这是上节课的好剧本; 这个线程成功地解决了我的问题,但是,现在我想做的是自动排序第三张,这是锁定到其他人,但不是我自己。第三页标题为“2017年卡兰生产”。我还希望这第三张表格能够从第二张表格“代管交易”中提取所有新数据,格式与第二张表格相同,并在数据导入第三张表格时自动排序,但也能够在第三张表格中手动输入新交易
问题内容: 我是第一次在MacOSX上使用Postgres 9.3创建数据库。 假设我有桌和。开始时是空的和已填充的。我想的条目的数量在列在表为等于每个表等表的下方。因此,应包含每个唯一的入口和计数。我还不习惯这种语法,所以我真的不知道该怎么做。该列是多余的。 表 表 这将是正确的解决方法吗? 问题答案: 回答原始问题 Postgres允许集合返回函数(SRF)乘以行。 是你的朋友: 自 Post
按照element的 :default-sort = "{prop: 'date', order: 'descending'}",我通过过滤数组,得到需要排序的prop,但是效果没有实现。
问题内容: 我有以下收藏: 当这个样子的: 现在我必须根据字段对集合进行排序,如何实现呢? 问题答案: 这是我的“ 1班轮”: Java 8的更新:对于int数据类型 甚至: 对于String数据类型(如注释中所示) ..它期望吸气剂
使用GoogleApps脚本,我试图用一张工作表中的数据自动填充多张工作表。 我使用两个电子表格,“主”电子表格包含需要自动填充到另一个电子表格中的数据。 另一个电子表格包含模板表,根据“主”表中的条目数量,模板表被重复多次,这是数据需要去的地方。 到目前为止,我已经设法复制了基于主模板的工作表的数量,并在之后删除它们(见代码),但是我找不到任何关于如何自动填充这些工作表的信息。模板根据列中的公司
问题内容: 在java中如何根据value排序一个map?例如 根据Value排序 问题答案: 通用的版本: