2012-07-03 122 views
1

解決的是有一個功能,我可以把細胞A2,將返回無論是在下面的任何細胞被寫入A1細胞?查找相對位置細胞在其他細胞

因此,舉例來說,如果A1包含=B35然後A2將返回包含在細胞B36的價值,如果我改變A1=C17然後A2現在將包含無論是在C18

我一直在嘗試使用indirect(),offset()address()的組合,但無法弄清楚。

回答

1

假設你不想做任何事情遠遠抵消單個單元格引用,你可以在混合更復雜一點VBA。

在一個新的模塊:

Public Function tFormula(ByVal Target As Range) As String 
    tFormula = Mid(Target.FORMULA, 2) 
End Function 

B1 = 「= C1」

C2 = 「你好」

A1 =「=偏移(tFormula(B1),1,0) 「

偏移(tFormula(B1),1,0)= 」你好「

3

我不認爲這是可以做到很喜歡你想要的。最近的我可以將「目標」地址放在一個單元格中,例如,在這張圖片中,A2只包含字符串「b3」。然後你可以指出間接函數。因此,在D2中的公式,下面B3單元格的值是:

=OFFSET(INDIRECT(A2),1,0)

enter image description here

+0

+1。如果確實有一個「=」部分則這可能與'SUBSTITUTE' – brettdj

+0

感謝戴夫被剝離出來,我的意思是@brettdj。如果你的意思是在公式開頭的「=」可以被替代掉,我不知道如何。這是我嘗試的第一件事,因爲它會讓整個事情變得更容易,但是在VBA中做這件事情卻很少,我不明白。 –

+0

我同意 - 我正在考慮像'= B5'這樣的字符串,而不是一個真正的公式。第二個想法是不太可能的 – brettdj

0

我想我可能已經解決了這一個。在Excel 2013,我的問題是與你相似:

E107包含=A100,我想E108返回包含在細胞B100值,所以如果我改變E107=A101然後E108現在將包含無論是在B101

我的解決辦法:

=INDIRECT(CHAR(CODE(RIGHT(LEFT(FORMULATEXT(E107),2),1))+1)&RIGHT(FORMULATEXT(E107),LEN(FORMULATEXT(E107))-2)) 

,我發現了公式的單元格中的文本與FORMULATEXT和應用ASCII操作與CODECHAR加起來A,使之成爲B,然後返回值爲INDIRECT。需要一些字符串操作,具有LEFTRIGHT的功能。