Добрый день! Ситуация следующая: есть несколько ячеек сумма значений которых должна равняться 100. Нужно чтобы при изменении значения одной ячейки были изменены значения и в других ячейках. Желательно чтобы значения в других ячейках были пересчитаны равно пропорционально (или если это возможно как запасной вариант с отдельным назначением пропорций изменения). К сожалению на форуме подобной темы не нашёл, но если она есть просьба тапком не бить) С уважением, marokanin
Добрый день! Ситуация следующая: есть несколько ячеек сумма значений которых должна равняться 100. Нужно чтобы при изменении значения одной ячейки были изменены значения и в других ячейках. Желательно чтобы значения в других ячейках были пересчитаны равно пропорционально (или если это возможно как запасной вариант с отдельным назначением пропорций изменения). К сожалению на форуме подобной темы не нашёл, но если она есть просьба тапком не бить) С уважением, marokaninmarokanin
Если честно, то в предложенных ссылках не то, что я ищу. есть 7 ячеек, сумма всегда должна быть равна 100. Хотелось бы узнать возможно ли сделать так чтобы при изменении любой из ячеек - в большую или меньшую сторону, значения остальных ячеек были бы пропорционально пересчитаны. Не хочу Вас обидеть, но в предложенных Вами ссылках решаются другие задачи. [moder]Показывайте в файле как есть и как должно быть.[/moder]
Если честно, то в предложенных ссылках не то, что я ищу. есть 7 ячеек, сумма всегда должна быть равна 100. Хотелось бы узнать возможно ли сделать так чтобы при изменении любой из ячеек - в большую или меньшую сторону, значения остальных ячеек были бы пропорционально пересчитаны. Не хочу Вас обидеть, но в предложенных Вами ссылках решаются другие задачи. [moder]Показывайте в файле как есть и как должно быть.[/moder]marokanin
Сообщение отредактировал Manyasha - Среда, 17.02.2016, 17:01
marokanin, если решение макросом подходит, то можно так [vba]
Код
Dim curVal Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("f3:f9")) Is Nothing Then diff = Target.Value - curVal Application.EnableEvents = False For Each cell In Range("f3:f9") If cell.Address <> Target.Address Then cell.Value = cell.Value - diff / 6 Next cell Application.EnableEvents = True End If End Sub
[/vba][vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("f3:f9")) Is Nothing Then curVal = Target.Value End If End Sub
[/vba]
marokanin, если решение макросом подходит, то можно так [vba]
Код
Dim curVal Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("f3:f9")) Is Nothing Then diff = Target.Value - curVal Application.EnableEvents = False For Each cell In Range("f3:f9") If cell.Address <> Target.Address Then cell.Value = cell.Value - diff / 6 Next cell Application.EnableEvents = True End If End Sub
[/vba][vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("f3:f9")) Is Nothing Then curVal = Target.Value End If End Sub
Manyasha, Большое спасибо за макрос который идеально подходит!
Если позволите, задам вопрос по макросу. Если количество полей будет изменяться, соответственно в данном макросе будет необходимо изменять параметры Range и diff / @number@?
+ А как сделать так, чтобы числа не уходили в отрицательные значения?
Manyasha, Большое спасибо за макрос который идеально подходит!
Если позволите, задам вопрос по макросу. Если количество полей будет изменяться, соответственно в данном макросе будет необходимо изменять параметры Range и diff / @number@?
+ А как сделать так, чтобы числа не уходили в отрицательные значения?marokanin
Сообщение отредактировал marokanin - Четверг, 18.02.2016, 12:04