Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2010, 02:00   #1
yursanch
Пользователь
 
Регистрация: 13.04.2010
Сообщений: 17
По умолчанию Построение "шахматки" в Excel

Всем привет! Такая вот задача: Есть перечень работ со сроком начала и окончания. Срок начала может совпадать с началом месяца, а может и не совпадать. Срок окончания, как правило - последний день месяца. Нужно построить по-месячную шахматку с условием: Если анализируемый месяц совпадает с первым, пусть даже и не полным, то в соотв. ячейку ставим 2, если с последним, то 0, если промежуточный - то 1. И закрашиваем, скажем зеленым. Если месяц не попадает во временной интервал - ставим 0 и заливаем желтым.

Проблема, собственно, вот в чем: Если первый месяц не полный -например 15.04.2010 - он у меня не анализируется. Почему: когда я присваиваю переменной значение месяца из ячейки шахматки - апр.2010 - переменная становится 01.04.2010. И соответственно, условие проверки не выполняется. Че-то никак не соображу, как это вылечить, но чувствую, что ответ где-то на поверхности.
Подскажите пожалуйста.
Файл во вложении.
Вложения
Тип файла: zip primer.zip (9.3 Кб, 39 просмотров)
yursanch вне форума Ответить с цитированием
Старый 13.05.2010, 10:35   #2
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

Поставь в макросе значения Date_on - 1 число месяца, а Date_of - последнее.
Например так:
Код:
    s = ws1.Cells(loc, 1).Value
    Data_on = DateSerial(Year(s), Month(s), 1)
Ведь грубо говоря именно число не играет никакой роли.
Или второй вариант раздели переменные и сравнивай отдельно месяц и год.
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 13.05.2010, 11:07   #3
yursanch
Пользователь
 
Регистрация: 13.04.2010
Сообщений: 17
По умолчанию

mchip, спасибо за подсказку. Я сам тут накрутил такой вариант:
If (Day(Data_on)) > 1 Then Data_on = DateAdd("d", (Day(Data_on) - 1) * (-1), Data_on)
Но Ваш намного проще.
yursanch вне форума Ответить с цитированием
Старый 13.05.2010, 11:39   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

посмотрите на такую шахматку.
вместо 01.05.2010 можно указать первое число другого месяца - получите шахматку на соответствующий месяц.

Обратите внимание формула для 5-й строки работ отличается от 4-х предыдущих - в ней изменен порядок проверки для случая, когда работы начинаются и заканчиваются одним месяцем для 4-й строки пишется 2, для 5-й - 0. Т.е. можно по всему файлу использовать формулу с 4-й строки, а можно из 5-й.
Вложения
Тип файла: rar Книга330.rar (5.1 Кб, 54 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
настроить при открытии Excel 2003 в окошке "Тип файлов" вывод пункта "Все файлы (*.*)" по умолчанию? Unior Microsoft Office Excel 2 01.03.2009 02:42
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03