2015-02-13 2 views
0

На следующем рисунке листа Excel заголовок первого столбца, а затем каждого седьмого столбца после этого содержит месяц и год.Создание точных дат в Excel VBA путем ввода только дня

my project

Я пытаюсь думать о какой-то код, который бы сделать ввод полных дат под этими заголовками быстрее. Поскольку месяц и год уже присутствуют, я думаю, что должен быть способ войти в этот день и получить все это. Например, если «21» было введено в ячейку A26, это приведет к «2/21/2015».

У кого-нибудь есть идея, как я могу получить этот выход?

Редактировать: Благодаря полезным ответам на этом форуме я выяснил, как это сделать. Вот код для моего готового продукта, в случае, если кто-то хочет сделать что-то подобное:

Private Sub Worksheet_change(ByVal Selection As Range) 

Set Sel = Selection 
If Sel.Count > 1 Then 
Exit Sub 
End If 

If (Sel.Column - 1) Mod 7 = 0 Or Sel.Column = 1 Then 

«В моем случае, дата столбцы всегда следуют образцу 1, 8, 15 ...

If Sel.Value > 31 Or Sel.Value = "" Then 
Exit Sub 
Else 
Sel.NumberFormat = "General" 
Sel.Value = Left(Cells(1, Sel.Column), InStr(Cells(1, Sel.Column), ",") - 1) & " " & _ 
    Sel.Value & Right(Cells(1, Sel.Column), 6) 

    Selection.NumberFormat = "m/d/yyyy" 
End If 
End If 

End Sub 
+0

- это месяц/год в формате A1 или форматированная дата? – Calum

+0

Просто заполните (где A1 содержит индекс даты на 1 февраля 2015 г.). – pnuts

ответ

1

Как о вводе номеров в день, выбирая диапазон, в котором вводится эти числа дня, и работают ниже:

Sub Add_month_year() 
    Dim c As Range 
    For Each c In Selection 
    c = Left(Cells(1, c.Column), InStr(Cells(1, c.Column), ",") - 1) & " " & _ 
    c.Value & Right(Cells(1, c.Column), 6) 
    Next 
End Sub 

Это должно возвратить полные даты в коде даты, которые вы можете затем формат, как йо u см. подходящий.

+0

Спасибо! Я думаю, что это именно то, что мне нужно. Я буду придумывать что-то для запуска этого кода всякий раз, когда число вводится в столбец с заголовком даты. –

+0

Звучит неплохо. Эта ссылка объясняет один способ, которым вы можете установить это: [Запустить макрос при изменении ячеек] (http://support.microsoft.com/kb/213612) –

+0

Nice; это выглядит очень полезно. –

Смежные вопросы