programing

워크시트 함수의 셀, 열 및 행에 대한 자체 참조

showcode 2023. 4. 15. 09:42
반응형

워크시트 함수의 셀, 열 및 행에 대한 자체 참조

Excel의 워크시트 함수에서 셀, 열 또는 행을 어떻게 직접 참조합니까?

셀이 자기 자신을 참조하려면:

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년 이전 버전입니다.column을 사용합니다.XFD 및 열: 1048576(2007+).

주의: 간접 기능은 휘발성이 높기 때문에 필요할 때만 사용해야 합니다.

여기서 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

특히 조건부 포맷의 경우 간접적인 것은 필요하지 않습니다.

셀, 행 또는 열을 자기 참조하는 가장 간단한 방법은 예를 들어 셀 A1의 "=A1"과 같이 정상적으로 참조하고 참조를 부분적으로 또는 완전히 상대적인 것으로 만드는 것입니다.예를 들어, 다양한 셀 행의 첫 번째 열에 값이 있는지 확인하는 조건부 형식 공식에서 A1이 강조 표시된 상태에서 다음을 입력하고 필요에 따라 복사합니다.조건부 형식은 항상 각 셀의 행에 대해 A 열을 참조합니다.

= $A1 <> ""

VBA 워크시트 함수 UDF에서는 Application을 사용합니다.UDF 를 호출한 수식을 포함한 셀의 범위를 취득하는 발신자.

비휘발성 솔루션의 경우 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)

Excel 2010에 이상한 오류가 있습니다.이러한 공식(1048576행 및 XFD열)의 마지막 행 또는 열을 사용할 수 없습니다.따라서 짧은 것을 참조해 주십시오.다른 버전에서도 동일한지 잘 모르겠으니 피드백과 편집을 부탁드립니다.

2003년(INDEX는 97년에 비휘발성이 되었다)에는 다음과 같이 되어 있습니다.

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는 참 또는 거짓이고 열 B는 통화 값을 포함하며 열 C는 다음 공식을 포함합니다.

=B1

여기서 열 A가 True이고 열 B가 0보다 큰 경우에만 조건 형식으로 열 B가 노란색으로 강조 표시됩니다.

=AND(A1=True,C1>0)

그런 다음 열 C를 숨기도록 선택할 수 있습니다.

내 현재 열은 다음과 같이 계산됩니다.

방법 1:

= LEFT(주소(ROW(), COLUMN(), 4,1), LEN(주소(ROW(), COLUMN())-LEN(ROW())

방법 2:.

= LEFT(주소(ROW(), COLUMN(), 4,1), INT(((COLUMN()-1)/26)+1)

내 현재 행은 다음과 같이 계산됩니다.

= RIGHT(주소(ROW(), COLUMN(), 4,1), LEN(ROW())

Sheet2에 대한 간접 링크!내 행의 열 A에 지정된 다른 행은 다음과 같습니다.

방법 1:

="시트2!"&LEFT(주소(ROW)(, COLUMN(ROW)(, COLUMN(), COLUMN(4,1))-LEN(ROW(ROW)(),&INDirect(ROW(ROW(ROW)(, 1,4,1)))))

방법 2:.

=Sheet("Sheet2!"&LEFT(주소(ROW(), COLUMN(), 4,1), INT(((COLUMN)-1)/26)+1)&간접(주소(ROW(), 1, 4, 1))

따라서 A6=3이고 내 행이 6이고 Col이 C이면 "Sheet2!"의 내용이 반환됩니다.C3 인치

A7=1이고 내 행이 7이고 내 Col이 D이면 "Sheet2!"의 내용이 반환됩니다.D1 인치

저는 이에 대한 해결책을 찾다가 처음에 이 페이지에 있는 간접적인 것을 사용했는데, 제가 하려는 것에 비해 꽤 길고 투박하다는 것을 알았습니다.약간의 조사 결과, R1C1 표기법을 사용한 보다 우아한 해결책을 발견했습니다.VBA를 사용하지 않으면 다른 표기법을 혼재시킬 수 없다고 생각합니다.

Self Referenced 셀을 사용하여 무엇을 수행하려고 하는지에 따라 다음 예시와 같은 셀이 F13이 있는 곳에서 셀을 참조하도록 해야 합니다.

Range("F13").FormulaR1C1 = "RC"

그런 다음 셀에 상대적인 위치에 있는 셀을 참조할 수 있습니다. 예를 들어 셀이 F13인 경우 G12를 참조해야 합니다.

Range("F13").FormulaR1C1 = "R[-1]C[1]"

기본적으로 Excel에게 F13을 찾은 후 한 줄 아래로 한 열 위로 이동하도록 지시합니다.

프로젝트에서는 룩업 값이 범위 내의 각 셀에 상대적인 범위에 걸쳐 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버전을 사용하고 있습니다)

언급URL : https://stackoverflow.com/questions/6335563/self-reference-for-cell-column-and-row-in-worksheet-functions

반응형