Страницы: 1
RSS
Отслеживание и запись максимального числа.
 
Господа, подскажите, пожалуйста, возможно ли такое в Excel? Есть колонка с числовыми данными A1:А500, если в этой колонке появляется число, скажем, больше или равно 1000 (к примеру, в ячейке А501), то в ячейке D1 автоматически происходит запись: 1000.  
Если после А501 прошел еще ряд чисел, и в ячейке А578 появилось число 1281, то в ячейке D2 появляется запись 1281.  
 
То есть в колонке А автоматически отслеживаются все числа больше или равные 1000, и если такие числа там появляются, то они автоматически заносятся в колонку D.
 
{quote}{login=potekhinigor2013}{date=04.02.2012 05:56}{thema=Отслеживание и запись максимального числа.}{post}Господа, подскажите, пожалуйста, возможно ли такое в Excel?..{/post}{/quote}  
Вообщем-то у вас желания скромные, и для их исполнения может хватить знания всего лишь нескольких функций - ЕСЛИ, МАКС, НАИБОЛЬШИЙ и др.... И когда сами попробуете и друг что-то не получится, то просим на формум, но с конкретным своим примером *.xls. Его размер уточните в Правилах... ;)  
-79553-
 
Прикладываю пример.    
 
В нем на Листе 1 поток динамических данных. Если в колонке С есть число больше или равное 1000, то на Листе2 строка с этим числом автоматически добавляется.
 
"Вообщем-то у вас желания скромные, и для их исполнения может хватить знания всего лишь нескольких функций - ЕСЛИ, МАКС, НАИБОЛЬШИЙ и др...."  
 
Чтобы можно было вручную сортировать, я знаю, как сделать. А вот чтобы автоматически, мне нужна ваша помощь.
 
Поскольку формулами вы даже и не попытались что-то сделать, то это, видимо, намек на полный автомакрос?.. Ждите рыбораздатчиков-макросописателей... ;)  
-84416-
 
Динамические данные, пишете доп. столбец:  
 
=ЕСЛИ(D2>=1000;МАКС($A$1:A1)+1;"")  
Только строку сверху добавьте.  
 
На листе2 ВПР:  
 
=ВПР(СТРОКА(1:1);'Динамические данные'!$A$2:$D$36;СТОЛБЕЦ(B$1);0)
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
БЕЗ ДОП СТОЛБЦА ФОРМУЛОЙ МАССИВА  
=ЕСЛИ(СТРОКА()>СЧЁТЕСЛИ('Динамические данные'!$C$1:$C$35;">=1000");"";ИНДЕКС('Динамические данные'!$A$1:$C$35;НАИМЕНЬШИЙ(ЕСЛИ(('Динамические данные'!$C$1:$C$35>=1000)*СТРОКА($C$1:$C$35)<>0;СТРОКА($C$1:$C$35));СТРОКА());СТОЛБЕЦ()))  
 
РАСТЯГИВАЕТЕ СРАЗУ НА 3 СТОЛБЦА И НАПРИМЕР 20 СТРОК, ПОСЛЕ ИЗМЕНЕНИЯ НА ПЕРВОМ ЛИСТЕ ИЗМЕНЕНИЯ БУДУТ ПОЯВЛЯТЬСЯ НА ВТОРОМ.
 
а макросом можно?
 
{quote}{login=AKSENOV048}{date=04.02.2012 12:29}{thema=}{post}а макросом можно?{/post}{/quote}  
 
Макрос идеально подошел. Спасибо.    
 
Но он, к сожалению, работает не автоматически. То есть, только после нажатия на него в Листе2 отображаются данные. А необходимо, чтобы данные заносились на Лист2 автоматически. Без нажимания на кнопочку Start.
 
Ну то есть, чтобы один раз нажать Start, и данные уже автоматически заносились на Лист2.
 
попробуйте. Start нажимать не надо.  
макрос корявый конечно.
 
Странно. Он и работает, и не работает. Если руками добавлять данные на листе Динамические данные, то он работает. Но если идет автоматический поток данных c DDE сервера, то не работает.
 
potekhinigor2013 извините с DDE я Вам не помогу.
 
Спасибо и на этом.
 
Вот здесь есть макрос, который умеет автоматически копировать данные. http://www.planetaexcel.ru/forum.php?thread_id=3146 Но как его интегрировать к post_304570.xls ? Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) ' Если изменения произошли не на Листе1, то ничего не делать If Sh.Name <> Лист1.Name Then Exit Sub ' Если изменения произошли не в [B2], то ничего не делать If Target.Address <> [B1].Address Then Exit Sub ' ===== Записать историю изменения значений ячейки [B2] ===== Dim rng As Range, СтрокаДляЗаписи As Range ' Задать диапазон таблицы данных Set rng = [A3].CurrentRegion ' Отпределить последнюю строку для записи Set СтрокаДляЗаписи = rng.Rows(1).Offset(rng.Rows.Count).Cells ' Добавить в конец дату+время и значение СтрокаДляЗаписи(1, 1) = Now СтрокаДляЗаписи(1, 2) = Target ' Переопределить именованный диапазон [БД] Sh.Names.Add Name:="БД", RefersTo:="=" & rng.CurrentRegion.Address ' Переопределить диапазон данных диаграммы Sh.ChartObjects(1).Chart.SetSourceData Source:=Sh.Range("БД") End Sub
 
Игорь, код Аксенова не смотрел, но для контроля данных ДДЕ может подойти worksheet_calculate. Поищите на форуме были решения.Игорь67
 
{quote}{login=}{date=05.02.2012 11:22}{thema=}{post}для контроля данных ДДЕ может подойти worksheet_calculate.{/post}{/quote}Думаю, что не справится с DDE.
 
ЮрийМ, это почему??? а как же эти темы в которых поступление данных по ДДЕ отслеживалось через формулу и worksheet_calculate? Ссылки на копирование обновляемых сторонними программами данных на другой лист/книгу, ведение истории.... сохранение истории данных обновляемых по DDE Решения от Raptor http://www.planetaexcel.ru/forum.php?thread_id=6678 http://www.planetaexcel.ru/forum.php?thread_id=6023 Ну и еще 5 копеек... Там первое решение как раз в 1 книге с листа на лист копирует... http://www.planetaexcel.ru/forum.php?thread_id=5783 (перед использованием файла из этой темы загляните Сюда) http://www.planetaexcel.ru/forum.php?thread_id=3146 - ZVI http://www.planetaexcel.ru/forum.php?thread_id=8042
 
Эт я погорячился, наверное: не посмотрев файл. Подразумевалось, что изменение в ячейке, куда поступают данные по DDE, не будет отслеживаться.
 
Ну да! Мы же делали контроль поступления данных в модуле листа и формула, например ДВССЫЛ(A1), с последующим вызовом макроса Call myMacro
 
Мне ZVI подсказал прикольный вариант: на листе создаём TextBox, линкуем его на ячейку, повязанную с DDE, делаем его невидимым. А уж отследить Change в TextBox - дело совсем несложное :-)
 
А такого варианта еще не видел. пример будет?
 
Ну а какой пример - пустая ячейка, куда должны попасть DDE-данные и невидимый ТекстБокс? :-)
Страницы: 1
Читают тему
Наверх