Страницы: 1
RSS
Нужна Функция "DELETE"
 
Привет !  
 
Продолжаю приспосабливать EXCEL для фундаментальных лабораторных экспериментов !  
 
Нужна функция или макрос на VBA, но лучше всего написанная "пользовательская функция" которая способна по команде из "активной ячейки" ( в виде смены " 0 " на " 1 " )  
удалить поле к примеру DJ17:HZ157 причём начало и конец поля указаны в двух соседних ячейках.  
 
Удалить имеется ввиду как будто Вы сами выделили диапазон ячеек DJ17:HZ157 и нажали DELETE !  
 
В примере :  
 
A1 - Активная ячейка в которой и происходит смена " 0 " на " 1 ".  
 
С1 - Указывает начало диапазона DJ17  
D1 - Указывает конец диапазона HZ157  
 
Во-общем Вы пишите хоть какую-то информацию о командах и пользовательских функциях "DELETE" а я соображу как в них вписывать !  
 
Дело в том что сама реакция длиться считанные доли секунды и вручную удалять отработанные блоки не возможно !  
 
PS: Первый раз сталкиваюсь с форумом на котором не надо регистрироваться !
 
это невозможно
 
ps но можно скомбинировать формулу и макрос - запуск макроса осуществляется при пересчете функции, которая поставляет макросу необходимые параметры(аргументы)
 
{quote}{login=слэн}{date=22.04.2008 01:26}{thema=}{post} можно скомбинировать формулу и макрос {/post}{/quote}  
 
Как выглядит макрос для такого случая ?
 
нуу..  
 
function бла-бла-бла(параметры)as string  
бла-бла-бла="имя для идентификации команды" & format(параметры,"")  
end function  
 
Private Sub Worksheet_Calculate()  
if not cells.find("имя для идентификации команды") is nothing then call макрос1  
End Sub  
 
sub макрос1  
...  
end sub
 
Спасибо за Активность в этой теме !  
 
А можно сделать при помощи "Пользовательской функции" !  
 
Дело в том, что время реакции составляет считанные тысячные доли секунды и подобная схема с поиском Выполняется немерено долго особенно при участии тысячи поисковых запросов, даже на мощном кластере !!!  
 
Надо исключить время на поиск !  
 
А это можно сделать, создав "пользовательскую функцию " к примеру на VBA в которую можно будет уже подставлять диапазоны адресов ...  
 
Например :  
 
=DELETE(A1:D17)  
 
В частном примере :  
 
=ЕСЛИ(S1=1;DELETE(A1:D17);0)  
 
Если S1=1 то автоматически выделить диапазон ячеек " A1:D17 " и нажать клавишу " DELETE ".  
 
ОЧЕНЬ НУЖНА ДАННАЯ ФУНКЦИЯ ! ПЛИЗ !
 
{quote}{login=Tort7}{date=23.04.2008 11:14}{thema=}{post}Спасибо за Активность в этой теме !  
 
А можно сделать при помощи "Пользовательской функции" !  
 
Дело в том, что время реакции составляет считанные тысячные доли секунды и подобная схема с поиском Выполняется немерено долго особенно при участии тысячи поисковых запросов, даже на мощном кластере !!!  
 
Надо исключить время на поиск !  
 
А это можно сделать, создав "пользовательскую функцию " к примеру на VBA в которую можно будет уже подставлять диапазоны адресов ...  
 
Например :  
 
=DELETE(A1:D17)  
 
В частном примере :  
 
=ЕСЛИ(S1=1;DELETE(A1:D17);0)  
 
Если S1=1 то автоматически выделить диапазон ячеек " A1:D17 " и нажать клавишу " DELETE ".  
 
ОЧЕНЬ НУЖНА ДАННАЯ ФУНКЦИЯ ! ПЛИЗ !{/post}{/quote}  
Вам же Слэн написал - "это невозможно", так устроен Excel.  
Можно после пересчета поймать лишь событие этого пересчета или изменения ячейки, и уже макросом после этого события удалить что-то. Но события - это тоже могут быть десятки миллисекунд. Подумайте, не зациклились ли Вы на придуманном методе решения с этим DELETE, может, проще в ячейках A1:D17 из примера выше написать формулу типа: ЕСЛИ(A1=1;"";"не пусто"). Или сформулируйте задачу не привязываясь к решениям, например, так: в такие-то ячейки (какие? диапазон фиксированный?) внешней программой (какой?) записываются некие числовые (или другие?) данные, а в ячейку A1 (обязательно?) неведомые силы (?) загоняют единички (или двойки?), после чего в считанные миллисекунды (конкретней, и что определеяет это время?) требуется куда-то (куда?) переписать данные и зачем-то  (зачем?) очистить диапазон данных.
 
Нерешаемых задач нет !  
Есть просто задачи, которые требуют немного больше времени, чем Мы предполагали !  
 
PS: Думаю пользовательская команда на VBA вполне реальна в этом случае и уж 100% реальна на C++ !  
 
PS : За узлы ввода и вывода данных в EXCEL я не отвечаю - они написаны не мной ! Они работают на C++ и Ассемблер связывает их с экспериментальным "стендом" !  
 
Моя задача : Фундаментальный просчёт, большинства теоретически вероятных явлений, связанных с управляемым ростом температуры и замедление её роста на тестовом стенде в "изделии" методом введения реал-тайм поправок из EXCEL на "автомате" так как время эксперимента ничтожно мало !
 
почему иксель? работайте целиком на С++  
иксель этого не может, потому, что его создатели серьезно озаботились, чтобы он этого не мог :)
Страницы: 1
Читают тему
Наверх