편집 : 이전, 불필요하게 복잡한, 수식 (참조 이 개정판 )는 여전히 유용 할 것입니다. 예를 들어 입력에 슬라이딩 스케일링 요소를 적용해야하는 경우,이 대답에서 새로운 단순하고 이해하기 쉬운 버전으로 바꿨습니다.
다음은 도우미 행 / 열 또는 추가 테이블이 필요없는 비 VBA 솔루션입니다.
배열에 다음 수식을 입력하십시오. B3
그것을 오른쪽으로 채우십시오 :
{=SUM(IFERROR(INDEX($2:$2,N(IF(1,COLUMN()-(COLUMN(INDEX(3:3,1):INDEX(3:3,$A$5))-1))))/$A$5,0))}
설명:
공식의 prettified 버전은 다음과 같습니다 :
{=
SUM(
IFERROR(
INDEX(
($2:$2),
N(IF(1,COLUMN()-(COLUMN(INDEX(3:3,1):INDEX(3:3,$A$5))-1)))
)/$A$5,
0
)
)}
수식은 n = 5 인 경우 첫 번째 인수의 두 번째 인수 INDEX()
다음과 효과적으로 동일합니다.
COLUMN()-{0,1,2,3,4}
기본적으로 가변 길이를 생성하여 작동합니다 (n에 기반하여 A5
내 예제에서는) 이전 n-1에 액세스하기위한 오프셋 배열과 현재 입력 값을 비교합니다.
수식을 밟아서 I3
위의 내용을 명확하게해야합니다.
(COLUMN(INDEX(3:3,1):INDEX(3:3,$A$5))-1)
→ {1,2,3,4,5}-1
→ {0,1,2,3,4}
COLUMN()-{0,1,2,3,4}
→ {9}-{0,1,2,3,4}
→ {9,8,7,6,5}
N(IF(1,{9,8,7,6,5}))
→ N({9,8,7,6,5})
→ {9,8,7,6,5}
(INDEX($2:$2,{9,8,7,6,5})/$A$5
→ {100000,0,0,0,7}/5
→ {20000,0,0,0,1.4}
SUM(IFERROR({20000,0,0,0,1.4},0))
→ 20001.40
INDEX($2:$2,N(IF(1, 표현 ))))
해킹이 필요하다. * Excel에서 배열을 반환하도록 강제로 표현
~의 두 번째 논의 이후 INDEX()
기본적으로 단일 값으로 평가됩니다. 그냥 사용하기 INDEX($2:$2, 표현 )
...에서 I3
~로 이어질 것입니다
INDEX($2:$2,COLUMN()-(COLUMN(INDEX(3:3,1):INDEX(3:3,$A$5))-1))
→ INDEX($2:$2,9-(COLUMN($A$3:$E$3)-1))
→ INDEX($2:$2,9-( 1 -1))
→ INDEX($2:$2,9)
→ 100000
단일 값을 리턴하는 표현식 내부에서, COLUMN( 멀티 셀 범위 )
범위의 첫 번째 셀 열을 반환합니다.
그만큼 IFERROR()
함수는 시트 왼쪽에 가까운 셀에 수식이있는 경우 행 머리글에 액세스하거나 열 왼쪽에있는 셀에 액세스하려고 할 때 필요합니다. A
.
노트:
- prettified 수식 실제로 입력 한 경우 작동합니다.
- 대괄호
($2:$2)
prettified 버전에서 강제로 필요합니다 $2:$2
그것의 자신의 선에 남아 있기 위하여.
* 해킹이 왜 작동하는지에 대한 설명은 내가 먼저 스스로 알아낼 때까지 기다려야 할 것이다 ;-)