如果另一列中的单元格使用 google 应用程序脚本有一些数据,如何在一列中获取行号?
how to get a row number in a column if a cell in another column has some data using google apps script?
我有一个 sheet,它有 5 列(日期、ID、名称、编号、行号),我希望第五列(行号)在我插入时自动填充行号第二列中的任何数据(id)
我尝试了 sheet 本身的手动方式,而不是应用程序脚本,但有时它会被错误删除,所以我想用应用程序脚本来做,我不确定是否有办法,所以请帮助我。这是我在示例中的意思:
第一行得到 headers(日期、ID、名称、编号、行号)
假设我在第五行插入一些数据(今天,4,ahmed,4584231,X)
我想当我插入 ID(4) 时,行号自动获得值 (5) 因为它在第五行,然后在我删除第 3 行之后,我想要该行中的所有值NUMBER COLUMN TO BE CHANGED TO THE NEW ROW IT GOT IN,我希望这对你来说很清楚。
非常感谢
这可以通过公式实现:
- 如果不为空
在行号列中插入此公式:
=if(B2<>"",row(),"")
结果:
只需 drag/copy 公式到列。
这将检查 B 列中的单元格是否为空白。如果不是,请插入行号。
- ArrayFormula - 这很可能是您需要防止意外删除的内容
或者您也可以使用 arrayFormula,这样您只需在 header 之后的第一行插入公式,它就会应用于整列:
=arrayformula(if(B2:B <> "", row(B2:B), ""))
这也可以帮助您防止意外删除。它会在删除时重新插入单元格上的值,只需确保不要删除单元格 E2 上的实际 arrayformula。
还要检查下面的单元格是否为空,否则会引发错误。
结果:
使用应用程序脚本
function onEdit(e) {
var ss = e.source.getActiveSheet();
var r = e.source.getActiveRange();
var row = r.getRow();
var column = 6;
if (r.getColumn() == 2) {
if (!e.value){
ss.getRange(row,column).clearContent();
}
else {
ss.getRange(row,column).setValue(row);
};
};
};
参考文献:
我有一个 sheet,它有 5 列(日期、ID、名称、编号、行号),我希望第五列(行号)在我插入时自动填充行号第二列中的任何数据(id) 我尝试了 sheet 本身的手动方式,而不是应用程序脚本,但有时它会被错误删除,所以我想用应用程序脚本来做,我不确定是否有办法,所以请帮助我。这是我在示例中的意思:
第一行得到 headers(日期、ID、名称、编号、行号) 假设我在第五行插入一些数据(今天,4,ahmed,4584231,X)
我想当我插入 ID(4) 时,行号自动获得值 (5) 因为它在第五行,然后在我删除第 3 行之后,我想要该行中的所有值NUMBER COLUMN TO BE CHANGED TO THE NEW ROW IT GOT IN,我希望这对你来说很清楚。
非常感谢
这可以通过公式实现:
- 如果不为空
在行号列中插入此公式:
=if(B2<>"",row(),"")
结果:
只需 drag/copy 公式到列。
这将检查 B 列中的单元格是否为空白。如果不是,请插入行号。
- ArrayFormula - 这很可能是您需要防止意外删除的内容
或者您也可以使用 arrayFormula,这样您只需在 header 之后的第一行插入公式,它就会应用于整列:
=arrayformula(if(B2:B <> "", row(B2:B), ""))
这也可以帮助您防止意外删除。它会在删除时重新插入单元格上的值,只需确保不要删除单元格 E2 上的实际 arrayformula。
还要检查下面的单元格是否为空,否则会引发错误。
结果:
使用应用程序脚本
function onEdit(e) {
var ss = e.source.getActiveSheet();
var r = e.source.getActiveRange();
var row = r.getRow();
var column = 6;
if (r.getColumn() == 2) {
if (!e.value){
ss.getRange(row,column).clearContent();
}
else {
ss.getRange(row,column).setValue(row);
};
};
};
参考文献: