2017-02-19 153 views
2

我有兩張數據,其中匹配的數據在不匹配的行中。嵌套間接()函數返回#REF

在一張紙上,我有一個值列表。

另一方面,我有一個數字列表,這些數字對應於第一張紙上包含匹配值的行號,我嘗試自動將其複製到第二張紙上。

這裏是我的代碼:

=INDIRECT("'Combined ICME+ipShocks List'!"&(INDIRECT("A"&H3))) 

所以應該指向,名爲「聯合ICME + ipShocks列表」表,在A列中的細胞與細胞H3當前工作表上確定的行。

用一個簡單的單元格(例如H3)取代了我爲第二個Indirect()寫的東西,所以我懷疑它與我寫的第二個Indirect()有關。

+0

是'INDIRECT(「A」&H3)'數字或有效單元格地址的值嗎?好像你沒有列出''A'&(' – Slai

+0

@Slai它應該是一個有效的單元格地址,H3只是一個數字,所以它應該是A的值(H3的值)「Combined ICME + ipShocks List「 – Colin

+1

有沒有理由不能使用'= INDIRECT(」'Combined ICME + ipShocks List'!A'&H3)'或更好呢,'= INDEX('Combined ICME + ipShocks List'!A:A ,H3)'? – Jeeped

回答

3

要回答這個問題,爲什麼這將引發一個錯誤:

間接需求解析爲一個單元地址的文本值

在您的公式中,嵌套了兩個Indirect()函數。

內部間接將解析爲單元格引用,如A1(作爲參考,而不是文本)。然後,您將該單元格引用與字符串連接並將其提供給外部Indirect()。這是導致錯誤的原因。間接期望一個字符串。你正在給它提供一個與單元格引用連接的字符串,這不是任何函數都能理解的組合。

如果您只是在字符串常量中包含列字母,則根本不需要內部間接。

=INDIRECT("'Combined ICME+ipShocks List'!A"&H3) 

請注意,間接是易失性的,只要任何單元發生變化就會導致工作簿被重新計算。這會讓你的工作簿變慢。應該非常謹慎地使用間接。在這種情況下,可以使用Index來替代,正如Jeeped在對您的問題發表評論時所建議的那樣。

=INDEX('Combined ICME+ipShocks List'!A:A,H3) 

既然你知道工作表名稱和列,僅行號是變量。在這種情況下,間接是矯枉過正。只有在需要使用公式構建圖紙名稱時才使用間接。