green_fr: (Default)
[personal profile] green_fr
«Шутка» для любителей Excel (смеяться грустно, после слова «L516»).
Знаете, есть там возможность дать какой-то области имя, и потом это имя использовать в формулах? В английском Excel это делается через Insert->Names.
Я только что потерял пол часа, пытаясь сделать то же самое через VBA.

Оказывается, когда я пишу Call ThisWorkbook.Names.Add("LIB_TYPE«, «=param!I1:K516»), написанный мною абсолютный адрес I1:K516 пересчитывается в относительный (относительно той ячейки, на которой стоит в это время курсор, например, если он стоит на A1, то пересчитанный адрес будет L1C9:L516C11), и именованная зона определяется с этим относительным адресом.
Таким образом, если я потом переставлю курсор на B1 и вызову LIB_TYPE, мне вернётся значение матрицы J1:L516! Я не могу представить себе, кому может понадобиться такое поведение именованных зон.

Решением является простановка долларов: Call ThisWorkbook.Names.Add("LIB_TYPE«, «=param!$I$1:$K$516»)

Дабы предупредить возможные комментарии «Переходи на Linux Open Office!», расскажу шутку из Open Office Calc. Предположим, у вас есть файл с двумя закладками: A и B. В закладке B есть формула, указывающая на ячейку X1 закладки A. Скопируем закладку B и поставим её (под именем C) третьей в этом же файле. Вместе со всеми данными закладки скопируется и формула, только теперь она будет указывать на ячейку X1 закладки B!

В данном случае я не то, что не понимаю, кому может пригодиться такое поведение. Я искренне верю, что писавшие Open Office люди просто проморгали этот баг. Надо бы как-нибудь сообщить о нём...

Date: 2010-11-19 04:34 pm (UTC)
From: [identity profile] fima.livejournal.com
Почему ты используешь excel? Точнее, почему на твоей работе нет специализированной программы, делающей рассчеты и проверяющей все данные? Нужели дешевле использовать программу общего назначения и тратить время работников на битву с VBA и поиск собственных опечаток в таблицах, которые excel (и openoffice) самостоятельно не может отловить?

Date: 2010-11-19 04:57 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Потому что расчёты нестандартные. То есть, либо под нас писать (на нас и так работает команда из 6 программеров, только на наши нужды, без учёта админов, стандартного для компании софта и т.п.), и какие-то вещи проще самим сделать. чем формулировать и ждать разработку программистами.

К тому же, есть какие-то задачи, которые делаешь каждый месяц, и каждый месяц они слегка отличаются друг от друга.

У меня вообще точка зрения, что Excel и ему подобные программы — это алфавит, грамотность нашего времени. если ты не умеешь работать с такими программами, ты можешь работать, но с той же эффективностью, как неграмотный человек может работать водителем автобуса (знание алфавита формально не требуется для работы). Теоретически можешь, но на практике — будешь регулярно терять время на каких-то простых вещах.

Date: 2010-11-19 05:15 pm (UTC)
From: [identity profile] fima.livejournal.com
Excel - это телега: четыре колеса и открытая платформа. На ней можно возить людей, мебель, автомобили, она может ездить и без асфальта (тянула бы лошадь), может проехать тысячи километров и стоит недорого (включая эксплуатацию). Но возить людей на ней небезопасно, мебель промокнет, если дождь пойдет, автомобили могут испачкаться, тысячу километров она будет ехать месяц. Да, удобно иметь один транспорт, на котором кое-как можно возить что угодно, но в итоге, я думаю, выйдет дороже.

Я не говорил писать под вас, я говорил о более специальной программе, с такой же возможностью программирования (хоть бы и на бейсике, чтобы было легче людей с excel'ля пересадить), телегу с бортами и крышей и с двигателем. Не все туда влезет, но вам совсем все и не надо.

Date: 2010-11-19 06:27 pm (UTC)
From: [identity profile] kalvado.livejournal.com
Как старый фанат спредшитов продолжу
.. впрочем, ехать или везти что-то на телеге все равно лучше и надежнее по сравнению с перетаскиванием мебели руками, или ожиданием изобретения антигравитации.
Подход "некогда чинить экскаватор, копать надо" плох когда копать много - но если надо кинуть две лопаты земли...

Date: 2010-11-20 10:30 am (UTC)

Date: 2010-11-20 10:30 am (UTC)
From: [identity profile] green-fr.livejournal.com
А например? Чтобы я лучше понял, о чём ты.
Если честно, мне уровень Excel очень даже подходит. Разумный компромисс: за 5 минут я на нём сделаю любую ерунду, при этом я уверен, что что бы я ни задумал сделать (ну, в разумных пределах — мне не нужно Quake на работе писать), это делается, и более того, в интернете есть тысячи описаний, как именно это сделать.
Например, если мне нужна какая-нибудь функция гамма, я уверен, что либо она есть в Excel, либо я её найду в сети. Функция не обязательно математическая (как мой пример с гаммой), любая — перевод номера колонки в его буквенное представление (вчера искал — нашёл за 2 минуты), pivot tables (ни разу сам не делал, вчера надо было поправить сделанную коллегой — за 5 минут в сети разобрался, как их через VBA править) и т.д. и т.п.

Date: 2010-11-22 01:01 pm (UTC)
From: [identity profile] fima.livejournal.com
Я не про набор нужных функций, а про то, что происходит еще до их применения. Сначала ты должен ввести данные или получить таблицы с данными от других. При вводе появляется много ошибок и эксель на это никак не реагирует (или реагирует странно), он не проверяет тип данных и результат на вменяемость.

Мне по работе присылают много таблиц, в таблицах указаны имена вирусов (речь идет о гриппе, т.е. биологических вирусах), даты их выделения, результаты измерений и еще куча всякой информации в крайне нестабильном формате (т.е., в принципе, нужен интеллект, чтобы нормализовать эти данные). Но я сейчас о датах. Дату можно ввести так, что эксель поймет, что это дата, а, если ошибиться (например, написать 13/13/01), то эксель молча преобразует ячейку в формат строки. Т.е. не будет совсем никакого предупреждения и человек так и не заметит своей ошибки. Дата - это лишь простейший пример, там много всяких возможностей для ошибок в других полях и люди, естественно, ошибаются.

Предполагаю, что и ты с подобным сталкиваешься.

Мы думали написать на VBA проверку данных, но быстро выяснилось, что различных проверок много и форматы часто меняются (например, появляется новый вид гриппа: калифорнийский прошлой весной) и по-хорошему надо уже держать сервер со всеми справочниками, а лучше осуществлять проверку прямо на сервере (вместо практически ежедневной рассылки обновлений). Но это уже другая история. Но суть в том, что эксель, на самом деле, не очень пригоден для ввода данных.

Date: 2010-11-22 01:17 pm (UTC)
From: [identity profile] green-fr.livejournal.com
У нас таких проблем практически не бывает, практически все файлы, с которыми мы работаем, мы же и делаем, либо они вылетают из какой-то системы, которая чётко определяет формат. То есть бывают, конечно грабли, когда одна дата в английском формате, а вторая — во французском, и 3 мая становится 5 марта, но это уже на автомате решается.

А так да — на предыдущей работе у нас была необходимость обмениваться данными с филиалами, и там люди вводили что попало. Пока мы не стали делать «фашистские» файлы, то есть контроль на всех ячейках, в которых разрешён ввод, все остальные ячейки тупо заблокированы.
Пи этом, очевидно, проводили кучу времени на телефоне, потому как не смогли сразу предусмотреть все варианты (классика: филиал отделился от одной группы, и тут же его купила другая, тоже у нас застрахованная).
Так что да, согласен, подходит очень плохо. Но при этом не вижу какой-то разумной замены.

Date: 2010-11-19 06:38 pm (UTC)
a_p: (Default)
From: [personal profile] a_p
не, алфавит и грамотность - это Си. Проще раз в сто, а функциональнее - бесконечно. Смайл!

Date: 2010-11-20 10:33 am (UTC)
From: [identity profile] green-fr.livejournal.com
Очень большой смайл :-/
Ты же понимаешь, я тоже в душе предпочитаю java. Но, во-первых, я трезво оцениваю способности к информатике моих коллег (продолжая аналогию, это уже не грамотность, а каллиграфия), а во-вторых, как задумаюсь, как на java сделать то самое представление данных, которое у меня в Excel by default — то есть растягиваемая по желанию таблица, выпадающие списки значений, форматирование одной кнопкой, графики на любой вкус. Это всё да, делается на java. И я даже, наверное, способен понять, как...

Date: 2010-11-20 07:28 pm (UTC)
a_p: (Default)
From: [personal profile] a_p
величина смайла относится ещё и к тому, для чего: для "правильных", "настоящих" вещей нужно Си, а для всяких картинок, графиков, презентаций и представлений - эсель, поуэрпойнт и т.п. (я ещё застал старых фортранщиков, из серии "настоящие программисты не пользуются Паскалем"). В общем, выражением лица я бы самоиронию передал, а на письме не очень выходит :)

Date: 2010-11-22 01:05 pm (UTC)
From: [identity profile] fima.livejournal.com
Если для "настоящих" вещей нужно Си, то для картинок - R. Excel и powerpoint - это для "сляпаем по-быстрому, так сойдет, тут все свои".

Date: 2010-11-22 01:22 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Это мне всё больше и больше напоминает диалоги с коллегой (Антони), который решил перевести документацию отдела с MS Word на LaTeX. Очень скоро мы поняли, что в теории он, конечно, прав. Но есть такое количество мелочей, о которых ты не задумываешься, и которые в Word делаются уже на автомате. Не (только) потому, что Word проще, просто и ты на нём уже 10 лет, и все коллеги, и весь мир (google), ты очень быстро находишь решение для любого вопроса.
В качестве примера — Антони очень долго возился над тем, как сделать титульную страницу с двумя картинками за заголовке.
Аналогично с графиками, картинками и презентациями. У всего есть свои преимущества.

Date: 2010-11-22 01:33 pm (UTC)
From: [identity profile] fima.livejournal.com
Тут мы в разных "галактиках" :-) Без R никуда, да и нагуглить решение для него не составляет труда. Документы все в pdf, каждый создает как может, мой шеф, например, генерит rtf какой-то своей древней программой, потом правит результат вордом и делает pdf, несколько странный путь, но он привык. Большая редкость, когда присылают что-то в ворде, обычно это означает, что от тебя ожидают комментариев, вставленных прямо в документ.

Date: 2010-11-22 01:34 pm (UTC)
a_p: (Default)
From: [personal profile] a_p
Я про Эр только краем уха слышал, но склонен с вами согласиться. Из-под этого Эра, кстати, Си не торчит?

Date: 2010-11-22 01:37 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Не C, а S, это же R, а не B!

Date: 2010-11-22 01:41 pm (UTC)
a_p: (Default)
From: [personal profile] a_p
да, многовато там переменных называется И и Жи. Но из-под Эр и Эс Си таки торчит (я уже проверил в сети интернет). Хотя по-русски вообще Эс и Си - одна буква.

Date: 2010-11-22 01:44 pm (UTC)
From: [identity profile] fima.livejournal.com
В смысле можно ли к нему расширение на Си написать? Я думаю, можно. Я сам с такой потребностью не сталкивался, у меня весьма дилетантские к R запросы: нарисовать кучу точек и провести несколько линий различных регрессий, с этим R и сам справляется прекрасно. А вот настоящие вирусологи у нас ставят всякие пакаджи и запускают R на кластере и это там неделями что-то считает, думаю, что без Си в этих пакаджах не обошлось.

Date: 2010-11-22 01:49 pm (UTC)
a_p: (Default)
From: [personal profile] a_p
понятно, мерси. Я уже и сам чуть-чуть почитал про него. Торчать, конечно, торчит, но не сильно и (вроде бы) где надо.
From: [identity profile] alex-mashin.livejournal.com
Это относительный адрес. Чтобы он стал абсолютным, и надо добавить доллары. Это поведение одинаково и в V‎BA и просто в Excel.

Date: 2010-11-20 10:35 am (UTC)
From: [identity profile] green-fr.livejournal.com
Да, конечно. Но я, как чайник, привык считать «стандартную» нотацию абсолютной, а R1C1 — относительной. Я понимаю, что я не прав, но это уже привычка. Если я вижу K12, мне сложно интуитивно понять, что это на самом деле не адрес ячейки, а сдвиг относительно того, что в этом K12 и не указано.

Date: 2010-11-20 10:33 am (UTC)
From: [identity profile] kalvado.livejournal.com
кстати из прочих изврашений: буквально вчера сделал в екселе трассировку лучей отражающихся от некоего странного зеркала.. изврат - но похоже получается!

Date: 2010-11-20 10:37 am (UTC)
From: [identity profile] green-fr.livejournal.com
Ну вот это как раз я не совсем понимаю, зачем делать на Excel... Java/MatLab выглядят гораздо проще для таких задач.

Date: 2010-11-20 10:40 am (UTC)
From: [identity profile] kalvado.livejournal.com
Ну не факт. пол-часа - это только форму в малабе отрисовать
задал зеркало поточечно, плюс производную
самое сложное - формализовать "угол падения = углу отражения" в терминах y=ax+b
Луч прекрасно строится по 3 точкам - точка на зеркале, точка далеко справа (прямой их эксель сам), и точка слева..

Date: 2010-11-20 10:45 am (UTC)
From: [identity profile] green-fr.livejournal.com
Первая фраза звучит как «пол часа — это только искать, где у меня там диски с MatLab’ом». Форму ввода данных сделать на MatLab’е (если ты это регулярно делаешь) — вопрос пары минут. То есть дольше, конечно, чем на Excel, но соизмеримо.

Date: 2010-11-20 10:48 am (UTC)
From: [identity profile] kalvado.livejournal.com
Скорее так - сидел делал на нетбуке с атомом н270.. ПОка там матлаб запустится.. :)
У меня была некая прога, которая считала на не очень сильном компе дифуры - эволюция системы со временем.
Я с тех пор привык, что матлаб запустил = перерыв на чай

Profile

green_fr: (Default)
green_fr

April 2026

S M T W T F S
    1 2 34
56 7 8 9 1011
12131415161718
19202122232425
2627282930  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 10th, 2026 05:51 pm
Powered by Dreamwidth Studios