Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Занести в массив кол-во дней в неделе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Занести в массив кол-во дней в неделе
lopuxi Дата: Среда, 14.10.2015, 15:10 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
У меня не получается занести в массив дни недели.
По сути моя задача такая.
У меня есть календарь, в нем я задаю период с 10 по 31. Январь 2015
В результате прямо в коде, в массив, хочу занести такие данные: 0, 2, 7, 7, 6, 0 и мой массив не запоминает эти данные, когда я к нему обращаюсь и хочу из него вытащить данные он пуст...

Что бы в дальнейшем их использовать и получить такую табличку:
1 неделя: 0 дней
2 нед : 2 дня
3 нед : 7 дней
4 нед : 7 дней
5 нед : 6 дней
6 нед : 0 дней

И что-то у меня не получается ни как.

Я прилагаю книгу. Можно запустить макрос 1, увидеть что макрос делает.
Я использовал найденный в интернете код создание обычного календаря и попытался из этого сделать то что мне нужно. Думал так будет проще. Но ковыряюсь в нем, ковыряюсь и что-то не получается сделать то что хочу.
К сообщению приложен файл: 1536395.xlsm (30.4 Kb)


О_о ...и так можно было?

Сообщение отредактировал lopuxi - Среда, 14.10.2015, 16:01
 
Ответить
СообщениеУ меня не получается занести в массив дни недели.
По сути моя задача такая.
У меня есть календарь, в нем я задаю период с 10 по 31. Январь 2015
В результате прямо в коде, в массив, хочу занести такие данные: 0, 2, 7, 7, 6, 0 и мой массив не запоминает эти данные, когда я к нему обращаюсь и хочу из него вытащить данные он пуст...

Что бы в дальнейшем их использовать и получить такую табличку:
1 неделя: 0 дней
2 нед : 2 дня
3 нед : 7 дней
4 нед : 7 дней
5 нед : 6 дней
6 нед : 0 дней

И что-то у меня не получается ни как.

Я прилагаю книгу. Можно запустить макрос 1, увидеть что макрос делает.
Я использовал найденный в интернете код создание обычного календаря и попытался из этого сделать то что мне нужно. Думал так будет проще. Но ковыряюсь в нем, ковыряюсь и что-то не получается сделать то что хочу.

Автор - lopuxi
Дата добавления - 14.10.2015 в 15:10
Manyasha Дата: Среда, 14.10.2015, 16:43 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
lopuxi, я не поняла, зачем Вам двумерный массив ArrWeeks.
Когда Вы записываете таким образом, то этот массив заполняется так:
[vba]
Код
i = 4 j = 1 ArrWeeks(i, j) = 4
i = 7 j = 2 ArrWeeks(i, j) = 7
i = 7 j = 3 ArrWeeks(i, j) = 7
i = 7 j = 4 ArrWeeks(i, j) = 7
i = 5 j = 5 ArrWeeks(i, j) = 5
[/vba]
Кстати, у Вас в последнем цикле лишняя i=i+1
А в столбец В Вы выводите
[vba]
Код
i = 0 j = 1 ArrWeeks(i, j) =
i = 0 j = 2 ArrWeeks(i, j) =
i = 0 j = 3 ArrWeeks(i, j) =
i = 0 j = 4 ArrWeeks(i, j) =
i = 0 j = 5 ArrWeeks(i, j) =
i = 0 j = 6 ArrWeeks(i, j) =
[/vba]
Пусто там везде, потому что Вы туда ничего не записали.
Проверяйте вариант с одномерным ArrWeeks.
К сообщению приложен файл: 1536396.xlsm (28.4 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеlopuxi, я не поняла, зачем Вам двумерный массив ArrWeeks.
Когда Вы записываете таким образом, то этот массив заполняется так:
[vba]
Код
i = 4 j = 1 ArrWeeks(i, j) = 4
i = 7 j = 2 ArrWeeks(i, j) = 7
i = 7 j = 3 ArrWeeks(i, j) = 7
i = 7 j = 4 ArrWeeks(i, j) = 7
i = 5 j = 5 ArrWeeks(i, j) = 5
[/vba]
Кстати, у Вас в последнем цикле лишняя i=i+1
А в столбец В Вы выводите
[vba]
Код
i = 0 j = 1 ArrWeeks(i, j) =
i = 0 j = 2 ArrWeeks(i, j) =
i = 0 j = 3 ArrWeeks(i, j) =
i = 0 j = 4 ArrWeeks(i, j) =
i = 0 j = 5 ArrWeeks(i, j) =
i = 0 j = 6 ArrWeeks(i, j) =
[/vba]
Пусто там везде, потому что Вы туда ничего не записали.
Проверяйте вариант с одномерным ArrWeeks.

Автор - Manyasha
Дата добавления - 14.10.2015 в 16:43
KSV Дата: Среда, 14.10.2015, 17:09 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Да, там везде сплошные "извращения"... :)
Номер месяца (по его названию) можно было получить проще, одной строкой, например так: [vba]
Код
NumMonth = (InStr("янв фев мар апр май июн июл авг сен окт ноя дек", LCase$(Left$(TargetMount, 3))) - 1) \ 4 + 1
[/vba]
а последний день месяца - так: [vba]
Код
dtStop = DateSerial(Year, NumMonth + 1, 0)
[/vba]
и не гонять в цикле бессмысленные проверки, типа: [vba]
Код
For iDay = 1 To 31
   If IsDate(Str(NumMonth) & "/" & CStr(iDay) & "/" & Val(Year)) Then ' проверка на существование даты
[/vba] но даже если хотите "проверить", то зачем же с 1, если можно было с 29? Или вы всерьез полагаете, что в каком-то месяце будет меньше 28 дней? :)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеДа, там везде сплошные "извращения"... :)
Номер месяца (по его названию) можно было получить проще, одной строкой, например так: [vba]
Код
NumMonth = (InStr("янв фев мар апр май июн июл авг сен окт ноя дек", LCase$(Left$(TargetMount, 3))) - 1) \ 4 + 1
[/vba]
а последний день месяца - так: [vba]
Код
dtStop = DateSerial(Year, NumMonth + 1, 0)
[/vba]
и не гонять в цикле бессмысленные проверки, типа: [vba]
Код
For iDay = 1 To 31
   If IsDate(Str(NumMonth) & "/" & CStr(iDay) & "/" & Val(Year)) Then ' проверка на существование даты
[/vba] но даже если хотите "проверить", то зачем же с 1, если можно было с 29? Или вы всерьез полагаете, что в каком-то месяце будет меньше 28 дней? :)

Автор - KSV
Дата добавления - 14.10.2015 в 17:09
lopuxi Дата: Среда, 14.10.2015, 18:43 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Всем, спасибо!!!


О_о ...и так можно было?
 
Ответить
СообщениеВсем, спасибо!!!

Автор - lopuxi
Дата добавления - 14.10.2015 в 18:43
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!