2016-02-04 5 views
0

Я искал и не нашел результатов, которые помогут мне с этим конкретным запросом.Использование VBA в Excel для назначения диапазонов названий на дату

Я хочу использовать VBA для создания нового поля в электронной таблице, которая назначает заголовок на основе диапазона дат.

У меня есть таблица с датами от 6 октября по вчерашний день, и я хочу иметь возможность создать новый столбец для указания цикла продаж каждой строки в Excel.

Я не могу понять, как установить код для проверки и назначения дат между циклами продаж.

Для справки, это то, что я прямо сейчас, что работает хорошо, если есть только две даты для работы с:

Sub salescycle_date() 

Dim msheet As Worksheet 
Dim sc1 As Date 
Dim sc2 As Date 
Dim sc3 As Date 

Set msheet = ActiveSheet 

sc1 = "06/10/2015" 
sc2 = "24/11/2015" 
sc3 = "24/01/2016" 

Range("AJ1").Select 
ActiveCell = "sales_cycle" 

For i = 6 To msheet.UsedRange.Rows.Count 
    Select Case msheet.Cells(i, 33) 
    Case Is < sc2 
    msheet.Cells(i, 36) = "Sales Cycle 1" 
    Case Is >= sc2 
    msheet.Cells(i, 36) = "Sales Cycle 2" 
    End Select 

    Next 
    MsgBox "done!" 

End Sub 

Любые советы о том, как установить код, чтобы он мог распознать цикл продаж 2 как находящийся между началом SC2 и SC3, а затем SC3 в качестве отдельной опции?

+0

Каков результат, который вы получаете, и каков результат, который вы должны получить? – Vegard

+0

Результатом, который я получаю, являются все даты до 24/11/2015, отмеченные как «Цикл продаж 1» и датируются 24-м и далее (по вчера), обозначаются как «Цикл продаж 2». Однако я не знаю (и не могу найти в Интернете) способ установить даты между 24/11/2015 и 24/01/2016 как «Sales Cycle 2» и даты с 24/01/2016 вчера как «цикл продаж 3». –

ответ

0

Вы пробовали что-то вроде этого:

Sub salescycle_date() 

Dim msheet As Worksheet 
Dim sc1 As Date 
Dim sc2 As Date 
Dim sc3 As Date 

Set msheet = ActiveSheet 

sc1 = "06/10/2015" 
sc2 = "24/11/2015" 
sc3 = "24/01/2016" 

Range("B1").Select 
ActiveCell = "sales_cycle" 

For i = 2 To msheet.UsedRange.Rows.Count 
    Select Case msheet.Cells(i, 1) 
    Case Is >= sc3 
    msheet.Cells(i, 2) = "Sales Cycle 3" 
    GoTo ExitSelect 
    Case Is >= sc2 
    msheet.Cells(i, 2) = "Sales Cycle 2" 
    Case Is < sc2 
    msheet.Cells(i, 2) = "Sales Cycle 1" 
    End Select 

ExitSelect: 
    Next 
    MsgBox "done!" 

End Sub 

Здесь я отменил условие некоторых случаев с дополнительным заявлением GoTo.

+0

Спасибо @Bhagyesh! Это работает отлично. Если я хочу обновить код для будущих циклов продаж, добавлю ли я дополнительный оператор GoTo? –

+0

Ничего, я просто попробовал, и это сработало отлично. Спасибо за вашу помощь. –

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