使用基于外部工作簿的dynamic文本的公式

我需要解释一下工作手册是如何devise的,以便我尝试使用的公式更有意义。

我试图从中获取数据的工作簿具有在特定国家/地区的顶部和假日水平运行的date,以便在相邻单元格中垂直写入给定date。 各国并不总是处在同一排,而且不是每天都有相同数量的前一天的国家。 例如,用字母来表示任意的行号和列号,

workbook1 col a col b col c row 1 1/1/2017 1/2/107 1/3/2017 row 2 row 3 Spain Canada Australia row 4 Colombia Spain Vietnam row 5 Vietnam England 

另一个工作簿中,我有这样的东西:

 workbook2 col a col b col c col d col e date date column no date column letter code Spain 1/1/2017 ax ="'[workbook1.xlsx]sheet'!$" & x & ":$" & x 

date column no列,我有一个公式,它给了我从第一个工作簿的左边的date存在的列号。 使用这个数字,我把它转换成在date column letter列下的date column letter 。 使用这个,我试图在workbook2build立一个dynamic的MATCH公式,它会告诉我它是否在第一个工作簿中find了国家。 匹配公式将被放置在“西class牙”的下面,写成=MATCH(E2, D2, 0) 。 这不会产生预期的结果。 我不确定将外部引用写入workbook2 d列中的string,并将其提供给公式正在使其工作。

不需要所有这些帮助列,也不需要将列号转换为列字母。 如果您使用索引,则可以根据列号build立一个范围。

 =MATCH(E1,INDEX([Workbook1.xlsx]Sheet1!$3:$3,MATCH(A2,[Workbook1.xlsx]Sheet1!$1:$1,0)):INDEX([Workbook1.xlsx]Sheet1!$20:$20,MATCH(A2,[Workbook1.xlsx]Sheet1!$1:$1,0)),0) 

这个公式已经应用在工作手册E2的前台。 Workbook1在后台。 该公式使用两个索引公式构build一个范围。 第一个find正确的列并返回第三行中的单元格。第二个索引find正确的列并返回第20行中的单元格。然后将返回的两个范围与“:”运算符组合成一个连续的范围。 该范围现在是正确的列,从第3行到第20行。然后将该范围馈送到匹配function,该function试图find“西class牙”或在该范围内的单元格E1的值。

在这里输入图像说明

请注意,Workbook1必须公开才能使用公式。 如果未打开,则公式会返回#Ref! 错误。

如果E1中的国家没有在范围内find,则公式返回#N / A! 错误。 你可以通过将整个公式包装成IfError或IF(IsNumber(theformula),"found","not found")