2个电子表格,IMPORTRANGE在添加/删除行时更新引用

时间:2018-08-21 22:18:34

标签: google-sheets rows google-sheets-formula importrange

如果我已经向电子表格#1添加/删除了行,如何获得IMPORTRANGE函数来更新电子表格#2中的引用?

测试文档:

Spreadsheet1: "S1"

Spreadsheet2: "S2"

我找到的所有答案都说

  1. 只是从S1到S2的副本/副本(但是我希望S2在更新S1时动态更新。不想每次都更新S1和S2)
  2. 使用此script,但出现错误,提示范围错误
  3. 使用数组(不确定如何执行此操作...)
  4. 使用address功能(但这也不起作用)
  5. 使用VLOOKUP数组(但我的电子表格没有匹配的列标题)
  6. 使用绝对引用$ L $ 48进行了尝试,但这也不起作用

希望能为您解决此问题提供帮助。我需要L47,M47(S1)才能填充到A2,A3(S2)。我的实际源电子表格(未链接)具有大量数据(范围A1:Z55),并且我经常添加/删除/移动行。

如果我向S1添加一行,如何确保L47在S2中更新为L48address功能是最好的解决方案还是array更好?

1 个答案:

答案 0 :(得分:0)

这可以通过在远处添加一个额外的列来实现,该列可以隐藏起来,然后通过使用唯一的分隔符连接所需的单元格集来填充此列,直到在第二个电子表格上发生拆分为止。请注意:

  • 添加或删除行不会影响IMPORTRANGE的动态
  • 添加删除列将破坏所有导入的数据
  • 如果每个IMPORTRANGE数据中都有一个唯一的分隔符,并且始终将搜索应用于这样的唯一分隔符,则不需要多余的列

在这种情况下,使用了 AG 列,从中输入了IMPORTRANGE

Sheet1!AG 中的 Spreadsheet1 中的

(无论行号如何)都有JOIN L50 内容和 M50 以及 L51 M51 的内容等...(无论是直接还是间接完成输出)是TEXT):

=JOIN("¤"; L50; MIN(FILTER(L:L; ISNUMBER(SEARCH("*banana*"; P:P))     
                               +ISNUMBER(SEARCH("*banana*"; Q:Q))
                               +ISNUMBER(SEARCH("*banana*"; R:R)))))
  

输出: next banana¤30-Aug-2004


=JOIN("¤"; L51; MIN(FILTER(L:L; ISNUMBER(SEARCH("*orange*"; P:P))     
                               +ISNUMBER(SEARCH("*orange*"; Q:Q))
                               +ISNUMBER(SEARCH("*orange*"; R:R)))))
  

输出: next orange¤2-Oct-2003


=JOIN("♥"; L52; AVERAGE(FILTER(L:L; ISNUMBER(SEARCH("orange"; P:P))
                                   +ISNUMBER(SEARCH("orange"; Q:Q))
                                   +ISNUMBER(SEARCH("orange"; R:R)))))
  

输出: X♥25-Sep-2013


=JOIN("♀"; L53; MIN(FILTER(L5:L48; ISNUMBER(SEARCH("*banana*"; Q5:Q48))
                                  *ISNUMBER(SEARCH("open";     R5:R48)))))
  

输出: next banana♀20-Aug-2000


=JOIN("♂"; L54; AVERAGEIFS(M5:M48; R5:R48; "open", 
                                   Q5:Q48; "*banana*"))
  

输出: avg days open (banana)♂74.41


=JOIN("♪"; L55; Q50/Q51)
  

输出: util♪0.370544987


=JOIN("♫"; L56; MINIFS(M5:M48; R5:R48; "open", 
                               Q5:Q48; "*banana*"))
  

输出: newest (mo)♫3.48


=JOIN("¤"; L57; M56*30.5)
  

输出: newest(days)¤106.2580645


=JOIN("♤"; L58; M58)
  

输出: avg LMT♤25051.35484

此时,连接单元格的格式是否以其他方式输出都无关紧要(例如,输出的第二部分应格式化为 $ { {1}} % ),因为在拆分后的 Spreadsheet2 中,您可以根据需要设置其格式

Spreadsheet2 中,您可以将以下公式粘贴到任何列和任何行上,也可以随意粘贴:

  • 添加或删除 Spreadsheet1
  • 中的任何行
  • 并添加或删除 Spreadsheet2
  • 中的任何行或列

mm/dd/yyyy

这基本上 =SPLIT( ARRAY_CONSTRAIN( QUERY( IMPORTRANGE("13evadbMLzvQVSGbYssn_0deFdcmb5l3sqpeFgcNTjOY"; "'Sheet1'!AG1:AG1000"); "select Col1 where Col1 ='"& FILTER( IMPORTRANGE("13evadbMLzvQVSGbYssn_0deFdcmb5l3sqpeFgcNTjOY"; "'Sheet1'!AG1:AG1000"); ISNUMBER( SEARCH("banana"; IMPORTRANGE("13evadbMLzvQVSGbYssn_0deFdcmb5l3sqpeFgcNTjOY"; "'Sheet1'!AG1:AG1000")) )) &"'"); 1; 1); "¤"; 1; 0) 是Sp1中来自范围AG1:AG1000的Sheet1下Spreadsheet1中的文本值SEARCH,并将其馈送到"banana",后者馈给FILTER的标准是{ {1}}返回一个条目,该条目在唯一行QUERY(先前在ARRAY_CONSTRAIN中使用)之后SPLIT进入同一行的两列。就是这样。

如果单元格 L50 的内容是静态的,如"¤" ,并且每列也是唯一的,则可以JOIN代替banana您需要使用每列唯一的分隔符SEARCH代替这样的分隔符,"banana"

为成功链接,您需要确保SEARCH中的分隔符与"banana"SPLIT)中的分隔符匹配。您可以使用任意符号作为分隔符( http://www.i2symbol.com/symbols

示例:对于公式 JOIN ,您可以使用:

"¤"

=JOIN("♤"; L58; M58)

 =SPLIT(
        ARRAY_CONSTRAIN(
                        QUERY(


        IMPORTRANGE("13evadbMLzvQVSGbYssn_0deFdcmb5l3sqpeFgcNTjOY"; "'Sheet1'!AG1:AG1000");

        "select Col1 where Col1 ='"&
        FILTER(

        IMPORTRANGE("13evadbMLzvQVSGbYssn_0deFdcmb5l3sqpeFgcNTjOY"; "'Sheet1'!AG1:AG1000");

                   ISNUMBER(
                            SEARCH("lmt";

        IMPORTRANGE("13evadbMLzvQVSGbYssn_0deFdcmb5l3sqpeFgcNTjOY"; "'Sheet1'!AG1:AG1000"))

                   ))
                                    &"'"); 
                        1; 1); 
       "♤"; 1; 0)