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

Вход

Регистрация

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

 

= Мир MS Excel/Поправить макрос для разделения дат - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поправить макрос для разделения дат (Макросы/Sub)
Поправить макрос для разделения дат
Bear Дата: Пятница, 23.06.2017, 09:57 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

2013
Здравствуйте.
В столбце А содержатся даты, вида
1-2 июня 2017 г.
23 июн 2017 г.
30 июня - 2 июля 2017 г.
Необходимо, чтобы в столбец B записовалось
01.06.17
23.06.17
30.06.17
А в столбец С соотвественно
02.06.17
23.06.17
02.07.17
Помогите поправить код, чтобы разделять даты вида
30 июня - 2 июля 2017 г.
Для других дат код работает.
[vba]
Код

Sub Дата()
Dim a()
Dim i&
Dim sp_date, sp_day
Dim d1$, d2$, m$, y$
'-------------------------
Application.ScreenUpdating = False
With ActiveSheet
a = .UsedRange.Value
For i = 1 To UBound(a)
If a(i, 1) <> "" Then
sp_date = Split(a(i, 1), " ")
sp_day = Split(sp_date(0), "-")
d1 = sp_day(0)
d2 = d1
If UBound(sp_day) > 0 Then d2 = sp_day(1)
m = sp_date(1)
y = sp_date(2)
.Cells(i, 2) = CDate(d1 & " " & m & " " & y)
.Cells(i, 3) = CDate(d2 & " " & m & " " & y)
End If
Next
End With
Application.ScreenUpdating = True
End Sub
[/vba]


Сообщение отредактировал Bear - Пятница, 23.06.2017, 14:09
 
Ответить
СообщениеЗдравствуйте.
В столбце А содержатся даты, вида
1-2 июня 2017 г.
23 июн 2017 г.
30 июня - 2 июля 2017 г.
Необходимо, чтобы в столбец B записовалось
01.06.17
23.06.17
30.06.17
А в столбец С соотвественно
02.06.17
23.06.17
02.07.17
Помогите поправить код, чтобы разделять даты вида
30 июня - 2 июля 2017 г.
Для других дат код работает.
[vba]
Код

Sub Дата()
Dim a()
Dim i&
Dim sp_date, sp_day
Dim d1$, d2$, m$, y$
'-------------------------
Application.ScreenUpdating = False
With ActiveSheet
a = .UsedRange.Value
For i = 1 To UBound(a)
If a(i, 1) <> "" Then
sp_date = Split(a(i, 1), " ")
sp_day = Split(sp_date(0), "-")
d1 = sp_day(0)
d2 = d1
If UBound(sp_day) > 0 Then d2 = sp_day(1)
m = sp_date(1)
y = sp_date(2)
.Cells(i, 2) = CDate(d1 & " " & m & " " & y)
.Cells(i, 3) = CDate(d2 & " " & m & " " & y)
End If
Next
End With
Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Bear
Дата добавления - 23.06.2017 в 09:57
_Boroda_ Дата: Пятница, 23.06.2017, 16:00 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 10898
Репутация: 4495 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Такой вариант


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТакой вариант

Автор - _Boroda_
Дата добавления - 23.06.2017 в 16:00
wild_pig Дата: Пятница, 23.06.2017, 20:29 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 485
Репутация: 91 ±
Замечаний: 0% ±

2003, 2013
 
Ответить
Сообщение[offtop]Знакомый макрос[/offtop]

Автор - wild_pig
Дата добавления - 23.06.2017 в 20:29
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поправить макрос для разделения дат (Макросы/Sub)
Страница 1 из 11
Поиск:

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