基于单个单元格值的 Google 电子表格中的重复行
Posted
技术标签:
【中文标题】基于单个单元格值的 Google 电子表格中的重复行【英文标题】:Duplicate Rows in Google Spreadsheet based on a single cell Value 【发布时间】:2020-02-17 00:20:57 【问题描述】:我正在尝试以编程方式复制 Google 电子表格中的行。我希望该行的重复次数基于一个单元格值。
例如:
单元格 L10 包含值 45 第 23 行包含不同的值(值列表、公式、vlookup 等),我想在第一个公式上方重复这一行 44 次,因此从第 23 行到第 67 行有 45 行。
我用非常相似的问题尝试了请求中提到的代码,但无法适应我的需求。
enter image description here
【问题讨论】:
更准确地说,我想知道脚本和一个按钮正在等待分配:) 非常感谢 为什么要投票-1?? 嘿再次@MzoSchöwenier,请确保下次选择正确的标签;) 好吧对不起!非常感谢,我会测试它! 【参考方案1】:我在我这边创建了一个示例表,如下所示:
然后我创建了以下脚本:
function insertXRows()
var sheets = SpreadsheetApp.getActiveSheet();
var count = sheets.getRange(3,6).getValue(); //F3
Logger.log(count);
//Get my to be copied line
var copyLine = sheets.getRange(9,2,1,7); //Fix these values depending on your row that you want to copy.
while(count>0)
Logger.log(count);
//Get last line of my data
var lastRow = sheets.getDataRange().getValues().length;
var newRow = sheets.getRange(lastRow+1, 2, 1, 7); //Fix these values depending on your row that you want to copy.
for (var i = 0; i<copyLine.getValues()[0].length; i++)
if (copyLine.getFormulas()[0][i]!="") //Check formulas first
sheets.getRange(newRow.getRow(), newRow.getColumn()+i).setFormula(copyLine.getFormulas()[0][i]);
else if (copyLine.getValues()[0][i]!="")
sheets.getRange(newRow.getRow(), newRow.getColumn()+i).setValue(copyLine.getValues()[0][i]);
count--;
希望这会有所帮助!
【讨论】:
您好 Zektor ans 非常感谢您的支持。我已经尝试过了,但我发现首先这个过程需要时间。其次,我不能使用公式(一些单元格有选择列表,其中一些包含公式等)但最后。我认为我可以做相反的事情=如果我准备一个包含 100 个相似行的文档,也许我可以有一个脚本删除最后一行,直到我得到正确的数字。例如,该行从第 23 行复制到第 122 行,但我只需要 45 行,所以我希望脚本删除第 68 行 >122 行。也许这样更容易并且不需要那么长时间?你怎么看?谢谢 你好。您可以像使用 getFormulas() 方法一样使用 getDataValidations() 方法。以上是关于基于单个单元格值的 Google 电子表格中的重复行的主要内容,如果未能解决你的问题,请参考以下文章
如果条件为真,如何循环 LibreOffice Calc 电子表格中的行范围、比较单元格值、设置单元格值和删除行