2016-01-10 3 views
-1

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

У меня огромный лист, содержащий множество данных. В столбце A у меня есть дата и время. Я хотел бы иметь код VBA, который делает несколько действий.

1) Вставьте столбец B рядом с столбцом A, указывающим название дня недели. Например, если дата в столбце A равна 10 января 2016 года 8:30, то столбец B будет иметь «воскресенье»

2) Затем код VBA для фильтрации этого листа на основе столбца B. Например, с учетом пользовательского ввода в определенный день (пример пятницы), автофильтр будет фильтроваться на 4 дня вперед (пятница, суббота, воскресенье, понедельник).

3) Результат автофильтра затем копируется на новый чистый лист.

4) На новом листе я хочу, чтобы vba удаляла любые данные строки за тот же день, определенный пользователем (пример в пятницу), который имеет время меньше, чем определенное пользователем время (пример 8:00) в столбце A. Наконец, сдвигая ячейки вверх, чтобы удалить пустые строки.

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

Здесь код попытались на часть 1

Sub sbInsertingColumns() 
Worksheets("Imported").Activate 
'Inserting a Column at Column B 
If Range("B1").Value = "Weekday" Then 
Range("B1").Value = "Weekday1" 
Else 
Range("B1").EntireColumn.Insert 
Range("B1").Value = "Weekday" 
Worksheets("Imported").Range("B2").Formula = "=choose(weekday(A2),""Sunday"",""Monday"",""Tuesday"",""Wednesday"",""Thursday"",""Friday"",""Saturday"")" 
LastRow = Range("A" & Rows.Count).End(xlUp).Row 
Range("B2").Copy Range("B2:B" & LastRow) 
End If 
End Sub 
+0

Вы можете начать использовать функцию «Werkday», указанную в ссылке ниже. http://www.techonthenet.com/excel/formulas/weekday.php – Maertin

+0

Я попробовал Range («B2»). Формула = «= выберите (будний день (a1),« воскресенье »,« понедельник »,« вторник », «Среда», «Четверг», «Пятница», «Суббота») «но это не сработало – exlover

ответ

1

Это только чтобы вы начали.

Если A2 содержит подлинную дату Excel/время, то в В1 входят:

=TEXT(A2,"dddd") 

enter image description here

Если вы хотите VBA макрос для выполнения проекта, запуск включив макрокорректор и выполнив задачу вручную.

У вас будет макрос, который вы можете начать оптимизировать и обобщать.

+0

Теперь мне удалось установить код VBA: 1) Вставить столбец B рядом с столбцом A, который дает имя дня недели. Например, если дата в столбце A равна 10 января 2016 года 8:30, то столбец B будет иметь «воскресенье» Теперь мне нужна помощь, чтобы попытаться сохранить оставшиеся 2,3,4 вопроса в моем исходном сообщении – exlover

+0

Sub sbInsertingColumns() Рабочие листы ("Импортные"). Активируйте «Вставка столбца в колонке B Если Range ("B1"). Value = "Будни" Тогда Range ("B1"). Value = "WEEKDAY1" Else Range (" B1 ") .EntireColumn.Insert Диапазон (« B1 »). Значение =« День недели » Рабочие листы (« Импортировано »). Диапазон (« B2 »). Формула =« = выбрать (день недели (A2) »,« воскресенье »" «Вторник», «Среда», «Четверг», «Пятница», «Суббота») « LastRow = Range (« A »& Rows.Count) .END (xlUp).Строка Диапазон («B2»). Диапазон копирования («B2: B» & LastRow) Конец Если Конец Sub – exlover

+1

@exlover Вам необходимо поместить любой код, который вы пытаетесь в исходное сообщение. Его легче форматировать и читать. –