给定一个数组:
var arr = [1,,2,5,6,,4,5,6,,];
Run Code Online (Sandbox Code Playgroud)
计算有多少空值:(长度 - 删除空值后的长度)
var empties = arr.length - arr.filter(function(x){ return true }).length;
// return 3
Run Code Online (Sandbox Code Playgroud)
或类似的东西
arr.empties = arr.length;
arr.forEach(function(x){ arr.empties-- });
// arr.empties returns 3
Run Code Online (Sandbox Code Playgroud)
这是最好的方式还是我错过了什么?
当导入在PHPExcel,PHPexcel方法谷歌表导出的.xlsx文件$worksheet->getHighestDataColumn(),并$worksheet->getHighestDataRow()都返回谷歌文档的最大集,包括完全空白单元格,这通常是26x1000.
在Google表格/ Excel中打开它们时,单元格与常规空Excel单元格一样空,即无空格.
也许谷歌表格使用略微不同的方法来"保留"列和行而不是Excel(即时生成它们).
我想获得最高的非空行,以便在循环遍历行时不会不必要地分配大量内存.尊重我正在使用的格式,我可以在空行中保存一些评估,但最后,我被迫简单地遍历所有行并检查所有单元格是否为空.
我有很长的数组包含数字.我需要从该数组中删除尾随零.
如果我的数组看起来像这样:
var arr = [1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
Run Code Online (Sandbox Code Playgroud)
我想删除除了之外的所有内容[1, 2, 0, 1, 0, 1].
我已经创建了正在做的事情的功能,但我想知道是否有我可以使用的功能构建.
var arr = [1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
for(i=arr.length-1;i>=0;i--)
{
if(arr[i]==0)
{
arr.pop();
} else {
break;
}
}
console.log(arr);
Run Code Online (Sandbox Code Playgroud)
这可以做得更好/更快吗?
如何找到C列的最后一个使用过的单元格?
示例:"Sheet1":"Col A"和"Col B"有1200行.而"Col C"只有一排.
## ColA ColB ColC
## 1 1 1
## 2 2 empty
## .. .. ..
## 1200 1200 empty
Run Code Online (Sandbox Code Playgroud)
以下是我不成功的测试:
Function find_last_row_other_column() {
var ws_sheet =
var ws = SpreadsheetApp.openById("Dy...spreadsheet_id...4I")
var ws_sheet = ws1.getSheetByName("Sheet1");
var lastRow = ws_sheet.getRange("C").getLastRow();
var lastRow = ws_sheet.getRange("C:C").getLastRow();
var lastRow = ws_sheet.getRange(1,3,ws_sheet.getLastRow()); 1200 rows for colA! instead of row = 1 for col C.
}
Run Code Online (Sandbox Code Playgroud)
注意:我不能使用C1,因为下次我使用该功能时它将是C1200或其他东西.
var lastRow = ws_sheet.getRange("C1").getLastRow();
Run Code Online (Sandbox Code Playgroud)
我问这个是因为我的下一个目标是将C1的结果复制/粘贴到C2:C1200中.这是我的测试:
var lastRow = ws_sheet.getLastRow();
var target_range = ws_sheet.getRange(1,3,lastRow,1); //C1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试组合一个函数,该函数允许我根据关键列将列的信息从一张纸拉到另一张纸上。这与 excel/google 中的索引匹配或 vlookup 类似。
样本数据:
我尝试过的:
function vlookup(importFromSht, importToSht, importFromCompCol, importToCompCol,importFromCol, importToCol){
var lastImportFromRN = importFromSht.getLastRow();
var lastImportToRN = importToSht.getLastRow();
var importFromCompArr = importFromSht.getRange(2, importFromCompCol, lastImportFromRN, 1).getValues();
var importToCompArr = importToSht.getRange(2, importToCompCol, lastImportToRN, 1).getValues();
var importFromArr = importFromSht.getRange(2, importFromCol, lastImportFromRN, 1).getValues();
var importToArr = [];
for (var i in importToCompArr) {
for (var j in importFromCompArr){
if (importToCompArr[i].toString() == importFromCompArr[j].toString()) {
importToArr.push(importFromArr[j]);
}
}
}
//Paste to column
importToSht.getRange(2,importToCol,importToArr.length,1).setValues(importToArr);
}
Run Code Online (Sandbox Code Playgroud)
参数定义
我正在寻找一种方法来查找特定列的最后一行(带有数据)。假设 A 列第 100 行的最后一个数据项,B 列第 50 行的最后一个数据项。
.getLastRow(); 将永远返回 100 给我。
我需要一种简单的方法来获得 50(这是 B 列中最后一个非空行的行号)。
我不能使用循环。这非常重要,因为有数千行,它只会花费太多时间。
我用谷歌搜索了很多,但所有的答案都涉及循环。