워크시트 함수의 셀, 열 및 행에 대한 자체 참조
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
'programing' 카테고리의 다른 글
Index Range Swift의 새로운 어레이 (0) | 2023.04.15 |
---|---|
열의 Excel VBA 루프 (0) | 2023.04.15 |
SQLBulkCopy에 권장되는 배치 크기는 어떻게 됩니까? (0) | 2023.04.15 |
데이터베이스가 현재 사용 중이므로 삭제할 수 없습니다. (0) | 2023.04.15 |
응용 프로그램에서 stdout을 파이프가 아닌 터미널로 생각하도록 속이는 무엇입니까? (0) | 2023.04.15 |