1

Я новичок в Excel, так что, возможно, уже есть ответ на этот вопрос, и я просто не знал правильных терминов. Я пытаюсь преобразовать набор данных, а затем использовать его в другой формуле, без использования промежуточного столбца.

Сейчас у меня есть электронная таблица с 10 активами в столбце A и некоторым баллом в столбце B. Я хочу рассчитать процент портфеля, который я бы выделил каждому активу, исходя из его оценки, но с ограничением, чтобы ни один актив не мог иметь больше чем 30% портфеля.

У меня проблемы с выяснением того, как наложить эту кепку, не используя другой столбец для простого счета.

Учитывая данные оценки в столбце B, у меня есть столбец D "Процент нескорректированного портфеля", где каждая строка имеет формулу =B3/SUM($B$2:$B$11)

Затем у меня есть столбец E со значениями столбца B, но ограниченный 30%, =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 2-й ряд будет

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

Извлечь повторяющуюся логику в локальную функцию было бы круто, но, может быть, много чего можно спросить о чем-то, что не является языком программирования. Может быть, это преобразование данных очень много о чем-то, что не является языком программирования?

2 ответа2

2

Есть способ сделать это.

Если, скажем, 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"))))

Джон, синтаксис Excel может быть тупым, поэтому позвольте мне рассказать вам об этом. Формула IF() заполняет одно из двух значений в зависимости от того, больше или равен% в столбце C 30%. Если это так, формула возвращает 0,3. Если нет, он возвращает расчет в оставшейся части формулы.

Первая часть, C2/SUMIF(), дает%, который значение в столбце C представляет из значений, которые <30%. Эти проценты будут суммироваться до 100%, поэтому они умножаются на вторую часть, 1-0,3 * COUNTIF(). Он начинается с 1 и вычитает .3 для каждого значения> = 30%. Таким образом, значения из первой части масштабируются с коэффициентом 0,7 или 0,4 и т.д.

Если возможно иметь более 3 акций> 30%, возможно, нужна некоторая проверка ошибок. Надеюсь, это поможет, и мне понравилось видеть ваши лямбда-выражения.

1

Возможно, вам придется немного переосмыслить свою методологию. Рассматривать:

В котором столбец B - это необработанные оценки, столбец C - нормализованные версии столбца B, столбец D - обрезанные версии столбца C, а столбец E - нормализованная версия столбца D.

Проблема в том, как Офелия. Его нормализованное значение превышает 30%. Когда он ограничен, а затем повторно нормализован, его значение все еще превышает 30%.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .