迈克尔的工作表中有月份名称(一月,二月等)

在B列中,他想从A列中指定的任何工作表的单元格B11中提取一个值。因此,如果A列中包含月份“ March”,则在三月右侧(在B列中) )

他想在三月份拉价!B11。 Michael相信INDIRECT函数应对此有所帮助,但他无法使其正常工作。

好消息是Michael是正确的-您可以使用INDIRECT函数来执行此操作。该函数的基本用法如下:

=INDIRECT(A1&"!B11")

通过将公式包含在检查错误的函数中,可以构建更“可靠”的公式版本。如果有错误,则在单元格中显示短语“无数据”:

=IFERROR(INDIRECT(A1&"!B11"),"No Data")

这些方法直接使用单元格A1中的任何内容,只要A1中的值是文本和单个单词,该方法就可以工作。如果A1中可能有第二个单词(例如“ July Production”),则需要对公式进行一些修改,以使其在单元格A11中包含撇号:

=IFERROR(INDIRECT("'"&A1&"'!B11"),"No Data")

因为撇号用于包围工作表名称,所以单元格A1中不能包含任何包含撇号的文本。因此,单元格A1中的“七月生产”将可以正常工作(前提是您有一个名为“七月生产”的工作表),但是由于撇号,“七月的生产”将不起作用。

此外,如果单元格A1中的任何内容上可能有前导或尾随空格,那么您将需要除去这些空格。补偿的最简单方法是使用TRIM函数:

=IFERROR(INDIRECT("'"&TRIM(A1)&"'!B11"),"No Data")

如果A1中的值是实际字符串,那么到目前为止提供的所有变体都可以正常工作。如果A1中的值是实际日期,格式看起来像月名称,则它们将不起作用。日期在内部以数字形式存储,并且使用到目前为止讨论的公式之一,将尝试将日期序列号添加到单元格引用中,这会产生错误。相反,您需要使用TEXT函数将A1中的日期转换为月份名称:

=IFERROR(INDIRECT(TEXT(A1,"mmmm")&"!B11"),"No Data")

如果您希望其他人在A1单元格中输入月份名称,那么建议您尽可能避免输入该名称。最好的方法是使用数据验证来限制可以输入到单元格A1中的内容。 (_ExcelTips_的其他问题已经介绍了如何使用数据验证。)

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12701)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。