当前位置: 首页 > 知识库问答 >
问题:

IMPORTRANGE不包括第一个空行之后的所有行

祁英哲
2023-03-14

我想知道如何导入一个范围,排除源中第一个空行之后的所有行。

例如,假设有一张有200行的工作表,但第101行是空的,但从102到200,所有行都有值。我只想导入1:100行。

我需要独立于源工作表中有多少行来执行此操作,因为我们定期导入数据,每次导入时有效行的数量都会增加。

共有2个答案

凌俊名
2023-03-14

除了此处已有的内容之外,如果您希望更通用地使用应用程序脚本来执行此操作,您可以将其绑定到工作表并根据需要运行。

假设A列用于要复制到的工作表中的数据,可以通过运行

function obtainFirstBlankRow() {  
  var sheet = SpreadsheetApp.getActive().getSheetByName('SHEET-TO-COPY-TO');
  // search for first blank row
  var col = sheet.getRange('A:A');
  var vals = col.getValues();
  var count = 0;

  while (vals[count][0] != "") {
    count++;
  }
  return count + 1;
}

这将返回与第一行相对应的数字,其中a列中的单元格为空-如果需要,可以通过替换工作表中的a:a来更改检查的列。getRange()到您需要的范围。

然后,您可以使用:

function myFunction() {  
  var startRow = 1; //assuming you want to copy from row 1
  var endRow = obtainFirstBlankRow();
  var startCol = 1; // assuming you want to copy starting at column A
  var endCol = 26; // assuming copying values up to column Z
  var startRowPaste = 1; //assuming you want to copy starting at row 1
  var startColPaste = 1; // assuming you want to copy starting at column A

  //example range to copy from
  var rangeToCopy = SpreadsheetApp.openById('IDOfSheetToCopyFrom').getSheetByName('SheetToCopyFrom')
  var rangeToCopy = rangeToCopy.getRange(startRow, startCol, endRow, endCol);

  //make sure the range you're copying to is the same size
  var newRange = SpreadsheetApp.openById('IDOfSheetToCopyTo').getSheetByName('SheetToCopyTo')
  var newRange = newRange.getRange(startRowPaste, startColPaste, rangeToCopy.getNumRows(), rangeToCopy.getNumColumns()); 
  newRange.setValues(rangeToCopy.getValues());
}

将数据复制到新范围。

张宝
2023-03-14

它是这样的:

=ARRAYFORMULA(
 IMPORTRANGE("ID_or_URL", "Sheet3!F1:F"&MIN(IF(
 IMPORTRANGE("ID_or_URL", "Sheet3!F1:F")="", ROW(A:A), ))))
 类似资料:
  • 我有大量数据,需要清理。B列为关键列;如果B列中有空值,则可以删除该行的其余部分。 我在B列上排序,所有的空值都在表的底部。在C-BZ列中有数据,但在B中没有。我想自动识别B中最后一个非空值(假设它是单元格B3841),然后删除工作表底部的3842行。我的数据集每天都在变化。 下面的代码对B列进行排序,然后删除所有完全空的行。我还想删除在B列中为null但在C或D或任何其他行中可能有数据的行。

  • 目前正在用C#中的ITextSharp构建一个PDF。PDF由三个“部分”组成,一个封面,一个可以跨越多个页面的表格,以及一个最终页面。拥有该表的页面需要在第一页包含页眉,并在所有包含页眉的页面上包含页脚,但封面和最后一页不需要。 我使用XMLWorker构建页面,但这并不重要。构建页面的代码如下: 我遇到的麻烦是确定一种方法来防止页脚出现在结束页上。我正在重写OnEndPage以创建页脚。是否有

  • 我有一本这样的字典: 我需要打印第一行上打印的值列表中的所有第一项,第二行上打印的所有第二项,第三行上打印的所有第三项。像这样: 所有项目的字符长度相同,所有列表的项目数相同。 我有一个字母列表,可以按正确的顺序获取键,我只是不知道如何打印值。我可以打印所有第一个项目: 如何创建上面的输出?

  • 我试着使用电抗器中的SwitchOnFirst算子,这很神奇-除了有时作为双函数的第二个参数传递的transformer似乎不包括第一个元素。基本上,客户端通过RSocket向服务器发送2个项目。代码服务器端如下所示: 客户端第一次启动时,服务器接收这两个项目,并按预期将其发布到actorsink。 但是,如果我停止客户端并再次运行它,则只发布第二项。 一个区别是请求(16)触发请求(16),而不

  • 即将用Maven TestNG Selenium实现一个测试框架。 如何声明告诉TestNG运行所有测试的suite.xml?我尝试了所有这些都无济于事: 我需要用不同的参数指定不同的套件配置,但都运行所有测试。我能找到的每一个例子都清楚地列出了对我来说意义不到零的每个类或包。