Страницы: 1
RSS
помогите - как отследить изменение данных в ячейке ???
 
Смотрите какая ситуация у меня :  
Excel 2007, в книге есть 2 листа "лист1" и "лист2" и допустим на листе1 в ячейке В5 введена формула неважно какая (т.е. =.....), а на листе2 мне нужно в ячейке С5 видеть, стиралась или изменялась ли эта формула или нет.    
Т.е. если формула не стиралась, на листе2 в ячейке С5 мне нужно значение 1 ;  
если формула изменялась (т.е. что-то добавилось или ссылки на данные изменились),то на листе2  в ячейке С5 мне нужно значение 2 ;  
а если формула вообще стерта (т.е. ничего не введено "пусто" или же введено какое-то значение без знака равно), то на листе2 в ячейке С5 мне нужно значение 3.  
 
Желательно сделать это с помощью формулы, а если нет такой возможности то тогда уж макросом.  
 
заранее спасибо за помощь, кто ответит....
 
просто интересно: зачем оно вам так нужно?  
пс. просто возможны другие решения ИСХОДНОЙ - от защиты ячейки до бесконечности... но всё дело-то как раз в том, что вы даёте нам НЕ исходную задачу :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
{quote}{login=ikki}{date=26.04.2011 12:58}{thema=}{post}просто интересно: зачем оно вам так нужно?  
пс. просто возможны другие решения ИСХОДНОЙ - от защиты ячейки до бесконечности... но всё дело-то как раз в том, что вы даёте нам НЕ исходную задачу :){/post}{/quote}  
 
в том то и дело, что мне не нужно защищать ячейку от изменения, её можно редактировать, но мне как раз и нужно видеть редактировалось где-то что-то или нет.. вот какая у меня проблема
 
Макросом вероятно так может получиться - при открытии файла берём в public переменную формулу из ячейки, при закрытии файла анализируем и пишем результат.
 
{quote}{login=Hugo}{date=26.04.2011 01:08}{thema=}{post}Макросом вероятно так может получиться - при открытии файла берём в public переменную формулу из ячейки, при закрытии файла анализируем и пишем результат.{/post}{/quote}  
 
нет так не катит мне нужно это сделать в открытом файле
 
мда...  
решить проблему с одного вопроса не удалось...  
давайте поэтапно?  
 
1. определитесь всё-таки -- что вам нужно отслеживать: "изменение данных" (как у вас написано в названии темы) или "если формула изменялась" (как написано в тексте)? :)  
 
пс. "зачем" - это секрет, я понял.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Проверьте, так нужно?
 
Если в открытом - так.  
Можно совместить.
 
Про "без знака равно" забыл - добавьте ещё проверку на "=" в начале.
 
Игорь, смотрите: в вашем примере на листе Sheet1 перед столбцом E добавляю еще один.  
формула, ессно, меняется на D5+F5  
 
на листе Sheet2 остается 1.  
 
это нормально?  
ну нафига пытаться угадать, что хочет автор?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
{quote}{login=Hugo}{date=26.04.2011 01:23}{thema=}{post}Если в открытом - так.  
Можно совместить.{/post}{/quote}  
 
да так мне и нужно, только я не понял как это делается, ведь формулы на листе2 никакой нет. Объясните пожалуйста как это сделать ???
 
Т.е. так:  
 
Sub watchB5()  
 
If Sheet1.[b5].Formula = a Then
Sheet2.[c5].Value = 1
Else  
Sheet2.[c5].Value = 2
End If  
 
If Left(Sheet1.[b5].Formula, 1) <> "=" Then Sheet2.[c5].Value = 3
 
 
End Sub  
 
Но если юзер поменяет формулу, а затем позже вернёт назад - то что должно быть в ячейке? Может историю собирать - типа  
Sheet2.[c5].Value = Sheet2.[c5].Value & ", " & 1
 
А если формула меняется сама - это легально! :)
 
{quote}{login=zeyram}{date=26.04.2011 01:33}{thema=Re: }{post}{quote}{login=Hugo}{date=26.04.2011 01:23}{thema=}{post}Если в открытом - так.  
Можно совместить.{/post}{/quote}  
 
да так мне и нужно, только я не понял как это делается, ведь формулы на листе2 никакой нет. Объясните пожалуйста как это сделать ???{/post}{/quote}  
 
я нашел макрос, но скажите как он работает в режиме онлайн или же только при переходе на лист2 ???
 
{quote}{login=Hugo}{date=26.04.2011 01:33}{thema=}{post}Т.е. так:  
 
Sub watchB5()  
 
If Sheet1.[b5].Formula = a Then
Sheet2.[c5].Value = 1
Else  
Sheet2.[c5].Value = 2
End If  
 
If Left(Sheet1.[b5].Formula, 1) <> "=" Then Sheet2.[c5].Value = 3
 
 
End Sub  
 
Но если юзер поменяет формулу, а затем позже вернёт назад - то что должно быть в ячейке? Может историю собирать - типа  
Sheet2.[c5].Value = Sheet2.[c5].Value & ", " & 1
 
А если формула меняется сама - это легально! :){/post}{/quote}  
 
нет все правильно, если мы изменяем формулу назад, то мы опять видим 1 и не нужно вести историю, это всего лишь проверка совпадает ли формула с первой введенной формулой или нет.
 
Макрос отслеживает изменение (вручную) ячейки B5.  
Кстати, если нужно подстраховаться от добавления столбцов - можно макрос запускать при любом изменении листа, при выделении ячееек и переходе по листам, пересчёте... вообще на все события поставить :)
 
{quote}{login=Hugo}{date=26.04.2011 01:38}{thema=}{post}Макрос отслеживает изменение (вручную) ячейки B5.  
Кстати, если нужно подстраховаться от добавления столбцов - можно макрос запускать при любом изменении листа, при выделении ячееек и переходе по листам, пересчёте... вообще на все события поставить :){/post}{/quote}  
 
я понял, но смотрите, если я позже захочу изменить эту формулу на другую, и мне уже надо будет отслеживать по этой новой формуле изменения, то как мне тогда быть??? ведь в макросе как я вижу не введена эта формула, значит он запоминает её первую как она введена или как ???
 
Он запоминает при открытии файла.  
Если нужно запомнить в процессе - напишите и выполните макрос  
 
Sub tt()  
a = Sheet1.[b5].Formula
End sub
 
{quote}{login=Hugo}{date=26.04.2011 01:44}{thema=}{post}Он запоминает при открытии файла.  
Если нужно запомнить в процессе - напишите и выполните макрос  
 
Sub tt()  
a = Sheet1.[b5].Formula
End sub{/post}{/quote}  
 
щас я попробую и если возникнут вопросы, то я напишу, ок?  
а то я еще не все до конца понял...
 
Смысл такой - в переменную (которая доступна, пока файл открыт)при открытии файла берём текст формулы. При изменениях сравниваем текущий текст с запомненным.  
По результату сравнения действуем. Если нужно, значение переменной можно принудительно поменять.
Страницы: 1
Читают тему
Наверх