要让一个单元格自我引用:
INDIRECT(ADDRESS(ROW(), COLUMN()))
如果一个单元格要自我引用其所在的列:
INDIRECT(ADDRESS(1,COLUMN()) & ":" & ADDRESS(65536, COLUMN()))
如果一个单元格要自我引用其行:
INDIRECT(ADDRESS(ROW(),1) & ":" & ADDRESS(ROW(),256))
or
INDIRECT("A" & ROW() & ":IV" & ROW())
这些数字是针对2003年及之前的版本,对于2007年及以后的版本,请使用列:XFD和行:1048576。
注意:INDIRECT函数是一种易变函数,只有在有需要时才应使用。
=ISTLEER(INDIREKT(ADRESSE(ZEILE();SPALTE())))
。 - CodeManX我认为没有必要使用间接函数,特别是对于条件格式而言。
自引用单元格、行或列的最简单方式是正常引用它,比如在单元格A1中输入"=A1" 并将引用部分或全部设为相对引用。例如,在条件格式公式中检查各个单元格行的第一列是否存在值时,可以在突出显示的A1单元格中输入以下内容,并根据需要复制。条件格式将始终引用每个单元格所在行的A列:
= $A1 <> ""
其中 F13 是您需要引用的单元格:
=CELL("Row",F13) yields 13; its row number
=CELL("Col",F13) yields 6; its column number;
=SUBSTITUTE(ADDRESS(1,COLUMN(F13)*1,4),"1","") yields F; its column letter
对于一种非易失性解决方案,2007年以后的版本怎么样:
for cell =INDEX($A$1:$XFC$1048576,ROW(),COLUMN())
for column =INDEX($A$1:$XFC$1048576,0,COLUMN())
for row =INDEX($A$1:$XFC$1048576,ROW(),0)
for cell =INDEX($A$1:$IV$65536,ROW(),COLUMN())
for column =INDEX($A$1:$IV$65536,0,COLUMN())
for row =INDEX($A$1:$IV$65536,ROW(),0)
有一种更安全、不会拖慢应用程序的更好方法。Excel 的设置是,一个单元格可以有一个值或一个公式;公式不能引用其自身的单元格,否则会陷入无限循环,因为新值会导致另一个计算...。
使用一个辅助列基于你在其他单元格中输入的内容来计算值。
例如:
列 A 是 True 或 False,列 B 包含一个货币值,列 C 包含以下公式:
=B1
=AND(A1=True,C1>0)
我的当前列是通过以下方法计算的:
方法1:
=LEFT(ADDRESS(ROW(),COLUMN(),4,1),LEN(ADDRESS(ROW(),COLUMN(),4,1))-LEN(ROW()))
方法2:
=LEFT(ADDRESS(ROW(),COLUMN(),4,1),INT((COLUMN()-1)/26)+1)
我的当前行是通过以下方法计算的:
=RIGHT(ADDRESS(ROW(),COLUMN(),4,1),LEN(ROW()))
因此,对于指定在我的行中的列A中的不同行,与Sheet2!My Column存在间接链接的内容为:
方法1:
=INDIRECT("Sheet2!"&LEFT(ADDRESS(ROW(),COLUMN(),4,1),LEN(ADDRESS(ROW(),COLUMN(),4,1))-LEN(ROW()))&INDIRECT(ADDRESS(ROW(),1,4,1)))
方法2:
=INDIRECT("Sheet2!"&LEFT(ADDRESS(ROW(),COLUMN(),4,1),INT((COLUMN()-1)/26)+1)&INDIRECT(ADDRESS(ROW(),1,4,1)))
所以,如果A6=3,我的行是6,我的列是C,则返回“Sheet2!C3”的内容。
所以,如果A7=1,我的行是7,我的列是D,则返回“Sheet2!D1”的内容。
我一开始在这个页面上找到了间接的解决方案,但是我发现对于我想要做的事情来说,它相当冗长和笨重。经过一番研究,我找到了一种更优雅的解决方案(针对我的问题),使用R1C1符号表示法 - 我认为你不能混合使用不同的表示法而不使用VBA。
根据您尝试使用自引用单元格的目的,像这个示例一样,可以使一个单元格引用其自身,其中单元格为F13:
Range("F13").FormulaR1C1 = "RC"
您可以相对于该单元格引用相对位置的单元格,例如 - 如果您的单元格为F13,并且需要从中引用G12。
Range("F13").FormulaR1C1 = "R[-1]C[1]"
您实际上是在告诉Excel找到F13,然后从那个单元格向下移动1行并向上移动一列。
这如何适用于我的项目是在应用vlookup跨范围进行查找时,查找值相对于范围中的每个单元格而不必单独指定每个查找单元格:
Sub Code()
Dim Range1 As Range
Set Range1 = Range("B18:B23")
Range1.Locked = False
Range1.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],DATABYCODE,2,FALSE),"""")"
Range1.Locked = True
End Sub
我的查找值是DIM'd范围中每个单元格的左侧单元格(列-1),而DATABYCODE是我要查找的命名范围。
希望这有点意义?认为将其作为解决问题的另一种方法是值得考虑的。
只是针对行,但尝试引用所选单元格下方的单元格并从行中减去一个。
=ROW(A2)-1
返回单元格A1的行(此公式应放置在单元格A1中)。
这避免了所有间接(indirect())和索引(index())的使用,但仍然有效。
=row()
或者
=column()
应该足够了(我正在使用365版本)