我有大量数据,需要清理。B列为关键列;如果B列中有空值,则可以删除该行的其余部分。
我在B列上排序,所有的空值都在表的底部。在C-BZ列中有数据,但在B中没有。我想自动识别B中最后一个非空值(假设它是单元格B3841),然后删除工作表底部的3842行。我的数据集每天都在变化。
下面的代码对B列进行排序,然后删除所有完全空的行。我还想删除在B列中为null但在C或D或任何其他行中可能有数据的行。
function cleanData(){
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('data'), true);
var columnToSortBy = 1;
var tableRange = "A:AZ";
if(1 == 1){
var range = spreadsheet.getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: false } );
}
var morecleaning = spreadsheet.getSheets();
for (var s in morecleaning){
var sheet = morecleaning[s]
var maxRows = sheet.getMaxRows();
var lastRow = sheet.getLastRow();
if (maxRows-lastRow != 0){
sheet.deleteRows(lastRow+1, maxRows-lastRow);
}}
};
function cleanData(){
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('data'), true);
var columnToSortBy = 1;
var tableRange = "A:AZ";
if(1 == 1){
var range = spreadsheet.getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: false } );
}
var morecleaning = spreadsheet.getSheets();
for (var s in morecleaning){
var sheet = morecleaning[s]
var maxRows = sheet.getMaxRows();
var lastRow = sheet.getLastRow();
if (maxRows-lastRow != 0){
sheet.deleteRows(lastRow+1, maxRows-lastRow);
}}
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('data');
var rg=sh.getRange(1,1,sh.getLastRow(),sh.getLastColumn());
var vA=rg.getValues();
var vB=[];
for(var i=0;i<vA.length;i++) {
if(vA[i][1]) {
vB.push(vA[i]);
}
}
sh.clearContents();
sh.getRange(1,1,vB.length,vB[0].length).setValues(vB);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('data'), true);
var allsheets = spreadsheet.getSheets();
for (var s in allsheets){
var sheet=allsheets[s]
var maxRows = sheet.getMaxRows();
var lastRow = sheet.getLastRow(); if (maxRows-lastRow != 0){
sheet.deleteRows(lastRow+1, maxRows-lastRow);
}}};
删除B=="
所在的所有行
function cleanData(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('data');
var rg=sh.getRange(1,1,sh.getLastRow(),sh.getLastColumn());
var vA=rg.getValues();
var d=0;
for(var i=0;i<vA.length;i++) {
if(!vA[i][1] && vA[i][1].toString().length==0) {
sh.deleteRow(i+1-d++);
}
}
}
是否希望对所有工作表执行此操作?如果是,请告诉我。
你可以对所有的床单都这样做。
function cleanData(ss,sh){
if(ss && sh) {
var rg=sh.getRange(1,1,sh.getLastRow(),sh.getLastColumn());
var vA=rg.getValues();
var d=0;
for(var i=0;i<vA.length;i++) {
if(!vA[i][1] && vA[i][1].toString().length==0) {
sh.deleteRow(i+1-d++);
}
}
}else{
Logger.log('Invalid Parameters'):
}
}
function forAllSheets() {
var ss=SpreadsheetApp.getActive();
var shts=ss.getSheets();
for(var i=0;i<shts.length;i++) {
cleanData(ss,shts[i]);
}
}
要大大加快速度,请尝试将清理数据更改为:
function cleanData(ss,sh){
if(ss && sh) {
var rg=sh.getRange(1,1,sh.getLastRow(),sh.getLastColumn());
var vA=rg.getValues();
var vB=[];
for(var i=0;i<vA.length;i++) {
if(vA[i][1]) {
vB.push(vA[i]);
}
}
sh.clearContents();
sh.getRange(1,1,vB.length,vB[0].length).setValues(vB);
}
}
我是新来的希望你们能帮我。。。 我是java编程的初学者,我想我对这个问题有点不知所措。 我的程序运行得很好,除了一个让我恼火的小细节。我有一个JTable,第一列有一个按钮,可以从表中删除这一行。它工作得很好,除了当我试图删除表的最后一行时,按钮停留在那里,然后表冻结,我无法删除任何行,因为我收到了一个“越界异常”。但是,当我使用命令表时。getRowCount()); 在删除该行之前和之后,表
我想知道如何导入一个范围,排除源中第一个空行之后的所有行。 例如,假设有一张有200行的工作表,但第101行是空的,但从102到200,所有行都有值。我只想导入1:100行。 我需要独立于源工作表中有多少行来执行此操作,因为我们定期导入数据,每次导入时有效行的数量都会增加。
我正在努力解决hackerrank的一个特殊问题。 为了解决这个问题,我使用hashmap创建了一个字典,我想用这个人的名字搜索电话号码。如果有一个条目与该名称,打印与名称的号码,否则打印未找到。 我得到了所需的输出,但有一个额外的空行。例如,当我搜索名称'J'和'K'时,字典中只有J,我的输出是:
为什么要删除第一个空格和后面的所有内容?如果执行并打印后,最初是,则只打印而不打印。 这是一个更大项目的一部分,但出于测试目的,我在一个新的java主文件上单独尝试了它,并且仍然执行相同的操作这是完整的程序:
问题内容: 我以为那不是难事,但我想用String.replaceAll删除所有空行(或Java中仅包含空白和制表符的行)。 我的正则表达式如下所示: 但这是行不通的。 我环顾四周,但仅发现用于删除空白行而不包含空格或制表符的正则表达式。 问题答案: 试试这个: 请注意,正则表达式匹配空格,制表符或管道字符! 编辑 顺便说一句,正则表达式也可以解决问题。
问题内容: 我有以下代码: 控制台输出看起来像 我想在用户按下后删除文本。退格键无法做到。 问题答案: 这将在大多数unix和Windows终端中正常工作…它使用非常简单的ANSI转义。 请注意,在Windows上,您可能需要使用以下http://www.windowsnetworking.com/kbase/windowstips/windows2000/usertips/miscellaneo