두 열 중 하나에 일부 텍스트가 나타나는 가장 최근의 이전 레코드에서 값을 가져옵니다.

두 열 중 하나에 일부 텍스트가 나타나는 가장 최근의 이전 레코드에서 값을 가져옵니다.

나는 풀 리그 경기 결과에 대해 보관하는 스프레드시트의 값 및 요약 데이터 계산을 더욱 완전히 자동화하려고 합니다.

각 경기에 대한 많은 정보가 포함된 테이블이 있습니다. 관련 필드는 경기 날짜, 승자, 승자 시작 핸디캡, 승자 종료 핸디캡, 패자, 패자 시작 핸디캡, 패자 종료 핸디캡, 경기 시작 시간입니다.

핸디캡은 매 경기가 끝날 때와 다음 경기 전에 조정됩니다. 플레이어(승자 또는 패자일 수 있음)의 가장 최근 과거 기록을 찾고 해당 기록의 종료 핸디캡을 내가 지금 입력하는 시작 핸디캡(승자 또는 패자)에 복사하는 것은 고통스러운 일입니다.

나는 그가 승자 또는 패자였던 가장 최근 기록(하루에 두 번 플레이한 경우 가장 높은 날짜 및 시작 시간)을 찾은 다음 종료 핸디캡(해당 승자 또는 패자로부터)을 얻는 공식을 원합니다. ).

Teylyn의 제안에 따라 파일에 대한 Dropbox 링크가 있습니다. 관련 탭은 경기 결과입니다.https://www.dropbox.com/s/1j9c6zsxjd3q4dt/Sample%20for%20Excel%20Question%20on%20Superuser.xlsx?dl=0

테스트하기 위해 빈 열 L을 추가하고 결과를 K에 있는 것과 비교하여 작동하는지 확인했습니다. 이것이 바로 거기에 있는 이유입니다. Dropbox에 넣을 때 제거하는 것을 잊어버렸습니다.

답변1

문제 설명

워크시트의 열 E및 에 이름이 있습니다 X. 모든 행에 대해n, ≠ . Column 에는 Column 의 이름에 해당하는 숫자가 있고 Column 에는 Column 의 이름에 해당하는 숫자가 있습니다 . 첫 번째 행 이후의 모든 행(예: 행 42)에 대해 가능하면 이전 행에 대한 값을 가져오고 싶습니다.EnXnMEAGXK42AF42

  • "John"인 경우 E42"John"이 포함된 가장 최근 행을 찾습니다(열 E또는 에서 X). 해당 행에 전화하세요n. = "John" 인 경우 와 동일하게 설정합니다 . = "John" 인 경우 와 동일하게 설정합니다 .EnK42MnXnK42AGn
  • "Scott"인 경우 X42"Scott"이 포함된 가장 최근 행을 찾습니다(열 E또는 에서 X). 해당 행에 전화하세요n. = "Scott" 인 경우 와 동일하게 설정합니다 . = "Scott" 인 경우 와 동일하게 설정합니다 .EnAF42MnXnAF42AGn

                   

해결책

어느 정도 정신을 차리기 위해 도우미 열을 사용해 보겠습니다. 그리고 .ARAS(예제 파일에서와 같이) 데이터가 행 2에서 시작한다고 가정합니다.

=MAX(($E$2:$E2=$E3)*(100*ROW($E$2:$E2)+COLUMN($M:$M)), ($X$2:$X2=$E3)*(100*ROW($X$2:$X2)+COLUMN($AG:$AG)))

AR3( 건너 뛰기 ) AR2. Ctrl+ Shift+ 로 끝나서 Enter배열 수식으로 만듭니다. 마찬가지로 다음과 같이 설정합니다 AS3.

=MAX(($E$2:$E2=$X3)*(100*ROW($E$2:$E2)+COLUMN($M:$M)), ($X$2:$X2=$X3)*(100*ROW($X$2:$X2)+COLUMN($AG:$AG)))

배열 수식으로. (이는 AR3 의 두 항목이 $E3로 대체된 것을 제외 하고는 동일합니다 $X3.)

K3로 설정

=IF($AR3=0, "?", INDEX($A$1:$BG$999, INT($AR3/100), MOD($AR3,100)))

그리고AF3

=IF($AS3=0, "?", INDEX($A$1:$BG$999, INT($AS3/100), MOD($AS3,100)))

(배열 수식이 아님) 가 3 $AR3개로 대체된 점을 제외하면 이는 동일합니다 $AS3.

물론 아래로 드래그/채우기도 합니다.

도우미 열은 가장 최근에 발생한 이름을 찾습니다. — 의 가장 최근 이전 발생을 찾고 , 가장 최근의 이전 발생을 찾습니다. — 기본적으로 이전 행 전체에서 의 최대값을 찾습니다.ARnEnASnXn

(이전_값=this_value) * 열())

즉, 이름이 일치하는 가장 높은 행 번호입니다. 그런 다음 이름이 발견된 위치를 다음과 같이 인코딩합니다.

100*행() + 열(data_we_want_to_copy)

두 수식 모두 열과 을 모두 살펴보고 E해당 XM이나 AG셀의 인코딩된 좌표를 반환합니다. 그런 다음 KAF수식은 단순히 셀 주소를 디코딩하고 값을 검색합니다.

               

AR6"John"( )이 가장 최근에 행 2에 표시되었기 때문에 213도 마찬가지 입니다. 그리고 그는 (가 아닌 ) E6에 표시되었으므로 열 13(열 ) 의 값을 복사하려고 합니다 .E2X2M

관련 정보