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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.06.2008, 12:28   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Как из Даты взять первое число?

Как из Даты взять первое число?

В ячейке А(xxx) стоит дата "30(31).06.08"
Есть выражение, используется конечное число даты
For xxx = 1 To 30(31)
Как "30(31)" заменить, на значение из яч. А(ххх)?
valerij вне форума
Старый 15.06.2008, 13:53   #2
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Код:
Sub Макрос1()
Dim i As Long
Dim xxx As Long
    i = CLng(Left(Range("A1"), 2))
    For xxx = 1 To i
    'цикл
    Next
End Sub
Pavel55 вне форума
Старый 15.06.2008, 15:36   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Pavel55 Посмотреть сообщение
i = CLng(Left(Range("A1"), 2))
Понял, Спасибо!
А вот второй вариант, не знаю даже как сформулировать?
В выражении
For xx = 1 To i
Где i = Автоматом ставит последний день месяца, а месяц определяется именем файла(Май.xls, Июнь.xls, .....)
valerij вне форума
Старый 15.06.2008, 15:58   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

В справке по функциям Excel есть такое:
Цитата:
КОНМЕСЯЦА EOMONTH
Возвращает числовой формат последнего дня месяца, отстоящего на указанное количество месяцев от даты нач_дата. Функция КОНМЕСЯЦА используется для вычисления даты вступления в силу или даты платежа, которая приходится на конец месяца.

Если эта функция недоступна, следует установить надстройку Пакет Анализа, а затем включить его с помощью диспетчера надстроек.

Синтаксис

КОНМЕСЯЦА(нач_дата; число_месяцев)

Нач_дата - это начальная дата в числовом формате.

Число_месяцев - это число месяцев до или после нач_дата. Положительное значение аргумента число_месяцев означает будущую дату; отрицательное значение означает прошедшую дату.

Замечания

· Если нач_дата не является допустимой датой в числовом формате, то КОНМЕСЯЦА возвращает значение ошибки #ЧИСЛО!

· Если число_месяцев не целое, то производится усечение.

· Если нач_дата плюс число_месяцев дают недопустимую дату в числовом формате, то КОНМЕСЯЦА возвращает значение ошибки #ЧИСЛО!

Примеры

КОНМЕСЯЦА(ДАТАЗНАЧ("01.01.93"); 1) равняется 34028 или 28.2.93

КОНМЕСЯЦА(ДАТАЗНАЧ("01.01.93"); -1) равняется 33969 или 31.12.92
мож подойдет...
а может проще сразу указать в коде последний день каждого месяца
а потом If Then
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 15.06.2008 в 16:00.
VictorM вне форума
Старый 15.06.2008, 19:39   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
а может проще сразу указать в коде последний день каждого месяца а потом If Then
Наверное!

Не могу найти, но где то(как в вопросе) так делалось!
valerij вне форума
Старый 15.06.2008, 19:55   #6
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

можно сделать где-то так:
Код:
Sub КолДней()
    МСинхр = ActiveWorkbook.Name
    Select Case МСинхр
    Case "Январь"
    sdv = 31
    Case "Февраль"
    sdv = 28 'здесь конечно разобраться бы
    Case "Март"
    sdv = 31
    Case "Апрель"
    sdv = 30
    Case "Май"
    sdv = 31
    Case "Июнь"
    sdv = 30
    Case "Июль"
    sdv = 31
    Case "Август"
    sdv = 31
    Case "Сентябрь"
    sdv = 30
    Case "Октябрь"
    sdv = 31
    Case "Ноябрь"
    sdv = 30
    Case "Декабрь"
    sdv = 31
    End Select
 End Sub
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 15.06.2008, 20:50   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
можно сделать где-то так:
Можно, но все это есть в самой винде....
Вобщем, пока сделал через If
valerij вне форума
Старый 16.06.2008, 13:04   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

эта функция вернет последний день месяца для указанной даты.
Код:
Function LastDay(d As Date) As Integer
  LastDay = Day(DateSerial(Year(d), Month(d) + 1, 1) - 1)
End Function
почему в качестве параметра должна идти дата, а не просто номер месяца? потому, не во всех февралях 28 дней.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 16.06.2008, 13:24   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

IgorGO. Предложенная Вами функция широко и успешно применяется. Но у автора вопрос в том, что
Цитата:
месяц определяется именем файла(Май.xls, Июнь.xls, .....)
(см пост № 3). Это текст, который нужно преобразовать в число, соответствующее последнему дню этого (имя файла) месяцу.
Интересно такое решение: В программном модуле в каждом файле объявить глобальную константу, соответствующую количеству дней в этом (имя файла) месяце, например, для января - Public Const LastDay = 31, для февраля - Public Const LastDay = 28 и т.д. А затем, в макросе обработки, использовать это значение. Если же одновременно может быть открыто несколько исходных файлов, то тогда можно использовать глобальную переменную, которая хранится, например, в какой-нибудь ячейке каждого файла. Еще брать коррекцию високосного года по системной дате.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 17.06.2008, 05:23   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Пришло в голову еще одно (красивое) решение.
Чтобы воспользоваться формулой вычисления последнего дня месяца по дате, сформируем эту дату самостоятельно. Для этого: берем имя файла, заменяем ".xls" на пробел и сцепляем с текущим годом. Полученную текстовую строку преобразовываем в дату. Затем используем в формуле. Получится так:
Код:
Dim d As Date, LastDay As Integer
    d = CDate(Replace(ThisWorkbook.Name, ".xls", " ") & Year(Date))
    LastDay = Day(DateSerial(Year(d), Month(d) + 1, 1) - 1)
Где LastDay - последний день месяца, совпадающего с именем файла, текущего года (это для февраля).
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56
Ввести число N и определить делится ли оно без остатка на число M (VBA) Ivanich Microsoft Office Excel 7 24.04.2008 19:43
Число N, заменить одну из его цифр, чтобы получилось число, max близкое к некоторой степени двойки urgu_st Помощь студентам 13 23.10.2007 09:14
Преобразование даты в вещественное число nova-alex Общие вопросы Delphi 5 03.05.2007 10:51
ООП мое первое начало cross Общие вопросы Delphi 1 18.03.2007 21:58