Страницы: 1
RSS
Связь между ячейками строки в Excel с помощью VBA (по типу баз данных)
 
Здравствуйте всем, VBA изучаю около месяца и очень хотелось бы получить совет или решение по следующему вопросу:  
Имеется список условных единиц с одним главным параметром (размер), по которому ведётся отбор. Имеется допустимое значение параметра (задаёт сам пользователь).  
Необходимо при определённом условии представить на листе список у.е. с параметром, отвечающим условию. Сейчас отображается только ячейка параметра. Нужно, чтоб выводимые строки отображались полностью.  
Добавления:    
1)Изначально планировалось хранение списка (БД) на другом листе (см. Лист 2), т.к. Лист 1 и так содержит довольно большую прогу (здесь не приведена), которая в своём итоге выдаёт параметр dop (допустимый минимум), но это необязательно, можно и на одном листе.  
2)Хотелось бы использовать двойное условие ЕСЛИ (if) в системе, т.е. как-то так:  
ЕСЛИ(И(razm>dop;razm<(dop*6/5)) - не знаю, как в VBA соединить условия,  
If razm > dop & If razm < (dop * 6 / 5)  
даёт лишь поочерёдную их проверку.  
Разумеется, если будут ещё какие-то советы по исправлениям и улучшениям, это только увеличит мою ОГРОМНУЮ БЛАГОДАРНОСТЬ! =)  
Мне советовали Access для БД, но я с ним не знаком, да и привязывать потом придётся опять же к Excel, неизвестно как. Может, можно обойтись только Excel'ем? Что смог, сделал, гуглить устал)  
В любом случае, спасибо.
 
а если без VBA
 
Ух ты, так быстро!  
Хм, заманчиво... Единственное, что, насколько я понял, мне нужна будет числовая фильтрация или сортировка, а при числовой фильтрации (н-р, ключевая ячейка = 1) excel скрывает ненужные варианты(это хорошо), но если я введу новое значение параметра, excel не перезагрузит список по новой и не будет отображать все варианты (или я просто не разобрался?) - то есть, придётся каждый раз отключать и опять включать фильтрацию, чтоб excel пересчитал список с учётом всех отключённых до этого строк. Это можно как-то автоматизировать? Вообще, идея хорошая, было б удобно. Получается: отфильтровать по ключевому полю, а потом: фильтр на поле "Размер": первые 10 наименьших из оставшихся. Поскольку у меня будет не 5 строчек наименований, а хотя бы сотня. =)  
Итак, предложение хорошее, но немножко недоработанное. Если сможете написать, как разобраться с автоматической перезагрузкой списка и уже после этого фильтрацией по новой, то вся проблема будет решена.  
А пока огромное Вам СПАСИБО!  
Если кто-то всё же знает, как это сделать в VBA, и насколько это реально (вдруг всё очень просто и кто-то сталкивался?), поделитесь, я буду признателен.  
p.s. ушёл спать на несколько часов.
 
{quote}{login=check}{date=16.12.2009 08:01}{thema=Связь между ячейками строки в Excel с помощью VBA (по типу баз данных)}{post}...Мне советовали Access для БД, но я с ним не знаком, да и привязывать потом придётся опять же к Excel, неизвестно как. Может, можно обойтись только Excel'ем? Что смог, сделал, гуглить устал)  
В любом случае, спасибо.{/post}{/quote}  
 
Это очень хороший совет. И связь Access с Excel доступна даже чайнику :)  
Один запрос, а дальше сводная. Кстати и без Access можно обойтись, если данных немного.  
Но это так, мысли вслух...  
 
Ждите знатоков VBA...
 
"Один запрос, а дальше сводная..." - а кто-нибудь знает, что за запрос? :)  
Я готов попробовать забить базу в Access, если связь с Excel действительно проста (тут я правда чайник). Привязка базы аксесса к ячейке экселя, я так понимаю,  с помощью кода VBA?  
Данных, действительно, немного (вроде?), в итоге получется строчек 50 и 11 столбцов. Это ведь немного?  
Спасибо за советы.
 
Если ещё актуально, уточните задачу. Пока понимаю так, что нужно вывести подряд строки, удовлетворяющие некому условию. А вот само условие не совсем понял: 6/5 это что? Например, при Е2=100, какие строки должны отображаться?
 
Да, ещё актуально, спасибо за внимание. 6/5 - это просто второе ограничение, т.е., при E2=100 должны выводиться строки со значением Размера 100<B2<120.  
Приступил к забиванию базы в Acess, но пока не нашёл, как их связать, если что. На ютюбе, вроде, много роликов на эту тему, пару посмотрел, но пока непонятно))
 
И все строки, что попали в этот "коридор", вывести списком, начиная со строки № 11, использовав эту таблицу с исходными данными? Другие столбцы ещё будут?
 
Да, именно это и нужно. Столбцов всего 11, но ключевой только один, просто нужно, чтоб строчки выводились целиком.  
Добавлю, чтоб яснее было:  
Допустим, есть список (база) электродвигателей с разной мощностью (значение мощности - столбец B). Я расчётом получаю некоторое значение (E2) мощности и теперь подбираю из списка подходящие по мощности электродвигатели.
 
{quote}{login=check}{date=16.12.2009 08:36}{thema=}{post} Столбцов всего 11...{/post}{/quote}  
Так давайте файл с полной таблицей.
 
Пришлю, только размер файла больше 100 кб, это страшно? И ещё, число столбцов я сократил до 7 - остальное не так важно.
 
Запакуйте файл.
 
Эх, что-то не силён я в архивации... Запаковал, но размер почти не уменьшился ~ 150 кб. В файле, собственно, вся работа: Лист "справочные талицы" пропускайте, Лист 1 - расчёт (ячейка N43 итог расчёта, отбор в базе по столбцу 'Основная ном. динамическая нагрузка', сама база на Листе 2. Извините, что я так долго. <BR><STRONG>Файл удален</STRONG> - велик размер. [Модераторы]
 
Файл я скачал, но был вынужден его удалить с Форума. Сейчас посмотрю.
 
Вы бы хоть в Правила заглянули - нет у меня 2007-го...
 
Да, в правилах я был, просто файл в старом эксэле весит в 2 раза больше, вот я и не стал переводить... Извините. Вот, 97-2003, архивнул, но размер всё равно ~ 120 кб...  <BR><STRONG>Файл удален</STRONG> - велик размер. [Модераторы]
 
Ячейка N43 в последнем файле - это аналог Е2 первого?
 
Да, именно так.
 
Макрос я написал, но что-то с этими данными ничего не находится. Чтобы уменьшить размера файл, я удалил один лист и пару рисунков. Сейчас они не важны. Макрос будет запускаться по изменению значения в ячейке N43. Кнопки не нужны. Давайте проверим работоспособность, а потом Вы перенесёте что нужно в реальный файл.
 
УАААА, дружище, дай я тебя обниму! \(^_^)/ :D  
Работает, проверил, единственно - при каждом следующем запуске макроса без изменения исходных данных результаты смещаются по таблице вниз. Но это я как-нибудь исправлю, сейчас код изучу. СПАААААСИБО!))
 
Небольшая поправка. Найдите в коде строку:  
Range(Cells(49, 12), Cells(LastRow + 2, 18)).ClearContents  
и после неё вставьте ещё такую:  
LastRow = 48
 
У Вас ошибка в подписях к радиокнопке: дважды “Продольный привод, рабочий ход”
 
Верно! ну, спасибо ещё много-много раз! :)
Страницы: 1
Читают тему
Наверх