Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Циклические ссылки и нестирающиеся формулы - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Циклические ссылки и нестирающиеся формулы (Формулы/Formulas)
Циклические ссылки и нестирающиеся формулы
kontrabasss Дата: Пятница, 23.01.2015, 18:51 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте. Все никак не могу решить, казалось бы, простую задачу.
Есть три столбца: Сумма, скидка и сумма со скидкой.
Сумма со скидкой равняется Сумма минус Скидка.
Скидка равняется Сумма минус Сумма со скидкой.
И т.д.
Получились цикличесские ссылки - поставил галочку напротив Включить интеративные вычисления.
Например если я ввожу данные, то все считается. Но, при этом стираются формулы при вводе данных. Т.е. если я захочу что-то после изменить, то уже не получится.
Как сделать такую формулу, чтобы расчет мог производиться из полученных любых двух значений и потом эти значения можно было бы потом корректировать.
Заранее всем спасибо!!!
К сообщению приложен файл: 9730875.xlsx (9.8 Kb)
 
Ответить
СообщениеЗдравствуйте. Все никак не могу решить, казалось бы, простую задачу.
Есть три столбца: Сумма, скидка и сумма со скидкой.
Сумма со скидкой равняется Сумма минус Скидка.
Скидка равняется Сумма минус Сумма со скидкой.
И т.д.
Получились цикличесские ссылки - поставил галочку напротив Включить интеративные вычисления.
Например если я ввожу данные, то все считается. Но, при этом стираются формулы при вводе данных. Т.е. если я захочу что-то после изменить, то уже не получится.
Как сделать такую формулу, чтобы расчет мог производиться из полученных любых двух значений и потом эти значения можно было бы потом корректировать.
Заранее всем спасибо!!!

Автор - kontrabasss
Дата добавления - 23.01.2015 в 18:51
AlexM Дата: Пятница, 23.01.2015, 19:17 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4505
Репутация: 1127 ±
Замечаний: 0% ±

