<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-883779608194693640</id><updated>2011-04-21T15:40:46.201-07:00</updated><category term='формы'/><category term='VBA'/><category term='Немного методологии'/><category term='функции'/><category term='работа со списками'/><category term='PowerShell'/><category term='книги'/><category term='Фриланс-сайты'/><category term='Outlook'/><category term='Excel'/><title type='text'>Office, Windows and other big issues</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pwrshell.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/883779608194693640/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pwrshell.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>hvd</name><uri>http://www.blogger.com/profile/05015451227484458655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-883779608194693640.post-5032248815170118468</id><published>2008-10-25T22:32:00.001-07:00</published><updated>2008-10-25T22:44:09.538-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Немного методологии'/><category scheme='http://www.blogger.com/atom/ns#' term='Фриланс-сайты'/><title type='text'>Где брать примеры?</title><content type='html'>Мне нравится решать небольшие, но интересные задачки на использование макросов и форм в MS Office. А вот вызумывать я их не люблю. Проще работать с готовыми. Встает вопрос, где же их брать? Где, так сказать, рыбы много?&lt;br /&gt;Думаем... Думаем...&lt;br /&gt;Ну да, там где устроен рыборазводный комбинат. На сайтах для программистов-фрилансеров.&lt;br /&gt;Ну так я пошел и зарегистрировался сразу на трех. На &lt;a href="http://www.codesnap.com"&gt;www.codesnap.com&lt;/a&gt; (совсем молодой сайт, заказов мало - но пусть будет), на &lt;a href="http://www.odesk.com"&gt;www.odesk.com&lt;/a&gt; (сайт интересный - создатели продвигают свою систему учета рабочего времени фрилансеров, чтобы заказчики видели, за какие часы они платят), ну и на патриархе всех фрилансерских сайтов - &lt;a href="www.elance.com"&gt;www.elance.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Сайты &lt;em&gt;регулярно доставляют&lt;/em&gt; задачки. Так что будет о чем писать.&lt;br /&gt;В качестве приятного дополнения - за эти задачки еще можно и денег получить.&lt;br /&gt;&lt;br /&gt;Положил туда в портфолио предыдущие работы.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/883779608194693640-5032248815170118468?l=pwrshell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pwrshell.blogspot.com/feeds/5032248815170118468/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=883779608194693640&amp;postID=5032248815170118468' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/883779608194693640/posts/default/5032248815170118468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/883779608194693640/posts/default/5032248815170118468'/><link rel='alternate' type='text/html' href='http://pwrshell.blogspot.com/2008/10/blog-post_25.html' title='Где брать примеры?'/><author><name>hvd</name><uri>http://www.blogger.com/profile/05015451227484458655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-883779608194693640.post-7066776650568278596</id><published>2008-10-22T14:49:00.000-07:00</published><updated>2008-10-22T15:01:09.609-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='книги'/><title type='text'>PowerShell - литература на русском языке</title><content type='html'>Некоторое время назад я перевел книгу Франка Коха (Frank Koch) "Windows PowerShell  - An introduction to scripting technologies for people with no real background knowledge", выложенную в открытый доступ на сайте Microsoft.&lt;br /&gt;Поскольку я стараюсь соблюдать авторские права, то обратился к &lt;a href="http://blogs.technet.com/abeshkov/"&gt;Андрею, Бешкову&lt;/a&gt;, который курирует в русском Microsoft сообщество  PowerShell, с вопросом - а как бы мне получить разрешение и выложить русский вариант книги?&lt;br /&gt;Он откликнулся почти немедленно, сообщив, что Microsoft и автор книги, скорее всего, будут рады разместить ее у себя.&lt;br /&gt;Так что уже скоро русскоязычных книг по PowerShell станет вдвое больше. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/883779608194693640-7066776650568278596?l=pwrshell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pwrshell.blogspot.com/feeds/7066776650568278596/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=883779608194693640&amp;postID=7066776650568278596' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/883779608194693640/posts/default/7066776650568278596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/883779608194693640/posts/default/7066776650568278596'/><link rel='alternate' type='text/html' href='http://pwrshell.blogspot.com/2008/10/powershell.html' title='PowerShell - литература на русском языке'/><author><name>hvd</name><uri>http://www.blogger.com/profile/05015451227484458655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-883779608194693640.post-3832464916789612110</id><published>2008-10-22T14:46:00.000-07:00</published><updated>2008-10-22T15:04:01.711-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='формы'/><category scheme='http://www.blogger.com/atom/ns#' term='Outlook'/><title type='text'>Вспоминать – не учить.</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Говоря честно-откровенно, только между нами – последний раз я программировал за деньги лет шесть назад. Но если уж взялся писать о технологиях, грешно жить воспоминаниями, о том, каким был мир в мое время, верно?&lt;br /&gt;Хорошая задачка подоспела как раз ко времени. Кому-то потребовалась особенная форма для создания писем в Outlook. Я сказал, что посмотрю, и посмотрев, согласился. Поскольку никто больше не захотел даже смотреть, работа перешла ко мне.&lt;br /&gt;Надо сказать, что я крепко успел забыть программирование в Office. Только на то, чтобы найти кнопку режима проектирования, у меня ушло четыре часа. Без преувеличения скажу, что это было самой трудной частью задачи. Второй по сложности стала ошибка VBA в интерпретации цикла For…Next. Интерпретатор ругался на поставленный Next, не соглашаясь признавать его валидным концом цикла. Пришлось заменить цикл на Do-While.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p align="center"&gt;&lt;a href="http://2.bp.blogspot.com/_ZRbNwI08eCc/SP-ftaxzXnI/AAAAAAAAAAs/1KLIAchQ8MI/s1600-h/Clipboard01.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5260098492423167602" style="CURSOR: hand" alt="Вот такая форма - простая, но со вкусом" src="http://2.bp.blogspot.com/_ZRbNwI08eCc/SP-ftaxzXnI/AAAAAAAAAAs/1KLIAchQ8MI/s400/Clipboard01.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_ZRbNwI08eCc/SP-femU13uI/AAAAAAAAAAk/KQiLr0HnIj0/s1600-h/Clipboard01.png"&gt;&lt;/a&gt;&lt;br /&gt;Вообще по сравнению с другими программами Office объектная модель Outlook – это что-то особенное. «Нечеловеческая музыка» (с). Но часов за двенадцать я создал довольно аккуратную, и главное рабочую форму. Пара часов на отдельную кнопку (пользовательскую форму в Outlook нельзя назначить формой по умолчанию, для использования ее каждый раз приходится вытаскивать из хранилища) – и работа принята. Сказанные при этом комплименты меня очень порадовали. Искренние и добрые слова придают сил для дальнейшей работы. Ну и оплата очень способствует, да. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/883779608194693640-3832464916789612110?l=pwrshell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pwrshell.blogspot.com/feeds/3832464916789612110/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=883779608194693640&amp;postID=3832464916789612110' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/883779608194693640/posts/default/3832464916789612110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/883779608194693640/posts/default/3832464916789612110'/><link rel='alternate' type='text/html' href='http://pwrshell.blogspot.com/2008/10/blog-post.html' title='Вспоминать – не учить.'/><author><name>hvd</name><uri>http://www.blogger.com/profile/05015451227484458655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZRbNwI08eCc/SP-ftaxzXnI/AAAAAAAAAAs/1KLIAchQ8MI/s72-c/Clipboard01.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-883779608194693640.post-7552322458264176746</id><published>2008-10-12T15:21:00.000-07:00</published><updated>2008-10-12T16:11:54.814-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='работа со списками'/><category scheme='http://www.blogger.com/atom/ns#' term='функции'/><title type='text'>Что нельзя сделать функциями Excel?</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Вчера мне предложили решить небольшую задачку для Excel. Вот она:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Имеется таблица:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_ZRbNwI08eCc/SPJ5qH9mj7I/AAAAAAAAAAM/RRcnbMsq_gc/s1600-h/Excel_Answer.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_ZRbNwI08eCc/SPJ59OB1Z0I/AAAAAAAAAAU/sFgQIeVjZYg/s1600-h/Excel_Answer.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5256397807739561794" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_ZRbNwI08eCc/SPJ59OB1Z0I/AAAAAAAAAAU/sFgQIeVjZYg/s320/Excel_Answer.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;В ячейку X1 следует поместить наиболее позднее значение из столбца G по указанной дате из B, или "последнее" значение из столбца G.&lt;br /&gt;Просто использовать функцию ВПР нельзя, поскольку дате в B может соответствовать пустое поле в G (желтые строки).&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Кроме того, было введено серьезное ограничение: таблица будет просматриваться на коммуникаторе, поэтому использовать VBА или вынести нужный код в отдельную .dll нельзя. Все, что у меня есть - это функции в ячейке.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Обдумывание условий показало, что они неполны.&lt;/span&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Непонятно, откуда должна браться дата для поиска. Функции Excel не распознают ни положения курсора, ни выделения ячеек. Я решил, что дата для поиска будет помещаться в ячейку W1.&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;"Последнее" значение в столбце G тоже может оказаться пустым. На этот случай тоже надо было предусмотреть какие-то действия&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;У меня уже сложился отличный алгоритм. Всего-то делов - начать поиск с последней строки и продвигаться вверх, фильтруя пустые строки. Так, а какая функция это умеет?...&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;А никакая. Оп-па.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Честно скажу, не ожидал. Но факт есть факт - все функции Excel для поиска в списке могут искать только по возрастающему списку. Они прекращают работу после первого найденного значения - совсем хорошо. Ни циклов, ни рекурсии, ни координат активной ячейки или выделения. Прекрасно.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Ладно, а что же я могу? Могу узнать, существует ли указанная дата. Могу найти значение по дате, хотя бы первое. Могу проверить, не пустое ли оно. Могу вывести результат в X1. Ну так сделаю хотя бы это. Вот что в итоге оказалось в ячейке X1:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;=ЕСЛИ(НЕ(ЕНД(ВПР($W$1;$B$1:$G$4096;6;ЛОЖЬ)+ЕПУСТО(ВПР($W$1;$B$1:$G$4096;6;ЛОЖЬ)));ВПР($W$1;$B$1:$G$4096;6;ЛОЖЬ);ЕСЛИ(НЕ(ЕПУСТО(ИНДЕКС($G$1:$G$4096;СЧЕТЗ($В$1:$В$4096))));ИНДЕКС($G$1:$G$4096;СЧЕТЗ($B$1:$B$4096));"---"))&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Этот текст функции можно вставлять в ячейку, но понять его нельзя. :) Давайте разберемся, что он делает:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;//Если дата, указанная в ячейке W1, имеется в столбце B, и первое значение, соответствующее этой дате, в столбце G - непустое, то&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;=ЕСЛИ(НЕ(ЕНД(ВПР($W$1;$B$1:$G$4096;6;ЛОЖЬ)+ЕПУСТО(ВПР($W$1;$B$1:$G$4096;6;ЛОЖЬ)));&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;// Вывести это значение&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;ВПР($W$1;$B$1:$G$4096;6;ЛОЖЬ);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;// Иначе, если последнее значение в столбце G непустое, то&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;ЕСЛИ(НЕ(ЕПУСТО(ИНДЕКС($G$1:$G$4096;СЧЕТЗ($В$1:$В$4096))));&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;// Вывести его, иначе вывести прочерк&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;ИНДЕКС($G$1:$G$4096;СЧЕТЗ($B$1:$B$4096));"---"))&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Вот и все, что я смог. Если у вас есть, что сказать по этому поводу - добро пожаловать в комментарии.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/883779608194693640-7552322458264176746?l=pwrshell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pwrshell.blogspot.com/feeds/7552322458264176746/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=883779608194693640&amp;postID=7552322458264176746' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/883779608194693640/posts/default/7552322458264176746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/883779608194693640/posts/default/7552322458264176746'/><link rel='alternate' type='text/html' href='http://pwrshell.blogspot.com/2008/10/excel.html' title='Что нельзя сделать функциями Excel?'/><author><name>hvd</name><uri>http://www.blogger.com/profile/05015451227484458655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZRbNwI08eCc/SPJ59OB1Z0I/AAAAAAAAAAU/sFgQIeVjZYg/s72-c/Excel_Answer.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
