| imho.ws |
![]() |
|
|
|
# 1 |
|
Junior Member
Регистрация: 08.01.2003
Адрес: Томск
Сообщения: 111
![]() |
Скорректировать значения в Exel
Такая вот проблема. Есть столбец данных, сумма которых равна какому то числу, нужно сделать так чтобы Exel подправил данные в этом столбце так чтобы сумма получилась скажем 0.
Пробовал подбором параметра но меняется толлько одна ячейка, а необходимо плавно скорректировать весь столбец. Вот такая вот проблема, если кто поможет буду ОЧЕНЬ благодарен.
__________________
Если вы - настоящий мужчина, сделайте так ,чтобы Фортуна боялась повернуться к вам задом. |
|
|
|
|
# 2 |
|
Квази-Мод
Регистрация: 11.11.2002
Адрес: Circus
Пол: Male
Сообщения: 2 828
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
То есть разницу в сумме надо равномерно распределить между ячейками или как? Какова логика? Допустим у тебя 10 клеток, со значениями, соответственно 9 единиц и одна двойка с минусом. Сумма = 7. Теперь ты хочешь привести сумму к "скажем 0". Каким образом?
__________________
Подробнее об этом читайте на ЗЕРКАЛЕ
|
|
|
|
|
# 3 |
|
Junior Member
Регистрация: 08.01.2003
Адрес: Томск
Сообщения: 111
![]() |
Вот например у меня столбец:
601,4974 -1075,5996 -759,8748 1291,5564 290,4434 -1150,588 -1079,0838 -1401,06 -1036,5246 2310,1554 2746,639 -603,0928 Его сумма равна 134,468. Нужно изменить значения в столбце так чтобы сумма была равна 0. Причем изменить значения не в !!!одной ячейке!!! а во всем столбце, какие-то числа уменьшить какие-то увеличить.
__________________
Если вы - настоящий мужчина, сделайте так ,чтобы Фортуна боялась повернуться к вам задом. |
|
|
|
|
# 4 |
|
Junior Member
Регистрация: 16.10.2002
Адрес: Россия-матушка
Пол: Male
Сообщения: 96
![]() ![]() |
Вот текст программы:
Код:
Sub DoAjustRngSum()
LI_AdjustRangeSum ActiveSheet.Range("A2:A13")
End Sub
Sub LI_AdjustRangeSum(rng As Range)
Dim S As Double, S_a As Double
Dim curc As Range
S = 0
S_a = 0
For Each curc In rng
S = S + curc.Value
S_a = S_a + Abs(curc.Value)
Next
For Each curc In rng
curc.Value = curc.Value - S * Abs(curc.Value) / S_a
Next
End Sub
![]() Например, твой столбец преобразуется этой функцией в 595,8594868 -1085,681335 -766,9972051 1279,450474 287,7210363 -1161,372611 -1089,198193 -1414,192317 -1046,24008 2288,502014 2720,894396 -608,7456671 |
|
|
|
|
# 5 |
|
Junior Member
Регистрация: 08.01.2003
Адрес: Томск
Сообщения: 111
![]() |
LightImage
Спасибо тебе огромное !!! Ну просто жизнь спас Но мне все же интересно, встроенными функциями это ни как сделать нельзя ???
__________________
Если вы - настоящий мужчина, сделайте так ,чтобы Фортуна боялась повернуться к вам задом. |
|
|
|
|
# 6 |
|
Full Member
Регистрация: 15.12.2003
Адрес: Israel
Пол: Male
Сообщения: 501
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Честно сказать, не понятно, нужно ли тебе сохронять какуе то закономерность? Может можно просто от каждой клетке отнять средние орефметическое?
Использовать дополнительный столбик (если допустимо) и пользоватся фун:sum()/num; Если не подходит, попробуй сформулировать вопрос поточней. |
|
|
|
|
# 7 | |
|
Квази-Мод
Регистрация: 11.11.2002
Адрес: Circus
Пол: Male
Сообщения: 2 828
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
__________________
Подробнее об этом читайте на ЗЕРКАЛЕ
|
|
|
|
|
|
# 8 |
|
Junior Member
Регистрация: 16.10.2002
Адрес: Россия-матушка
Пол: Male
Сообщения: 96
![]() ![]() |
MadPautina
Оказалось можно, просто скрипт для меня было быстрее написать =) Пусть твой столбец находится в ячейках B2:B13. Тогда в ячейку C1 вставляем такую формулу "=B2-ABS(B2)*СУММ($B$2:$B$13)/(СУММЕСЛИ($B$2:$B$13;">=0")-СУММЕСЛИ($B$2:$B$13;"<0"))" и заполняем ячейки C1:C13 этим значением |
|
|