Google sheets 如何将多个函数与ArrayFormula组合

Google sheets 如何将多个函数与ArrayFormula组合,google-sheets,Google Sheets,我使用ImportRange和Query以及Join和Split得到了以下公式,这些公式工作正常: =join(" / ", QUERY(IMPORTRANGE("Google-Sheet-ID","RawData!A:AC"),"select Col25 where Col1 = " & JOIN(" OR Col1 = ", split(V2:V,"+")), 0)) 此外,我还有以下ArrayFormula,其中Split函数工作正常: =数组公式(如果(len(V2:V)=0,

我使用
ImportRange
Query
以及
Join
Split
得到了以下公式,这些公式工作正常:

=join(" / ", QUERY(IMPORTRANGE("Google-Sheet-ID","RawData!A:AC"),"select Col25 where Col1 = " & JOIN(" OR Col1 = ", split(V2:V,"+")), 0))
此外,我还有以下
ArrayFormula
,其中
Split
函数工作正常:

=数组公式(如果(len(V2:V)=0,拆分(V2:V,“+”))
但当我尝试使用以下公式将它们组合在一起时:

=ARRAYFORMULA(如果(len(V2:V)=0,连接(“/”,查询(导入(“谷歌工作表ID”,“RawData!A:AC”),“选择Col25,其中Col1=“&join”(&Col1=“,拆分(V2:V,“+”),0)))
它失败了,并给了我以下错误:

错误 函数拆分参数1的值应为非空

这是我的测试表

更新

我把它改成:

=ARRAYFORMULA(如果(len(C2:C)=0,则连接(“或Col1=”,ARRAYFORMULA(如果(len(C2:C)=0,则拆分(C2:C,“+”))))))
所以我的全部公式是:

=数组公式(
如果(
len(C2:C)=0,,
加入(“/”,
质疑(
导入(“14iNSavtvjRU0XipPWIMKyHNwXTA85P_caffstiphi6c”,“RawData!A:AC”),“选择Col25,其中Col1=“&
阵列公式(
如果(len(C2:C)=0,,
JOIN(“或Col1=”,
阵列公式(
如果(
len(C2:C)=0,拆分(C2:C,“+”)
)
)
)
)
),
0
))))
现在得到错误:

错误 联接范围必须是单行或单列


我相信标签上这个叫做MK.Testing的公式会得到你想要的信息

=QUERY(IMPORTRANGE("14iNSavtvjRU0XipPWIMKyHNwXTA85P_CafFTsIPHI6c","RawData!A:AC"),"select Col25 where Col1="&TEXTJOIN(" or Col1=",TRUE,A2:A))

我想你可能把事情搞得太复杂了?这个公式只是从装运ID中形成一个文本字符串,用于查询。有一件事可能会让您大吃一惊,那就是query()对于列中的数据类型非常特殊。您的装运ID可以是数字,也可以是数字字母组合,但不能两者都是。也就是说,如果您有一些装运ID包含字母,而其他ID不包含字母,那么要获得一个有效的查询将更加困难。(尽管并非不可能)。为了帮助您,您的示例ID必须以这种方式尽可能准确地反映真实ID。

如何使用应用程序脚本来实现这一点?您可以从Sheet2、装运ID和MK的ID中获取值。测试并比较它们。如果两者一致,则将ETA复制到MK测试的C列中:

function myFunction() {
  var sprsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet2 = sprsheet.getSheetByName("Sheet2");
  var mkTesting = sprsheet.getSheetByName("MK.Testing");

  var shipmentId = sheet2.getRange("A2:A").getValues();
  var idList = mkTesting.getRange("A2:A").getValues();

  for (var i = 0; i < shipmentId.length; i++){

    for (var j = 0; j < idList.length; j++){

      if (idList[j][0] == ""){break;} //Stops if there is an empty cell in Mk.Testing's column A

      if (idList[j][0] === shipmentId[i][0]){

        var eta = sheet2.getRange("E"+(i+2)).getValue();

        mkTesting.getRange("C"+(j+2)).setValue(eta);

      }
    }
  }
}
函数myFunction(){
var sprsheet=SpreadsheetApp.getActiveSpreadsheet();
var sheet2=sprsheet.getSheetByName(“sheet2”);
var mkTesting=sprsheet.getSheetByName(“MK.Testing”);
var shipmentId=sheet2.getRange(“A2:A”).getValues();
var idList=mkTesting.getRange(“A2:A”).getValues();
对于(变量i=0;i
参考文献:


共享一个样本,please@contributorpw总体目标是什么?你能用语言解释一下这个查询的目的吗?这有点像“给我看这张进口表中的所有ETA列,其中[list of Conditions]”@MattKing你几乎击中了它,Goal:“给我看这张进口表中的所有ETA列,其中装运ID在给定列表中”@HasanAYousef好的,我可以这样做,但“列表”在A列和B列中吗?您将这些标记为“项目”和“大小”。另外,样本中只有2批货,所以测试起来有点困难。我关心的是我想使用数组公式在整列执行它,这就是为什么meAh会变得复杂的原因。我也可以,那你想在一个单元格里列一份出货清单吗?也许逗号分隔?