PDA

Просмотр полной версии : А кто шарит в Excel? нид хелп!!


Sympson
05.10.2010, 15:35
Камрады, нужна помощь....Сильно нужна...
Проблема в том, что некое ПО способно экспортировать данные только в формате таблиц екселя. Все бы ничего, но есть одна задача, которую это ПО не решает, а решение нужно...А моих познаний и природной смекалки не хватает для правильного написания формулы (или может ексель такого не умеет....)ХЗ. Понятно что при работе с СУБД я бы это решил, а вот в таблицах не выходит....Работа с двумерным массивом...
Итак:есть двумерный массив цифр, состоящий из 30 (или 31) столбца (озаглавленных по датам месяца) и 48 строк (озаглавленных по времени суток -каждые 30мин).
Задача: -результат вывести в 4-ре отдельных ячейки
-из всего набора цифр выбрать две наибольших в диапазоне строк от 8-й до 14-й и от 30-й до 40-й.
после этого:
- выяснить каким столбцам принадлежат одна и другая цифра и вывести ИМЕНА этих столбцов в две отдельных ячейки.
-выяснить каким строкам принадлежат одна и другая цифры и вывести ИМЕНА этих строк в две другие отдельные ячейки
-вывести сами эти цифры в третьи отдельные ячейки (это я смогу и сам))))
Это собсно и все...Помогите, кто может:p
К хелпнику самого екселя прошу не отправлять - я уже там всю башку разбил, так ничего и не получилось - только с одномерным массивом получается...по возможности без написания скриптов и прочих там макросов, а то я застрял по старости лет и в объектном программировании нихрена не шарю:rolleyes:

Out_law
05.10.2010, 16:24
выкладывай файлег, блин целий день на работе пробездельничал, а под конец дня тему увидел. Попробую что-нибудь помудрить

tovaroved
05.10.2010, 16:48
-из всего набора цифр выбрать две наибольших в диапазоне строк от 8-й до 14-й и от 30-й до 40-й.



тоесть по одной самой большой цифре из каждого диапазона? или просто две самых больших даже если они в одно диапазоне ?

Sympson
05.10.2010, 21:10
tovaroved
по одной самой большой из каждого диапазона....

Out_law
ОК завтра с работы сгененрирую файл и выложу...

ivg
05.10.2010, 21:33
VBA редактор в екселе тебе поможет

Sympson
05.10.2010, 21:49
ivg
Да не шарю я в этих вижл бесиках....говорю ж застрял в программировании середины 90х годов))))..
мине б типа формулы с описанием аргументов...может быть даже с кучей вложений)))

softm
05.10.2010, 22:20
ivg
Да не шарю я в этих вижл бесиках....говорю ж застрял в программировании середины 90х годов))))..
мине б типа формулы с описанием аргументов...может быть даже с кучей вложений)))

ты файло выложи :) желательно в CSV.

Sympson
05.10.2010, 22:23
ты файло выложи :) желательно в CSV.
Файло завтрева постараюсь (долгая песня) а шо токое CSV?

softm
05.10.2010, 22:31
Файло завтрева постараюсь (долгая песня) а шо токое CSV?

"Сохранить как ..." и выбираешь. Текст, разделенный запятыми.

Sympson
06.10.2010, 10:03
ну вод и примерный файло, рожденный неким ПО)))
В архиве 2 одинаковых фала в разных форматах (xls и csv)

ЗЫ: Номера строк, указанные в первом посте, указаны навскидку и не имеют особой важности, во вложенном файле они отмечны зеленым цветом...

forum
06.10.2010, 10:20
а я тут спрашиваю, помагают.
http://forum.msexcel.ru/microsoft_excel-b1.0/
хотя, надо отдать должное, на говнофоруме тоже выручали;)

tovaroved
06.10.2010, 10:34
вот чета наваял, может и через опу конечно , но это по быстрому

tovaroved
06.10.2010, 10:53
если попадется два или больше одинаковых максимальных значений, то результат будет выводится тот который раньше произошёл

Sympson
06.10.2010, 12:54
tovaroved
ОК! Спасибо....сложновато, но главное работает)))...попробуем разобраться и улучшить)))...если более простых решений не будет то примем это))..
А пока плюсег за оказанную помощь))

maxann
12.10.2010, 13:19
подсмотрел решение и ужаснулся... оно то конечно работает, но гораздо проще чиркнуть один раз пару строк во встроенном VBA и получить то, что интересует одним нажатием горячих клавиш (ГК) без заморочек с дополнительными листами.
Сервис - макросы - создать/записать (любое действие.. можно даже просто перемещение курсора)
Потом текст из вложения вставь вместо текста макроса, который записался. ГК сам назначишь, или запускай через меню.

Код, как сам видишь, довольно простой. отсюда и один минус: при наличии нескольких абсолютно одинаковых значений максимумов - выведется дата и время последнего найденного максимума. Но шанс на подобное совпадение просто мизерный.
Надеюсь, ничего сложного с использованием макроса не будет.
ПыСы
Спасибо за разминку, а то уже начал забывать этот Бейсик ;)

Sympson
13.10.2010, 10:32
maxann
Вау!!!..Классно...прекрасно работает (хотя я нихрена не понимаю))), но макрос написал вставив твой код...Спасибо огроменное...
За оказанную помощь плюсег в карму....

maxann
14.10.2010, 15:12
)) Да нема за що! Самому по приколу было тряхнуть стариной (хорошо, что не отвалилась). А разобраться там вообще не составит труда при поверхностном знании любого языка программирования. Ну или хоть школьный курс английского уже поможет.
Если есть желание, могу разложить по полочкам какая строка чего делает. Тогда и сам сможешь вносить изменения при необходимости.
ЗЫ. Сам макрос где сохранял? Чтобы каждый раз не записывать его по новой (чтобы он был доступен и в других файлах) сохрани его в корневой (или главной, уже не помню) папке. НО! ИЗМЕНЕНИЯ произведенные в результате работы макроса (любого) ОТМЕНИТЬ НЕВОЗМОЖНО!.. Т.е. если в каком другом файле нажать горячие клавиши этого макроса, он благополучно заполнит те 6 ячеек получившимися данными невзирая на то, что там было. Тогда только выходить не сохраняясь и по новой открывать файл для работы...
По свободе модернизирую , чтобы он проводил проверку файла, прежде чем начать работу. Под каким именем программа сохраняет файл с данными? Или сам задаешь имя?

Sympson
17.10.2010, 21:31
Имя задаю сам, вернее пишется файл с шаблоном запроса, и этот шабло висит в корне отчетов программы....делая отчет выбираешь этот шаблон и после выполнения запроса получаешь отчетную форму...так вот написать запрос у меня ума хватает, а прошерстить потом результаты и выбрать нужные, чтобы воткнуть в отчет и распечатать - уже нет))))...Дальше разберусь сам. Спасибо и на том!!!