使用INDIRECT函数引用其他工作表的单元格范围
使用INDIRECT函数引用其他工作表的单元格范围
我正在努力寻找一种方法,以动态方式对其他工作表上的单元格范围进行间接引用。希望得到任何建议,详细内容如下:
工作簿包括4个工作表(Product1,Product2,Product3,Warehouses)。Warehouses工作表包含以下公式,用于从三个产品工作表中为每个仓库填充库存清单(来源于http://exceltactics.com/make-filtered-list-sub-arrays-excel-using-small/)。这是B3单元格中的公式:
=IFERROR(INDEX(INDIRECT(B$2&"!B$3:B$400"),SMALL(IF(INDIRECT(B$2&"!$C$3:$C$400")=$B$1,ROW(INDIRECT(B$2&"!B$3:B$400"))-ROW(INDIRECT(B$2&"!B$3"))+1),ROWS(Product1!$B$3:$B3))),"")
其中:
Warehouses-->$B$1 = Warehouse1 or Warehouse2
Warehouses-->B2, C2, D2 = Product1, Product2, Product3的列标题
产品工作表-->B列 = 序列号
产品工作表-->C列 = 位置(Warehouse1,Warehouse2)
目前,我必须为每一行修改公式的最后部分:ROWS(Product1!$B$3:$B3)
,ROWS(Product2!$B$3:$B3)
,ROWS(Product3!$B$3:$B3)
。我试图像代码的其他部分一样动态链接到列标题上(例如ROW(INDIRECT(B$2&"!B$3:B$400"))
)。但我被困扰了,因为范围$B3
必须随着每一行的改变而改变,而其他范围是静态的,并且用引号括起来没有问题。
这个努力很重要,因为我希望能够让能力较弱的用户在不修改公式的情况下将其复制到新列中。感谢任何关于此的想法!
INDIRECT函数用于引用其他工作表中的单元格范围。然而,在使用INDIRECT函数时,有时会遇到问题,需要进行相应的修改和解决。
问题的原因是,INDIRECT函数在引用其他工作表中的单元格范围时,需要考虑当前单元格的行数。如果不考虑当前单元格的行数,INDIRECT函数会出现引用错误的情况。
解决方法之一是修改INDIRECT函数的公式,使其考虑到当前单元格的行数。例如,可以使用以下公式:
=INDIRECT(B$2&"!B$"&ROW()&":B$"&(ROW()+397))
这样,INDIRECT函数就会根据当前单元格的行数来引用其他工作表中的单元格范围。
另一种解决方法是使用OFFSET函数来每行移动引用的范围。可以使用以下公式:
=OFFSET(INDIRECT(B$2&"!B$3:B$400"),ROW()-3,0)
通过使用OFFSET函数,可以根据当前单元格的行数来动态地调整引用的范围。
以上是对这个问题出现的原因和解决方法的整理。希望以上内容对您有所帮助。
在上述内容中,提到了使用INDIRECT函数引用其他工作表的单元格范围的方法。问题是,当需要在公式中引入递增的数字时,可以使用ROW函数来实现。例如,使用ROW(1:1)可以返回1、2、3等递增的数字。在这种情况下,从ROW(3:3)开始。
然而,问题是在公式的最后一部分中,需要对每一列进行修改,因为公式中的ROWS(Product1!...)是硬编码的。希望能够将工作表名称与"Wares"工作表的第3行的值关联起来,这样就不需要将公式从ROWS(Product1!...)更改为ROWS(Product2!...)等。为了更好地说明问题,提供了一个Google Sheets的示例。
最后,提到在使用文本描述的单元格地址上保留绝对$符号的设计可能有助于提醒哪些部分会相对变化,哪些部分会保持不变,但是表示行或列的文本实际上是永远不会改变的,所以它们有点多余。
根据上述内容,我们可以得出以下结论:
问题的原因是需要在公式中引用其他工作表的单元格范围,并且需要在公式中使用递增的数字。
解决方法是使用INDIRECT函数和ROW函数。通过使用ROW函数,可以返回递增的数字。通过在INDIRECT函数中使用工作表名称和ROW函数的结果,可以引用其他工作表的单元格范围。
希望将工作表名称与"Wares"工作表的第3行的值关联起来,以便不需要手动更改公式中的工作表名称。
可以使用INDIRECT函数来引用其他工作表的单元格范围,并通过结合ROW函数来实现递增的数字。通过将工作表名称与特定单元格的值关联起来,可以避免手动更改公式。