배열의 각 행에서 비어 있지 않은 가장 오른쪽 셀의 값을 표시해야 합니다. Excel에서 이 작업을 어떻게 수행할 수 있습니까?
이 예제 테이블에서 [Current] 열에는 원하는 결과가 있습니다.
+---------+----------+---------+----------+
| 2016 | 2017 | 2018 | Current |
+---------+----------+---------+----------+
| 700 | | 200 | 200 |
| | | | |
| | 450 | | 450 |
| | | 2,700 | 2,700 |
| | | | |
| 42,350 | 71,500 | | 71,500 |
| 2,660 | | | 2,660 |
| | 1,100 | | 1,100 |
| | | | |
| 470 | | | 470 |
+---------+----------+---------+----------+
테마의 변형은 가장 왼쪽, 맨 위, 맨 아래 값입니다. 또는 그보다 큰 값N등 버전이 해당되는 경우 Office 2016의 Desktop Excel.
답변1
- 이 수식을 입력하고
E2
아래로 채우세요.
=LOOKUP(2,1/(A2:C2<>""),A2:C2)
작동 방식:
- 수식은 조회 값이
2
조회 벡터에 표시되는 값보다 의도적으로 크다는 것을 인식합니다. - 표현식은 값
A2:C2<>""
의 배열을 반환합니다 .True
False
1
그런 다음 이 배열로 나누어 1 또는 0으로 나누는 오류(#DIV/0!): {1,0,1,...}로 구성된 새 배열을 만듭니다.- 이 배열은 조회 벡터입니다.
- 수식에서 조회 값을 찾을 수 없으면
Lookup
다음으로 가장 작은 값과 일치합니다. - 이 경우 조회 값은 이지만
2
조회 배열에서 가장 큰 값은 이므로 조회는 배열의1
마지막 값과 일치합니다 .1
- LOOKUP은 동일한 위치의 값인 Result Vector에 해당 값을 반환합니다.
:수정됨:
Google 시트의 경우 다음 공식을 사용합니다.
=(IFERROR(LOOKUP( 2, 1 / ( A2:C2 <> "" ), A2:C2 ),""))
마무리하세요Ctrl+Shift+Enter, 수식은 다음과 같습니다.
=ArrayFormula(IFERROR(LOOKUP( 2, 1 / ( A2:C2 <> "" ), A2:C2 ),""))
답변2
이 문제에 대한 해결책은 이미 여러 가지가 있지만 제가 선호하는 해결책은 다음과 같습니다. 저에게는 이것이 자연스러운 사고에 가장 가깝습니다.
=INDEX(A2:C2,MAX(IF(A2:C2="","",COLUMN(A2:C2))))
- 배열 수식이므로 입력 후 CTRL+ SHIFT+를 눌러주세요.ENTER
작동 방식:
IF(A2:C2="","",COLUMN(A2:C2))
- 행의 각 셀에 대해 셀이 비어 있으면 빈 문자열을 반환하고 그렇지 않으면 열 번호를 반환합니다.MAX( ... )
- 반환된 가장 높은 열 번호를 선택합니다.=INDEX(A2:C2, ... )
- 가장 높은 열 번호를 기준으로 행에서 셀을 선택합니다.
경고: 범위가 첫 번째 열에서 시작하는 경우에만 올바르게 작동합니다. 그렇지 않으면 이동을 보상해야 합니다(예: 열 C에서 시작하는 범위의 경우).
=INDEX(C2:X2,MAX(IF(C2:X2="","",COLUMN(C2:X2)))-2)
답변3
테이블이 C2:F12에 배치되어 있고 머리글 행이 행 2이고 요약 열이 F라고 가정합니다. 다음 수식을 F3에 배치하고 복사하세요.
=IFERROR(INDEX(3:3,AGGREGATE(14,6,column($C3:$E3)/($C3:$E3<>""),1)),"")
메모:
AGGREGATE는 수식 선택 14와 15를 사용하여 배열 작업을 수행합니다. 결과적으로 AGGREGATE 함수 내에서 전체 열/행 참조를 사용하지 마십시오. 시스템이 정체되거나 수행될 계산 횟수와 충돌할 수 있습니다. 배열 유형 함수 외부에서 전체 열 참조를 사용하는 것은 괜찮습니다. INDEX에는 3:3이 사용됩니다.
새 열을 삽입할 때 F열을 선택하고 삽입이 수행되면 C3:F3이 새 범위가 되도록 F의 수식을 업데이트해야 합니다. E 열을 선택하고 새 열을 삽입하면 범위가 자동으로 업데이트되지만 이제 데이터는 잘못된 열에 있습니다. F열을 비워두고 대신 G열에 수식을 배치하고 AGGREGATE 내의 범위로 C3:F3을 사용한 경우 나중에 삽입을 위해 F열을 선택할 수 있으며 수식이 업데이트되어 F에 새 데이터를 입력할 수 있습니다. . 프로세스를 반복하려면 다음 해에 선택할 수 있도록 오른쪽에 빈 열이 있어야 합니다.
답변4
우아하지 않고 더 잔인하지만 쉽게 이해할 수 있는 또 다른 접근 방식은 이제 TEXTJOIN()을 사용하는 것입니다.
첫 번째 행에 A2:C2를 사용하여 다음을 D2에 입력한 다음 복사하여 붙여넣습니다. 아니면 채우기(Fill) 또는... 아이디어를 얻습니다.
을 위한텍스트 조인 문자열아래에서는 TEXTJOIN() 함수를 사용하여 검사하려는 셀의 전체 범위를 연결합니다. 문자열을 줄이려면 공백을 생략하려면 "TRUE"를 사용하고, 구분 기호로는 현실적으로 데이터에 절대 표시되지 않는 문자를 사용하세요. 아래에서는 "Ŧ"를 사용합니다(그리고 마지막 문자를 "Ų"으로 대체하는 문자로). TEXTJOIN() 및 그 친척에서 자주 사용하는 것과 같은 쉼표를 사용하면 문제가 발생할 수 있습니다.
=RIGHT( Textjoin string,
LEN( Textjoin string ) -
FIND( "Ų", SUBSTITUTE( Textjoin string, "Ŧ", "Ų",
LEN( Textjoin string **with** delimiter ) - LEN( Textjoin string **without** delimiter )
)))
이해하기가 더 쉽습니다. SUBSTITUTE()는 다음에서 시작하여 작업을 수행할 수 있습니다.사례 #그러면 구분 기호의 마지막 사용을 찾을 수 있습니다.구분 기호가 있는 텍스트 조인 문자열. 마지막 줄에서는 구분 기호가 있거나 없는 Textjoin 문자열의 LEN()을 찾고 빼기를 통해 차이를 찾습니다. 이는 구분 기호의 수이므로사례 #당신이 필요합니다.
마지막 줄 다음에서 해당 인스턴스를 다른 문자로 대체한 다음 FIND()를 사용하여 strng에서 해당 위치를 가져옵니다.
두 번째 줄에서는 문자열의 전체 LEN()에서 해당 위치를 빼서 뒤에 오는 문자 수를 확인합니다. 이는 사용자가 만든 문자열의 오른쪽에서 몇 개의 문자를 제거해야 하는지 알려줍니다.
첫 번째 줄은 바로 그 일을 하며, 범위에 있던 마지막 셀의 내용을 그대로 남깁니다.
Excel에서 사용하는 문자열 길이는 함수에 따라 다릅니다. 일부는 6~7,000 범위이고 일부는 32,000에 가깝습니다. 이를 염두에 두고("TRUE"를 지정하는 이유) A2:C2 대신 거대한 범위를 수행할 수 있습니다.
그러면 셀이 아닌 결합된 문자열로 작업하게 됩니다.
- 셀 주소 등을 찾을 필요가 없습니다.
- 실제로 결합된 "하위" 범위로 구성된 범위와 실제로 분리된 셀로 구성된 범위에서 사용할 수 있습니다. 불연속적인 범위는 당신의 친구이자 동맹입니다.
수식 내에서 Excel이 평가하는 조각 내부에 데이터가 존재하는 방식 때문에 청크를 명명된 범위로 나누면 문제가 발생할 수도 있고 그렇지 않을 수도 있습니다. 수식을 평가하는 Excel에서 생성 및 사용되는 중간 결과는 최종 결과로 명명된 범위가 제시되고 때로는 나중에 쉽게 사용할 수 있도록 공식의 논리를 배치하기 위해 조각에 명명된 범위를 사용할 수 없는 경우가 있습니다. 그러나 위의 내용에는 해당 문제가 나타나지 않으므로 TEXTJOIN과 같은 명명된 범위를 만들고 나머지는 기본적으로 입력하여 셀을 클릭하는 사람이 논리를 볼 수 있도록 할 수 있습니다. 또는 "InstanceNumber"(명명된 범위)와 같은 논리적 항목으로 조각을 나누어 훨씬 더 쉽게 읽을 수 있도록 합니다. 이를 생성한 다음 모두 명명된 범위에 덤프합니다. 아니면 명명된 범위에 전혀 신경 쓰지 마세요.
내가 말했듯이 우아하지 않습니다. 일부 솔루션보다 길지만 일부 솔루션처럼 "잔인"하지는 않습니다. 도우미 열이 없거나 사람들이 자주 사용할 수 없는 기타 항목이 없습니다. 아니면 그렇지 않습니다. {array} 수식이 없습니다.
(그리고 필요한 경우 불연속 범위를 사용할 수 있습니다.) 이 접근 방식은 보고서 엔진 PDF의 텍스트 및 데이터 더미를 가져온 다음 Excel로 추출하지만 각 관련 세트의 셀에 다르게 청크할 수 있습니다(따라서 클라이언트 10명에 대한 정보). , 각각은 10열 x 13행 블록으로 설정되지만 하나의 주소는 셀 4,6에 있고 다른 주소는 셀 3,8에 있지만 동일한 흐름을 따르며 가져올 때 다른 셀을 채웁니다. 단일 문자열을 사용하면 공식적으로 부품을 찾을 수 있습니다. 어쨌든 종종. 또는 매크로나 배열이 아닌 함수를 사용하거나 블록의 각 셀에 대해 하나의 도우미 셀을 사용하여 셀 블록을 가져와 그 안에 데이터 비트가 나타나는지 확인하세요.