【问题标题】:What is wrong with this Excel Formula?这个 Excel 公式有什么问题?
【发布时间】:2011-10-17 20:54:10
【问题描述】:

我有这个公式=IF(G6="", "", CONCATENATE("[",INDIRECT(G6),"]","Sheet1","!$A1"))

它从G6 列读取excel file name,然后从Sheet1 读取Column A

这给出了无效的Cell Reference Error。这有什么问题吗?

【问题讨论】:

  • 试试这个:=IF(G6="", "", CONCATENATE("[",INDIRECT("G6"),"]",Sheet1!$A1))

标签: excel excel-formula


【解决方案1】:

这是你需要的:

=IF(G6="", "", INDIRECT(CONCATENATE("'[",G6,"]Sheet1'!$A1")))

如果G6持有文本zipcodes-phoenixTEST.xlsx,那么公式等价于

='[zipcodes-phoenixTEST.xlsx]Sheet1'!$A1

这将产生文件zipcodes-phoenixTEST.xlsxSheet1的单元格A1的值...

【讨论】:

  • 哦谢天谢地,终于成功了,你太好了。不幸的是,我只能投票一次 :( 好的,现在几乎没有改进,当我将该公式拖到其他单元格时,它会将 G6 更改为 G7, G8 及以后,我不希望这样。G6 只需要在公式中修复@ 987654332@需要为每个单元格更改。请帮助
  • 那么请mark the answer as accepted。注意:固定引用行或列的是美元符号$A1 中没有行/列是固定的,$A1 中的列是固定的,A$1 中的行是固定的,@ 987654337@ 行列都固定;同样的规则适用于您的G6 :]
  • 这是我很久以前回答的!
  • @Eder:是的,现在我明白了,但你忘记了开头的撇号。如果引用的文件没有密码保护,则实际上不需要打开它:可以简单地包括在左撇号和左括号之间的完整目录路径,类似于:CONCATENATE("'C:\My share\[",G6,"]Sheet1'!$A1") 或者只是使用另一个引用.
  • @mousio,是的,为了清楚起见,我忘记了开头的撇号 +1!
【解决方案2】:
=IF(G6="", "", CONCATENATE("[",INDIRECT("G6"),"]",Sheet1!$A1))

你错过了 G6 前后的双引号

【讨论】:

  • 如果我添加双引号,它不会评估连接的字符串,它只会在单元格中打印连接的字符串。如何解决?
  • 哦,是的,对不起,我错过了。检查那部分。
  • 提示是 =CONCATENATE("a","b",INDIRECT("G6")) 工作正常,所以问题出在“!$A1”。让我们试试别的吧。
  • 我想这应该可行。 =IF(G6="", "", CONCATENATE("[",INDIRECT("G6"),"]",Sheet1!$A1))
  • 当我输入公式时,它会打开文件对话框以选择文件。应该这样吗?当我选择文件时,它只是在单元格中再次打印连接的字符串
【解决方案3】:

这个对我有用:

=IF(G6=""; ""; CONCATENATE("[";INDIRECT("G6");"]";Sheet1!$A1))

我的 Excel 告诉我应该在函数中使用分号 (;)(尽管我没有英文版)。此外,您不应将 Sheet1 和地址分开 - 它们仅在一起使用时才有效:Sheet1!$A1。这也不应该被包裹在“”中。

【讨论】:

  • 这似乎对我不起作用,我收到错误消息。不过,这对我有用: =IF(G6="", "", CONCATENATE("[",INDIRECT("G6"),"]",Sheet1!$A1))
  • 当我输入公式时,它会打开文件对话框来选择文件。应该这样吗?当我选择文件时,它只是在单元格中再次打印连接的字符串
  • CONCATENATE 里面的内容也会被打印出来,所以我最终得到了这个[zipcodes-phoenixTEST.xlsx]4636181。这导致文件对话框打开。但结果应该只是4636181。我试图用INDIRECT 将整个CONCATENATE 包装为INDIRECT(CONCATENATE("[",INDIRECT("G6"),"]",Sheet1!$A1)) 但这甚至不起作用。迫切需要解决方案
  • @SidCool 分号可能特定于我的语言版本。
  • @AamirAdnan 不,它不应该带来文件打开对话框。它应该采用 G6 单元格的值并将其与方括号和 Sheet1 中 $A1 单元格的值连接起来。
【解决方案4】:

我过去也这样做过,

首先,您需要打开正在阅读/搜索的 excel 文件。那么你必须在CONCATENATE之后使用INDIRECT

INDIRECT(CONCATENATE("[", G6, "]", "Sheet1","'!$A1"))

注意

您忘记了"!$A1" 中的! 之前的' 应该是"'!$A1"

【讨论】:

  • @SidCool,我的错,我忘了提到你不需要 G6 上的完整路径,只需要工作簿的名称。
猜你喜欢
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
相关资源
最近更新 更多