열의 마지막 비어 있지 않은 셀
마이크로소프트 엑셀에서 열의 비어 있지 않은 마지막 셀 값을 찾는 공식을 아는 사람이 있습니까?
간단한 공식을 사용하는 것이 훨씬 빠릅니다.
=LOOKUP(2,1/(A:A<>""),A:A)
Excel 2003의 경우:
=LOOKUP(2,1/(A1:A65535<>""),A1:A65535)
다음과 같은 이점을 제공합니다.
- 배열 공식이 아닙니다.
- 휘발성 공식이 아닙니다.
설명:
(A:A<>"")배을반니다합환열▁array를 반환합니다.{TRUE,TRUE,..,FALSE,..}1/(A:A<>"")이 배열을 다음으로 수정합니다.{1,1,..,#DIV/0!,..}.- 배열이 오름차순으로 정렬될 것으로 예상하고, 다음과 같은 경우를 고려합니다.
LOOKUP찾을 수. 가장 큰 합니다. 함수는 가장 큰 값을 선택합니다.lookup_range(우리의경우경){1,1,..,#DIV/0!,..}의 경우)2), 공식이 마지막으로 발견됩니다.1합니다.result_range번째 매개변수 - (으)로 표시됨 -A:A).
또한 위의 공식은 오류가 있는 셀을 고려하지 않습니다(공백이 아닌 마지막 셀에 오류가 있는 경우에만 볼 수 있습니다).이를 고려하려면 다음을 사용합니다.
=LOOKUP(2,1/(NOT(ISBLANK(A:A))),A:A)
아래 이미지는 차이를 보여줍니다.

이것은 텍스트와 숫자 모두에서 작동하며 빈 셀이 있는지 여부에 관계없이 마지막 빈 셀을 반환합니다.
입력하거나 붙여넣은 후 Ctrl-Shift-Enter 키를 눌러야 합니다.다음은 열 A에 대한 것입니다.
=INDEX(A:A,MAX((A:A<>"")*(ROW(A:A))))
옵션이 다은다옵니다입션른음다.=OFFSET($A$1;COUNTA(A:A)-1;0)
이 질문이 오래된 것은 알지만 제공된 답변에 만족하지 않습니다.
LOOKING, VLOOKUP 및 HLOOKUP에는 성능 문제가 있으므로 절대 사용해서는 안 됩니다.
어레이 기능은 오버헤드가 많고 성능 문제도 있을 수 있으므로 최후의 수단으로만 사용해야 합니다.
COUNT 및 COUNTA는 데이터가 연속적으로 비어 있지 않으면 문제가 발생합니다. 즉, 빈 공간이 있으면 해당 범위의 데이터가 다시 표시됩니다.
INDIRECT는 휘발성이므로 최후의 수단으로만 사용해야 합니다.
OFFSET은 휘발성이므로 마지막 수단으로만 사용해야 합니다.
가능한 마지막 행 또는 열에 대한 참조(예: Excel 2003의 65536번째 행)는 견고하지 않으며 추가 오버헤드가 발생합니다.
이것이 제가 사용하는 것입니다.
: 데터유 혼된경우합형:
=max(MATCH(1E+306,[RANGE],1),MATCH("*",[RANGE],-1))되어 있는: 데터에숫포것으알려로경우진함된:
=MATCH(1E+306,[RANGE],1)되어 있는 경우: 터에텍포것함으알려경우진로된스만트:
=MATCH("*",[RANGE],-1)
MATCH는 오버헤드가 가장 적고 비휘발성이므로 많은 데이터로 작업하는 경우 이 방법을 사용하는 것이 가장 좋습니다.
더그 글랜시의 대답에 영감을 받아 저는 배열 공식 없이도 동일한 작업을 수행할 수 있는 방법을 생각해냈습니다.이유를 묻지는 마십시오. 하지만 가능하면 배열 공식을 사용하는 것을 피하고 싶습니다(특별한 이유가 아니라 단지 제 스타일일 뿐입니다).
여기 있습니다.
=SUMPRODUCT(MAX(($A:$A<>"")*(ROW(A:A))))
A열을 기준 열로 사용하여 비어 있지 않은 마지막 행 찾기
=SUMPRODUCT(MAX(($1:$1<>"")*(COLUMN(1:1))))
1행을 기준 행으로 사용하여 비어 있지 않은 마지막 열 찾기
이것은 동적 명명된 범위를 효율적으로 정의하기 위해 인덱스 기능과 함께 더 활용될 수 있지만, 이것은 여기서 다루는 즉각적인 질문과 관련이 없기 때문에 다른 게시물을 위한 것입니다.
위의 방법을 "기본적으로" 및 "호환성 모드"(이전 버전의 Excel의 경우)에서 모두 테스트했으며 작동합니다.Ctrl+Shift+Enter 키를 누를 필요가 없습니다.Excel에서 sum product가 작동하는 방식을 활용하면 어레이 작업을 수행해야 하는 필요성을 피할 수 있지만 어레이 공식 없이 수행할 수 있습니다.저만큼 제안된 sum product 솔루션의 아름다움, 단순성, 우아함을 높이 평가할 수 있는 사람이 있기를 바랍니다.그러나 위 솔루션의 메모리 효율성을 증명하지는 않습니다.단순하고, 아름다워 보이고, 의도된 목적에 도움이 되고, 다른 목적으로 사용을 확장할 수 있을 정도로 유연하다는 것만으로도 :)
이것이 도움이 되길 바랍니다!
좋은 일만 가득하시길요!
이 기능은 Excel 2003에서 작동합니다(나중에 마이너 편집을 통해 아래 참조).Ctrl+Shift+Enter(Enter뿐만 아니라)를 눌러 배열 공식으로 입력합니다.
=IF(ISBLANK(A65536),INDEX(A1:A65535,MAX((A1:A65535<>"")*(ROW(A1:A65535)))),A65536)
Excel 2003에서는 배열 수식을 전체 열에 적용할 수 없습니다.그렇게 하면 수확량이 나옵니다.#NUM!예측할 수 없는 결과가 발생할 수 있습니다! (편집: Microsoft의 충돌 정보:Excel 2007에 대해서도 마찬가지일 수도 있고 그렇지 않을 수도 있습니다. 2010년에 문제가 해결되었을 수도 있습니다.)
그래서 어레이 공식을 범위에 적용합니다.A1:A65535그리고 마지막 세포에 특별한 치료를 합니다.A65536Excel 2003은 다음과 같습니다.그냥말수는할말수는할▁can▁say'.A:A아니 심지어는A1:A65536후자가 자동적으로 로 되돌아옴에 따라.A:A.
만약 당신이 확신한다면,A65536공백인 경우 다음 항목을 건너뛸 수 있습니다.IF표시된 항목:
=INDEX(A1:A65535,MAX((A1:A65535<>"")*(ROW(A1:A65535))))
Excel 2007 또는 2010을 사용하는 경우 마지막 행 번호는 65536이 아니라 1048576이므로 위의 내용을 적절히 조정하십시오.
데이터 중간에 빈 셀이 없으면 더 간단한 공식을 사용합니다.=INDEX(A:A,COUNTA(A:A)).
배열 공식이 없는 대안 솔루션은 배열 공식이 없는 (힌트 투 a) 솔루션보다 더 강력할 수 있습니다.
=INDEX(A:A,INDEX(MAX(($A:$A<>"")*(ROW(A:A))),0))
이 답변을 예로 들 수 있습니다.이 문제를 푸는 데 도움을 준 브래드와 배리 우디니에게 찬사를 보냅니다.
비배열 공식을 선호하는 이유는 다음과 같습니다.
공식 Microsoft 페이지("어레이 수식 사용의 단점" 참조).
배열 공식은 마법처럼 보일 수 있지만 다음과 같은 단점도 있습니다.- Ctrl+Shift+Enter를 누르는 것을 잊어버릴 수도 있습니다.배열 수식을 입력하거나 편집할 때마다 이 키 조합을 눌러야 합니다.
- 다른 사용자가 공식을 이해하지 못할 수 있습니다.배열 수식은 비교적 문서화되어 있지 않으므로 다른 사용자가 워크북을 수정해야 하는 경우 배열 수식을 사용하지 않거나 사용자가 배열 수식을 변경하는 방법을 이해해야 합니다.
- 컴퓨터의 처리 속도와 메모리에 따라 큰 배열 공식은 계산 속도를 늦출 수 있습니다.
배열 공식 이단입니다.
열(A)에서 검색할 경우 다음을 사용합니다.
=INDIRECT("A" & SUMPRODUCT(MAX((A:A<>"")*(ROW(A:A)))))
범위가 A1인 경우:A10 사용 가능:
=INDIRECT("A" & SUMPRODUCT(MAX(($A$1:$A10<>"")*(ROW($A$1:$A10)))))
다음 공식에서:
SUMPRODUCT(MAX(($A$1:$A10<>"")*(ROW($A$1:$A10))))
마지막 빈 행 번호를 반환하고, 간접 행 번호는 셀 값을 반환합니다.
=INDEX(A:A, COUNTA(A:A), 1)여기서 가져온
=MATCH("*";A1:A10;-1)
=MATCH(0;A1:A10;-1)
비휘발성 버전을 모두 시도해 보았지만 위에 제시된 버전은 하나도 작동하지 않았습니다.excel 2003/2007 업데이트.확실히 이것은 엑셀 2003에서 할 수 있습니다.배열이나 표준 공식이 아닙니다.공백, 0 또는 #value 오류가 발생합니다.그래서 저는 휘발성이 강한 방법에 의지합니다.효과가 있었습니다.
= DNV(2,1/(T4:T369<>")), T4:T369)
@줄리안 크로네.." 대신 ";"를 사용하면 작동하지 않습니다!MS 엑셀이 아닌 리브레오피스를 사용하시는 것 같은데요?룩업은 너무 짜증나게 변덕스러워서 최후의 수단으로만 사용합니다.
마이크로소프트 오피스 2013용
비어 있지 않은 행의 "마지막 하나":
=OFFSET(Sheet5!$C$1,COUNTA(Sheet5!$C:$C)-2,0)
비어 있지 않은 "마지막" 행:
=OFFSET(Sheet5!$C$1,COUNTA(Sheet5!$C:$C)-1,0)
이 코드를 VBA 모듈에 넣습니다.저장. 함수에서 사용자 정의된 이 함수를 찾습니다.
Function LastNonBlankCell(Range As Excel.Range) As Variant
Application.Volatile
LastNonBlankCell = Range.End(xlDown).Value
End Function
텍스트 데이터의 경우:
EQUIV("";A1:A10;-1)
수치 데이터의 경우:
EQUIV(0;A1:A10;-1)
선택한 범위(여기서 A1:A10)에서 비어 있지 않은 마지막 셀의 상대 인덱스를 제공합니다.
값을 가져오려면 문자 그대로 절대 셀 참조를 작성한 후 INDirect를 통해 값에 액세스합니다. 예를 들어, 다음과 같습니다.
INDIRECT("A" & (nb_line_where_your_data_start + EQUIV(...) - 1))
저도 같은 문제가 있었습니다.이 공식도 마찬가지로 잘 작동합니다.
=INDIRECT(CONCATENATE("$G$",(14+(COUNTA($G$14:$G$65535)-1))))
14는 카운트할 행의 첫 번째 행 번호입니다.
만성 발톱 이빨
HLOOKUP을 사용했습니다.
A1 날짜있음;있;A2:A8다른 시간에 포착된 예측이 있습니다. 최신 정보를 원합니다.
=Hlookup(a1,a1:a8,count(a2:a8)+1)
이는 항목 수에 따라 정의된 룩업 배열이 있는 표준 hlookup 공식을 사용합니다.
만약 여러분이 그 사이에 빈 세포가 없을 것이라는 것을 안다면, 가장 빠른 방법은 이것입니다.
=INDIRECT("O"&(COUNT(O:O,"<>""")))
비어 있지 않은 셀만 카운트하고 해당 셀을 참조합니다.
특정 범위에도 사용할 수 있습니다.
=INDIRECT("O"&(COUNT(O4:O34,"<>""")+3))
그러면 O4:O34 범위의 비어 있지 않은 마지막 셀이 반환됩니다.
이 공식은 2010년 Office에서 저와 함께 작동했습니다.
= NORSOK(2;1/(A1:A100<>");A1:A100)
A1: 첫 번째 셀 A100: 비교 시 마지막 셀 참조
W5ALIVE의 응답이 열의 마지막 데이터 행을 찾는 데 사용하는 응답에 가장 가깝다고 생각합니다.그러나 열 A의 데이터가 있는 마지막 행을 찾고 있다고 가정하면 다음을 사용하여 보다 일반적인 검색을 수행합니다.
=MAX(IFERROR(MATCH("*",A:A,-1),0),IFERROR(MATCH(9.99999999999999E+307,A:A,1),0))
첫 번째 MATCH는 마지막 텍스트 셀을 찾고 두 번째 MATCH는 마지막 숫자 셀을 찾습니다.첫 번째 MATCH가 모든 숫자 셀을 찾거나 두 번째 MATCH가 모든 텍스트 셀을 찾는다면 IFERROR 함수는 0을 반환합니다.
기본적으로 이것은 W5ALIVE의 혼합 텍스트 및 숫자 솔루션의 약간 변형입니다.
타이밍을 테스트할 때, 이것은 동등한 LOUNGE 변형보다 훨씬 더 빨랐습니다.
마지막 셀의 실제 값을 반환하려면 다음과 같이 참조하는 간접 셀을 사용하는 것이 좋습니다.
=INDIRECT("A"&MAX(IFERROR(MATCH("*",A:A,-1),0),IFERROR(MATCH(9.99999999999999E+307,A:A,1),0)))
sancho.s에서 제공하는 방법은 더 깨끗한 옵션일 수 있지만 행 번호를 찾는 부분을 다음과 같이 수정합니다.
=INDEX(MAX((A:A<>"")*(ROW(A:A))),1)
유일한 차이점은 ",1"이 첫 번째 값을 반환하는 반면, ",0"은 전체 값 배열을 반환한다는 것입니다(하나를 제외하고는 필요하지 않습니다).저는 여전히 셀을 인덱스 함수보다 더 선호하는 경향이 있습니다. 즉, 셀 값을 다음과 같이 반환합니다.
=INDIRECT("A"&INDEX(MAX((A:A<>"")*(ROW(A:A))),1))
좋은 실!
어레이를 사용하는 것이 두렵지 않다면 다음은 문제를 해결하는 매우 간단한 공식입니다.
=SUM(IF(A:A<>", 1,0)
배열 공식이므로 CTRL + SHIFT + ENTER를 눌러야 합니다.
INDEX는 배열에서 인덱스 위치별로 값을 반환하고 ROWS는 배열의 마지막 위치를 지정하는 데 사용됩니다.
=LET(array,A1:A10,INDEX(array,ROWS(array)))
INDEX의 파라미터 [columnn_num]을 0으로 설정할 때 여러 열에도 작동합니다.
=LET(array,A1:C10,INDEX(array,ROWS(array),0))
Microsoft 365:
=XLOOKUP(FALSE,ISBLANK(A:A),A:A,"",,-1)
나에게 맞는 간단한 것은:
=F7-INDEX(A:A,COUNT(A:A))
좋아요, 그래서 질문자와 같은 문제가 있었고, 두 개의 상위 답변을 시도했습니다.하지만 공식 오류만 발생합니다.공식이 작동하기 위해서는 ","를 ";"로 교환해야 했습니다.저는 XL 2007을 사용하고 있습니다.
예:
=LOOKUP(2;1/(A:A<>"");A:A)
또는
=INDEX(A:A;MAX((A:A<>"")*(ROW(A:A))))
버전 추적(숫자 시작 부분에 v 문자 추가)의 경우 Xcelsius(SAP Dashboards)에서 잘 작동하는 것으로 확인되었습니다.
="v"&MAX(A2:A500)
언급URL : https://stackoverflow.com/questions/5441885/last-non-empty-cell-in-a-column
'programing' 카테고리의 다른 글
| mongodb aggregate의 문자열 값으로 $projectObjectId는 어떻게 합니까? (0) | 2023.05.09 |
|---|---|
| NVM을 사용하여 기본 노드 버전을 설정하는 방법은 무엇입니까? (0) | 2023.05.09 |
| Angular 6 재료 매트 선택 변경 방법 제거 (0) | 2023.05.09 |
| 이해하는 시간.perf_counter() 및 time.process_time() (0) | 2023.05.09 |
| SQL Server 데이터베이스에서 ID 증가가 점프하고 있습니다. (0) | 2023.05.09 |