
수년 동안의 월별 개수를 나타내는 셀 범위와 주요 요약 열에 대한 다음과 같은 인위적인 예를 고려하십시오.
.|A |B |C |D |E |F |G |H |I |J |K |...
-+-----+-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
1| |Most/3M|Jan19|Feb19|Mar19|Apr19|May19|Jun19|Jul19|Aug19|Sep19|...
2|Foo | 14| 1| 3| 7| 3| 4| 2| 1| 3| 1|...
3|Bar | 13| 3| 4| 1| 2| 2| 2| 9| 1| 1|...
4|Baz | 18| 2| 3| 8| 7| 3| 2| 3| 7| 1|...
의 해당 요약 열은 B:B
3개월 기간 중 가장 높은 수를 나타냅니다.순진하게사용:
=MAX(SUM($C2:$E2),SUM($D2:$F2),SUM($E2:$G2),
SUM($F2:$H2),SUM($G2:$I2),SUM($H2:$J2),
SUM($I2:$K2))
...그리고 나서 채워지지만 유지해야 하는 것은 매우 짜증나는 일입니다. 값이 가장 오른쪽 부분(예: , )에 추가됨에 따라 L:L
수식 은 및 등 M:M
으로 업데이트되어야 합니다.SUM($J2:$L2)
SUM($K2:$M2)
한 가지 대안은 다음과 같습니다.
={LARGE(($C2:$I2 + $D2:$J2 + $E2:$K2), 1)}
...그렇지 않아상당히너무 안타깝습니다. , to 및 to :$I2
로 변경하는 것은 3개월 동안 합리적이며 다음 과 같이 끔찍한 사용으로 파생될 수 있습니다.:$J2
:$J2
:$K2
:$K2
:$L2
INDIRECT
={LARGE(INDIRECT("R[0]C3:R[0]C"&COUNTA(OFFSET($C2,0,0,1,2000)),FALSE)+
INDIRECT("R[0]C4:R[0]C"&COUNTA(OFFSET($C2,0,0,1,2000))+1,FALSE)+
INDIRECT("R[0]C5:R[0]C"&COUNTA(OFFSET($C2,0,0,1,2000))+2,FALSE), 1)}
그러나 이는 창 크기가 증가함에 따라(즉, 더 많은 +
절을 추가해야 함) 및/또는 창 크기를 구성할 수 있도록 의도된 경우(예: 사용자 정의 숫자를 사용하여 B1
실제로는 value 에 불과함) 고통스럽습니다. 3
형식 "Most/"0"M"
)
나는 아마도 다음 중 하나를 생각했습니다.
={MAX(SUM(OFFSET($C2:$I2,0,0,1,3)))}
={LARGE(SUM(OFFSET($C2:$I2,0,0,1,3)), 1)}
...여기서는 에 주어진 범위와 그룹 크기만 업데이트하면 됩니다 . 예를 들어 다음 과 같은 OFFSET
또 다른 끔찍한 을 사용하여 이를 동적으로 파생시키려는 의도로 :INDIRECT
=LARGE(SUM(OFFSET(INDIRECT("R[0]C3:R[0]C"&
(COUNTA(OFFSET($C2,0,0,1,2000))+COLUMN($C:$C)-B$1),
FALSE),
0,0,1,B$1)),
1)
사용할 때수식 평가위의 괴물을 통과하기 위해정상양식에 따르면 실제로는 다음과 같이 해결됩니다.
=LARGE(SUM(OFFSET(INDIRECT("R[0]C3:R[0]C"&(9+3-B$1),FALSE),0,0,1,3)),1)
=LARGE(SUM(OFFSET(INDIRECT("R[0]C3:R[0]C"&(12-3),FALSE),0,0,1,3)),1)
=LARGE(SUM(OFFSET(INDIRECT("R[0]C3:R[0]C9",FALSE),0,0,1,3)),1)
=LARGE(SUM(OFFSET($C$2:$I$2,0,0,1,3)),1)
=LARGE(SUM($C$2:$E$2),1)
=LARGE(11,1)
=11
...그래서 주어진 범위는 OFFSET
배열로 확장되지 않고 대신 해당 범위의 왼쪽 상단 셀이 직접 사용되는 것으로 보입니다 OFFSET
.
~ 안에정렬형식(예 CTRLENTER: ) 대신 결국 다음과 같이 해결됩니다.
=LARGE(SUM(OFFSET(INDIRECT("R[0]C3:R[0]C"&(9+{3}-B$1),FALSE),0,0,1,B$1)),1)
=LARGE(SUM(OFFSET(INDIRECT("R[0]C3:R[0]C"&({12}-3),FALSE),0,0,1,B$1)),1)
=LARGE(SUM(OFFSET(INDIRECT({"R[0]C3:R[0]C9"},FALSE),0,0,1,B$1)),1)
=LARGE(SUM(OFFSET({#VALUE!},0,0,1,B$1)),1)
=LARGE(SUM(OFFSET({#VALUE!},0,0,1,3)),1)
=LARGE(SUM({#VALUE!}),1)
=LARGE(1,1)
=1
...그래서 배열 확장이 너무 일찍(즉, 의 결과로 COLUMNS($C:$C)
) 발생하여 나중에 INDIRECT
호출이 중단되는 것 같습니다.
( LARGE
와 결과는 모두 동일합니다 . 설명서에 배열이 필요하고 단일 값의 무제한 매개변수 목록이 필요하다고 나와 있기 때문에 MAX
사용했습니다 .)LARGE
MAX
VBA를 사용하지 않거나 시트 레이아웃을 변경하지 않는 환경 설정이 제공됩니다.
- 어떤 트릭이라도힘
SUM(OFFSET)
에서 사용할 수 있는 배열을 방출 하도록 올바른 위치에 배열 확장이 있습니까LARGE
? - 데이터가 시트 오른쪽에 추가될 때 공식을 최소한으로 수정해야 하는 대체 접근 방식이 있습니까?
(PS. 저는 O365/Insider가 아닌 Excel 2019를 사용하고 있기 때문에 아직 동적 배열/물건이 없습니다. SEQUENCE
이는 관련성이 있을 것 같습니다. 이에 의존하는 답변은 후손에게 유용할 수 있지만 그렇지 않을 것입니다. 당장 필요한 것은 해결하지 못해요...)
답변1
Helper Data와 SUM Large 3 Quarter 값으로 구성된 연중 가장 높은 3분기 SUM을 구하는 다음 방법을 제안하고 싶습니다.
작동 방식:
- 관련 월의 날짜를 입력하고
Row 1
셀 형식을 적용합니다mmm-yy
. - Rnage에 Quarter의 이름을 삽입합니다
T9:T12
. Cell 의 수식을
U9
작성하세요.=IF(ROW(A1)>=5,"",(SUMPRODUCT((ROUNDUP(MONTH(T$1:AE$1)/3,0)=ROW(A1))*(T$2:AE$2))))
주의
ROUNDUP(MONTH(T$1:AE$1)/3,0)=Row(A1)
반환1
하고 는 월이 속한 때입니다0s
.1
1분기, &0
와 같은 다른 분기에 대해서는 그렇지 않은 경우 등이 있습니다 .2
3
4
SUMPRODUCT
, 눈꺼풀을 치지 않고 이러한 모든 범위의 데이터를 처리합니다.=ROW(A1))
1을 반환Q1
하고 down 을 나타냅니다2, 3 & 4
.=IF(ROW(A1)>=5,""
Blank
수식이 4 이후의 분기 값을 가져올 수 없는 경우를 반환합니다 .
각 분기에 대한 데이터를 얻은 후 이제 셀에 수식을 입력하여 U14
SUM 3의 가장 큰 값을 입력합니다.
{=SUM(LARGE(U$9:U$12,{1,2,3}))}
주의
- 배열(CSE) 형식의 수식을 더 잘 사용하므로 다음으로 마무리해야 합니다.Ctrl+Shift+Enter, 그렇지 않으면 배열이 아닌 수식으로도 작동합니다.
필요에 따라 수식의 셀 참조를 조정합니다.