【问题标题】:How to offset importrange() within an arrayformula()如何在 arrayformula() 中偏移 importrange()
【发布时间】:2020-03-13 16:33:54
【问题描述】:

我有两个包含信息的 Google 表格(单独的文档),我们称它们为 MasterSource。在Source 中,我有一个未定义的单元格范围,这些单元格按日期排序,我需要在Master 中显示。 Master 旨在链接到所有各种 Source 工作表,在正常操作中,我将拥有多个这样的链接,因此我可以查看有关所有 Source 工作表的所有快速信息,方便地显示在 @ 987654330@。 Master 包含一个在 Source 内的日期范围之前和之后的日期范围(以容纳来自其他 Source 工作表的其他日期范围)。

我的目标是创建一个单元格公式,可以为每个 Source 复制和粘贴我需要在 Master 中查看的单元格,这将填充日期范围之前和之后的列中的单元格 Source使用字符串“No Class”,所有与Source 中的日期范围匹配的单元格将只是对来自Source 的匹配单元格的复制/引用。这是我想出的公式:

=ARRAYFORMULA(if({A1:Z1;A1:Z1;A1:Z1;A1:Z1;A1:Z1}<importrange(Link!B4,"Source!A1"),"No Class",if({A1:Z1;A1:Z1;A1:Z1;A1:Z1;A1:Z1}>Link!N4,"No Class",importrange(Link!B4,"Source!A1:Z99"))))
Link!N4 = Start Date
Link!B4 = hyperlink to the google sheet `Source`

令人惊讶的是,它运行良好,除了一个主要缺点:importrange 中的值数组与公式所在的单元格相关 - 也就是,Source 的范围从 Master!A1 开始,而不是从与Source!A1 具有相同日期的第一列开始。

这是我在Master 中的公式结果的screenshot。 *编辑:No Class 具有条件格式以使字体颜色与填充相匹配,因此您在此屏幕截图中看不到它,但它们是深灰色单元格。

还有another screenshot,这次我要查看的是Source

我意识到这种方法可能不是唯一的方法(或者可能根本不起作用),但每次我尝试其他方法时,它总是归结为同一个问题:如何在第一列动态启动 importrange使用第一个单元格中的公式匹配来自Source 的日期?

【问题讨论】:

    标签: google-sheets google-sheets-formula


    【解决方案1】:

    我找到了一个可接受的解决方法。这绝不是试图在数组中偏移数据的问题的解决方案,但它允许我得到我需要做的事情。此代码需要使用填充句柄(所选单元格右下角的蓝色方块)填充。如果有人遇到类似情况并需要另一种方法来查看问题,我会在此处添加此内容。

    =iferror(if(importrange(Link!$B4,"Source!A1")>A2,{"No Class";"No Class";"No Class";"No Class";"No Class"},if(importrange(Link!$B4,address(1,COLUMN(A3)-match(importrange(Link!$B4,"Source!A1"),$A2:$Z2,0),4,TRUE,"Source"))=A2,importrange(Link!$B4,address(2,COLUMN(A3)-match(importrange(Link!$B4,"Source!A1"),$A2:$Z2,0),4,TRUE,"Source")&":"&address(5,COLUMN(A3)-match(importrange(Link!$B4,"Source!A1"),$A2:$Z2,0),4,TRUE)),"No Class")),{"No Class";"No Class";"No Class";"No Class";"No Class"})
    
    A2 is the date of the coloumn in master I'm trying to import into, it changes as your drag the fill handel.
    A3 is the cell that the formula is currently in
    
    1. 这通过首先检查 iferror 来工作(但我会回到那个)。
    2. 然后,如果与公式在同一列中的日期小于开始日期,则“No Class”填充该列(隐藏开始日期之前的日期)
    3. ELSE 如果与公式在同一列中的日期与Source 列中的日期相同(偏移距开始日期的列数),则用对应的列填充该列Source(也就是一次填充一列,而不是一次导入整个范围)。
    4. (返回 iferror)对于结束日期之后的任何列都会返回错误 - 因此 iferror 会用“No Class”填充这些列

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 2021-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多