Excel 2003
Знаю как с макросом
К сообщению приложен файл: 9730875_1.xls (28.5 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеЗнаю как с макросом

Автор - AlexM
Дата добавления - 23.01.2015 в 19:17
kontrabasss Дата: Пятница, 23.01.2015, 19:36 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
AlexM, спасибо.
Все верно и все работает.
Осталось только узнать что же это такое - Макросы...
 
Ответить
СообщениеAlexM, спасибо.
Все верно и все работает.
Осталось только узнать что же это такое - Макросы...

Автор - kontrabasss
Дата добавления - 23.01.2015 в 19:36
AlexM Дата: Пятница, 23.01.2015, 19:39 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4505
Репутация: 1127 ±
Замечаний: 0% ±

Excel 2003
Кликните по ярлычку листа правой кнопкой. В контекстном меню выбрать "Исходный текст"
Откроется редактор VBA. В модуле листа увидите макрос.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеКликните по ярлычку листа правой кнопкой. В контекстном меню выбрать "Исходный текст"
Откроется редактор VBA. В модуле листа увидите макрос.

Автор - AlexM
Дата добавления - 23.01.2015 в 19:39
kontrabasss Дата: Пятница, 23.01.2015, 19:59 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Круто. Я не очень силен в этом, но получилось просто скопировать и вставить в другом листе с другими ячейками. Буду пока пробовать так. Но, если вдруг есть какие варианты попроще - буду очень признателен.
Спасибо.
 
Ответить
СообщениеКруто. Я не очень силен в этом, но получилось просто скопировать и вставить в другом листе с другими ячейками. Буду пока пробовать так. Но, если вдруг есть какие варианты попроще - буду очень признателен.
Спасибо.

Автор - kontrabasss
Дата добавления - 23.01.2015 в 19:59
gling Дата: Пятница, 23.01.2015, 20:49 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2525
Репутация: 678 ±
Замечаний: 0% ±

2010
Здравствуйте.
Цитата
вдруг есть какие варианты попроще
Но проще некуда. Имхо.


ЯД-41001506838083
 
Ответить
СообщениеЗдравствуйте.
Цитата
вдруг есть какие варианты попроще
Но проще некуда. Имхо.

Автор - gling
Дата добавления - 23.01.2015 в 20:49
kontrabasss Дата: Пятница, 23.01.2015, 21:50 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Ну, проще для тех, кто хорошо знает Excel. Я вот только на уровне пользователя. Может подскажете, как создается такой алгоритм???
 
Ответить
СообщениеНу, проще для тех, кто хорошо знает Excel. Я вот только на уровне пользователя. Может подскажете, как создается такой алгоритм???

Автор - kontrabasss
Дата добавления - 23.01.2015 в 21:50
AlexM Дата: Пятница, 23.01.2015, 21:59 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4505
Репутация: 1127 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A2" Then Range("C2") = Target.Value - Range("B2")
If Target.Address(0, 0) = "B2" Then Range("C2") = Range("A2") - Target.Value
If Target.Address(0, 0) = "C2" Then Range("B2") = Range("A2") - Target.Value
End Sub
[/vba]Worksheet_Change это событие (изменение на листе), при котором автоматически запускается макрос.
Target.Address(0, 0) это адрес ячейки где событие произошло
Target.Value это измененное значение.
Далее делаем проверку (if) адреса ячейки, которую изменили. По результату проверки выбираем действие, что из чего вычитаем и куда заносим.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A2" Then Range("C2") = Target.Value - Range("B2")
If Target.Address(0, 0) = "B2" Then Range("C2") = Range("A2") - Target.Value
If Target.Address(0, 0) = "C2" Then Range("B2") = Range("A2") - Target.Value
End Sub
[/vba]Worksheet_Change это событие (изменение на листе), при котором автоматически запускается макрос.
Target.Address(0, 0) это адрес ячейки где событие произошло
Target.Value это измененное значение.
Далее делаем проверку (if) адреса ячейки, которую изменили. По результату проверки выбираем действие, что из чего вычитаем и куда заносим.

Автор - AlexM
Дата добавления - 23.01.2015 в 21:59
_Boroda_ Дата: Пятница, 23.01.2015, 22:09 | Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A2" Then Range("C2") = Target.Value - Range("B2")
If Target.Address(0, 0) = "B2" Then Range("C2") = Range("A2") - Target.Value
If Target.Address(0, 0) = "C2" Then Range("B2") = Range("A2") - Target.Value
End Sub

Алексей, так ты в бесконечный цикл провалишься


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A2" Then Range("C2") = Target.Value - Range("B2")
If Target.Address(0, 0) = "B2" Then Range("C2") = Range("A2") - Target.Value
If Target.Address(0, 0) = "C2" Then Range("B2") = Range("A2") - Target.Value
End Sub

Алексей, так ты в бесконечный цикл провалишься

Автор - _Boroda_
Дата добавления - 23.01.2015 в 22:09
AlexM Дата: Пятница, 23.01.2015, 22:12 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4505
Репутация: 1127 ±
Замечаний: 0% ±

Excel 2003
ты в бесконечный цикл провалишься
Не получается провалиться. Ты про отключение событий?



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
ты в бесконечный цикл провалишься
Не получается провалиться. Ты про отключение событий?

Автор - AlexM
Дата добавления - 23.01.2015 в 22:12
_Boroda_ Дата: Пятница, 23.01.2015, 22:15 | Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Ты про отключение событий?

Ага
Попробуй в А2 что-то ввести. Поставь только стопор на первой строке и через F8 погоняй.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Ты про отключение событий?

Ага
Попробуй в А2 что-то ввести. Поставь только стопор на первой строке и через F8 погоняй.

Автор - _Boroda_
Дата добавления - 23.01.2015 в 22:15
AlexM Дата: Пятница, 23.01.2015, 22:20 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4505
Репутация: 1127 ±
Замечаний: 0% ±

Excel 2003
Тут без отключения не зацикливается. Почему???



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеТут без отключения не зацикливается. Почему???

Автор - AlexM
Дата добавления - 23.01.2015 в 22:20
RAN Дата: Пятница, 23.01.2015, 22:27 | Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Я, конечно, видел, что уйдет, но скачал и запустил. :D (останов не ставил).
Не ушло. Не успело. Excel вылетел. :p


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЯ, конечно, видел, что уйдет, но скачал и запустил. :D (останов не ставил).
Не ушло. Не успело. Excel вылетел. :p

Автор - RAN
Дата добавления - 23.01.2015 в 22:27
AlexM Дата: Пятница, 23.01.2015, 22:27 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4505
Репутация: 1127 ±
Замечаний: 0% ±

Excel 2003
А на моем старом ПК зацикливание было таким незаметным.[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address(0, 0) = "A2" Then Range("C2") = Target.Value - Range("B2")
If Target.Address(0, 0) = "B2" Then Range("C2") = Range("A2") - Target.Value
If Target.Address(0, 0) = "C2" Then Range("B2") = Range("A2") - Target.Value
Application.EnableEvents = True
End Sub
[/vba]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеА на моем старом ПК зацикливание было таким незаметным.[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address(0, 0) = "A2" Then Range("C2") = Target.Value - Range("B2")
If Target.Address(0, 0) = "B2" Then Range("C2") = Range("A2") - Target.Value
If Target.Address(0, 0) = "C2" Then Range("B2") = Range("A2") - Target.Value
Application.EnableEvents = True
End Sub
[/vba]

Автор - AlexM
Дата добавления - 23.01.2015 в 22:27
kontrabasss Дата: Суббота, 24.01.2015, 17:09 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Большое всем спасибо. Методом научного тыка я, вроде, разобрался, как это сделать. Но! Возникла следующая проблема. Если я в ячейке A2 вбиваю все руками, то все просчитывается нормально. Но если ячейка А2 рассчитывается автоматически, то остальные столбцы не меняются...
 
Ответить
СообщениеБольшое всем спасибо. Методом научного тыка я, вроде, разобрался, как это сделать. Но! Возникла следующая проблема. Если я в ячейке A2 вбиваю все руками, то все просчитывается нормально. Но если ячейка А2 рассчитывается автоматически, то остальные столбцы не меняются...

Автор - kontrabasss
Дата добавления - 24.01.2015 в 17:09
kontrabasss Дата: Суббота, 24.01.2015, 18:00 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А еще стало вылетать окно с надписью:

Run-time error '28':
Out of stack space


И при нажатии на кнопку "Debug" попадаю на страницу с кодом, где часть кода желтым выделена.
Это я что-то не та сделал???
К сообщению приложен файл: 1005374.png (20.4 Kb) · 3478779.png (18.0 Kb)
 
Ответить
СообщениеА еще стало вылетать окно с надписью:

Run-time error '28':
Out of stack space


И при нажатии на кнопку "Debug" попадаю на страницу с кодом, где часть кода желтым выделена.
Это я что-то не та сделал???

Автор - kontrabasss
Дата добавления - 24.01.2015 в 18:00
RAN Дата: Суббота, 24.01.2015, 18:27 | Сообщение № 17
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Как вариант - плохо читаете.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеКак вариант - плохо читаете.

Автор - RAN
Дата добавления - 24.01.2015 в 18:27
kontrabasss Дата: Суббота, 24.01.2015, 18:35 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
RAN, спасибо. Помогло. Пойду учиться читать хорошо.
 
Ответить
СообщениеRAN, спасибо. Помогло. Пойду учиться читать хорошо.

Автор - kontrabasss
Дата добавления - 24.01.2015 в 18:35
AlexM Дата: Суббота, 24.01.2015, 19:10 | Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4505
Репутация: 1127 ±
Замечаний: 0% ±

Excel 2003
Но если ячейка А2 рассчитывается автоматически, то остальные столбцы не меняются
Тогда так[vba]
Код
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
Range("C2") = Range("A2") - Range("B2")
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address(0, 0) = "B2" Then Range("C2") = Range("A2") - Target.Value
If Target.Address(0, 0) = "C2" Then Range("B2") = Range("A2") - Target.Value
Application.EnableEvents = True
End Sub
[/vba]
К сообщению приложен файл: 9730875_2.xls (29.5 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
Но если ячейка А2 рассчитывается автоматически, то остальные столбцы не меняются
Тогда так[vba]
Код
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
Range("C2") = Range("A2") - Range("B2")
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address(0, 0) = "B2" Then Range("C2") = Range("A2") - Target.Value
If Target.Address(0, 0) = "C2" Then Range("B2") = Range("A2") - Target.Value
Application.EnableEvents = True
End Sub
[/vba]

Автор - AlexM
Дата добавления - 24.01.2015 в 19:10
kontrabasss Дата: Суббота, 24.01.2015, 19:38 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
AlexM, спасибо. Опять научным тыком, почти не осознавая, что я делаю воткнул это в свою таблицу.
Мне это нужно для расчета сторон, высот, углов геометрических фигур. )))
Там много используется тригонометрических формул Excel.
Например можно построить треугольник по трем сторонам, а можно по двум и углу между ними.
Может подскажете, какая функция у Range?
 
Ответить
СообщениеAlexM, спасибо. Опять научным тыком, почти не осознавая, что я делаю воткнул это в свою таблицу.
Мне это нужно для расчета сторон, высот, углов геометрических фигур. )))
Там много используется тригонометрических формул Excel.
Например можно построить треугольник по трем сторонам, а можно по двум и углу между ними.
Может подскажете, какая функция у Range?

Автор - kontrabasss
Дата добавления - 24.01.2015 в 19:38
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Циклические ссылки и нестирающиеся формулы (Формулы/Formulas)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!