如何搜索特定值的列并将目标行移动到顶部?
How to search columns for a specific value and move the target row to the top?
我正在尝试在 E 列中搜索以“X”开头的单元格。然后我想将整行移到顶部。
这是我到目前为止使用 IndexOf 创建的内容:
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var Today = spreadsheet.getSheetByName("Today");
var TodayList = Today.getRange('E:E').getValues();
var i = TodayList.indexOf("X", 0);
Today.moveRows(Today.getRow(i), 1);
你的情况,下面的修改怎么样?
在Array.prototype.indexOf()的情况下,无法直接从二维数组中检查值。但是,在您的情况下,我认为可以使用索引直接检查第一个字符,如下所示。
修改后的脚本:
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var Today = spreadsheet.getSheetByName("Today");
var TodayList = Today.getRange('E1:E' + Today.getLastRow()).getValues();
TodayList.forEach(([e], i) => {
if (e[0] == "X") {
var row = i + 1;
Today.moveRows(Today.getRange(`${row}:${row}`), 1);
}
});
}
当此脚本为 运行 时,将从“E”列中检索值。并且,从检索到的值中检查每个单元格值。当单元格值的第一个字符为“X”时,该行移至第1行。
在这个修改中,下面的行被移动到上面的行。如果你想反过来做,请修改如下。
来自
TodayList.forEach(([e], i) => {
if (e[0] == "X") {
var row = i + 1;
Today.moveRows(Today.getRange(`${row}:${row}`), 1);
}
});
到
var len = TodayList.length;
var offset = 0;
TodayList.reverse().forEach(([e], i) => {
if (e[0] == "X") {
var row = len - i + offset;
Today.moveRows(Today.getRange(`${row}:${row}`), 1);
offset++;
}
});
参考文献:
找到 X 行并移动到顶部
function funko() {
const ss = SpreadsheetApp.getActive();
const tsh = ss.getSheetByName("Today");
const tvs = tsh.getRange(1, 1, tsh.getLastRow(), tsh.getLastColumn()).getValues();
let a = [];
let d = 0;
tvs.forEach((r, i) => {
if (r[4] == "X") {
a.push(r)
tsh.deleteRow(i + 1 - d++);
}
});
tsh.insertRowsBefore(1,a.length)
a.reverse();
tsh.getRange(1,1,a.length,a[0].length).setValues(a);
}
我正在尝试在 E 列中搜索以“X”开头的单元格。然后我想将整行移到顶部。
这是我到目前为止使用 IndexOf 创建的内容:
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var Today = spreadsheet.getSheetByName("Today");
var TodayList = Today.getRange('E:E').getValues();
var i = TodayList.indexOf("X", 0);
Today.moveRows(Today.getRow(i), 1);
你的情况,下面的修改怎么样?
在Array.prototype.indexOf()的情况下,无法直接从二维数组中检查值。但是,在您的情况下,我认为可以使用索引直接检查第一个字符,如下所示。
修改后的脚本:
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var Today = spreadsheet.getSheetByName("Today");
var TodayList = Today.getRange('E1:E' + Today.getLastRow()).getValues();
TodayList.forEach(([e], i) => {
if (e[0] == "X") {
var row = i + 1;
Today.moveRows(Today.getRange(`${row}:${row}`), 1);
}
});
}
当此脚本为 运行 时,将从“E”列中检索值。并且,从检索到的值中检查每个单元格值。当单元格值的第一个字符为“X”时,该行移至第1行。
在这个修改中,下面的行被移动到上面的行。如果你想反过来做,请修改如下。
来自
TodayList.forEach(([e], i) => { if (e[0] == "X") { var row = i + 1; Today.moveRows(Today.getRange(`${row}:${row}`), 1); } });
到
var len = TodayList.length; var offset = 0; TodayList.reverse().forEach(([e], i) => { if (e[0] == "X") { var row = len - i + offset; Today.moveRows(Today.getRange(`${row}:${row}`), 1); offset++; } });
参考文献:
找到 X 行并移动到顶部
function funko() {
const ss = SpreadsheetApp.getActive();
const tsh = ss.getSheetByName("Today");
const tvs = tsh.getRange(1, 1, tsh.getLastRow(), tsh.getLastColumn()).getValues();
let a = [];
let d = 0;
tvs.forEach((r, i) => {
if (r[4] == "X") {
a.push(r)
tsh.deleteRow(i + 1 - d++);
}
});
tsh.insertRowsBefore(1,a.length)
a.reverse();
tsh.getRange(1,1,a.length,a[0].length).setValues(a);
}