일부 함수를 사용하여 범위 / 배열을 변환 / 매핑하는 방법 =E2/SUM($E$2:$E$11)있습니다. 열 E없이 어떻게합니까? 첫 번째 본능은 람다

나는 엑셀 초보자이므로 이미 이에 대한 답변이있을 수 있으며 올바른 용어를 알지 못했습니다. 데이터 집합을 변환 한 다음 중간 열을 사용하지 않고 다른 수식에서 사용하려고합니다.

현재 A 열에 10 개의 자산이 있고 B 열에 일부 점수가있는 스프레드 시트가 있습니다. 점수를 기준으로 각 자산에 할당 할 포트폴리오의 백분율을 계산하려고하지만 더 이상 자산을 가질 수 없도록 제한하고 싶습니다 포트폴리오의 30 % 이상.

점수 프라임에 다른 열을 사용하지 않고이 모자를 부과하는 방법을 알아내는 데 어려움을 겪고 있습니다.

열 B의 점수 데이터를 감안할 때 각 행에 수식이있는 열 D, “조정되지 않은 포트폴리오 백분율”이 있습니다. =B3/SUM($B$2:$B$11)

그런 다음 열 B의 값이 있지만 열이 30 %로 설정된 열 E가 있습니다 =MIN(D2, 0.3).

마지막으로 F 열 “조정 된 포트폴리오 백분율”이 =E2/SUM($E$2:$E$11)있습니다.

열 E없이 어떻게합니까?

첫 번째 본능은 람다 스타일을 사용하기 전에 열에 변환을 적용하는 구문이있을 수 있다는 것입니다. 즉, 의사 코드에서 조정 된 포트폴리오 백분율 열을 계산할 수 있어야합니다.

let values = min(score / sum(scores), .3) / sum(adjusted) for score in scores
             where adjusted = min(score / sum(scores), .3) for score in scores

람다 구문의 일종으로 수식을 작성할 수 있다면 스토킹 할 수는 있지만 Excel 로이 작업을 수행하는 방법에 대한 실마리는 없습니다. 예를 들어 B 열에 점수가 있으면 두 번째 행은

=MIN(B2/SUM($B:$B), .3)/SUM(x -> MIN(x/SUM($B:$B), .3), $B:$B).

반복되는 논리를 로컬 함수로 분해하는 것은 멋지지만 프로그래밍 언어가 아닌 무언가를 묻는 것이 좋습니다. 아마도이 데이터 변환은 프로그래밍 언어가 아닌 것을 요구하기에 많은 것일까 요?



답변

그것을 할 수있는 방법이 있습니다.

1 또는 2 값이 30 %로 설정되면 다른 값은 70 % 또는 40 % 등으로 추가되도록 배율을 조정해야합니다.이 공식은 다음을 수행합니다.

 =IF(C2>=0.3,0.3,(C2/(SUMIF(C$2:C$11,"<0.3")))*(1-0.3*(COUNTIF(C$2:C$11,">=.3"))))

존, 엑셀 구문이 어려울 수 있으므로이 과정을 안내해 드리겠습니다. IF () 수식은 C 열의 %가 30 % 이상인지에 따라 두 값 중 하나를 채 웁니다. 이 경우 수식은 0.3을 반환합니다. 그렇지 않은 경우 나머지 수식에서 계산을 반환합니다.

첫 번째 부분 인 C2 / SUMIF ()는 C 열의 값이 <30 % 인 값을 나타내는 %를 제공합니다. 이 백분율의 합은 100 %이므로 두 번째 부분 인 1-0.3 * COUNTIF ()를 곱합니다. 1로 시작하고 각 값> = 30 %에 대해 .3을 뺍니다. 따라서 첫 번째 부분의 값은 0.7 또는 0.4 등의 배율로 조정됩니다.

재고가 30 %보다 많거나 30 %를 초과 할 수있는 경우 오류 검사가 순서대로되어있을 수 있습니다. 이것이 도움이 되길 바랍니다. 나는 당신의 람다 표현을 보는 것을 즐겼습니다.


답변

방법론을 약간 다시 생각해야 할 수도 있습니다. 치다:

B 열 이 원시 점수 인 경우, C 열은 B 열의 정규화 된 버전이고 , D 열은 C 열의 잘린 버전이며 , E 열은 D 열의 정규화 된 버전입니다 .

문제는 Ophelia와 같은 항목입니다. 정규화 된 값이 30 %를 초과합니다. 제한되고 다시 정규화 될 때 해당 값은 여전히 30 %를 초과합니다.