0

如果我已在电子表格 #1 中添加/删除行,如何获得IMPORTRANGE更新电子表格 #2 中的引用的功能?

测试文档:

电子表格1:“S1”

电子表格2:“S2”

我找到的所有答案都说

  1. 只需将工作表从 S1 复制/复制到 S2(但我希望 S2 在更新 S1 时动态更新。不想每次都更新 S1 和 S2)
  2. 使用这个脚本,但我得到一个错误,说范围是错误的
  3. 使用数组(不知道该怎么做......)
  4. 使用address功能(但这也不起作用)
  5. 使用VLOOKUP数组(但我的电子表格没有匹配的列标题)
  6. 尝试使用绝对参考 $L$48 但这也不起作用

希望能得到一些帮助来解决这个问题。我需要 L47、M47 (S1) 填充到 A2、A3 (S2) 中。我的实际源电子表格(未链接)有大量数据(范围 A1:Z55),我经常添加/删除/移动行。

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

4

1 回答 1

0

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

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

在这种特殊情况下,使用了进料的AGIMPORTRANGE柱。

Sheet1!AG的Spreadsheet1中(无论行号如何),都有公式,其中L50M50的内容以及L51M51的内容等等......(无论是直接还是间接地完成输出是):JOINTEXT

=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

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

电子表格2 中,您可以在任何列和任何行自由粘贴以下公式,并且您可以自由:

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

 =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)

这基本上是针对 Sheet1 下的 Spreadsheet1 中SEARCH的文本值"banana"从范围 AG1:AG1000 并将其馈送到FILTER哪个馈送标准,该馈送标准QUERYARRAY_CONSTRAINed 返回一个条目,并且该条目SPLIT在唯一分隔符"¤"(前面使用过JOIN)之后进入同一行的两列. 就是这样。

如果单元格L50的内容是静态的banana ,并且每列也是唯一的,则您可以使用SEARCH"banana"否则您需要为每列使用唯一的分隔符,并且SEARCH对于此类分隔符,而不是"banana"

要成功连接,您需要确保分隔符 inSPLIT匹配JOIN( "¤") 中的分隔符。您可以使用任何您希望的符号作为分隔符(http://www.i2symbol.com/symbols

例如:对于公式=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)

或者

 =SPLIT(
        ARRAY_CONSTRAIN(
                        QUERY(


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

        "select Col1 where Col1 ='"&
        FILTER(

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

                   ISNUMBER(
                            SEARCH("♤";

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

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

或者

 =SPLIT(
        ARRAY_CONSTRAIN(
                        QUERY(


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

        "select Col1 where Col1 ='"&
        FILTER(

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

                   ISNUMBER(
                            SEARCH("avg LMT";

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

                   ))
                                    &"'"); 
                        1; 1); 
       "♤"; 1; 0)
于 2018-08-28T12:45:34.950 回答