根据现有工作表中的日期创建新工作表...列

时间:2015-10-14 15:31:33

标签: excel vba

所以我有一张带有日期栏的主表。 主表中的数据具有重复日期。对于我们所关注的月份的含义,我可以将07/01/2010多达100次,或少至2次。

我想要做的是筛选日期列并根据该列中的日期(日)创建新工作表,但我只想要唯一的值。

所以我有多个在VBA中创建新工作表的例子,这不是我的问题。它正在生成唯一列表,以便创建表单是我遇到问题的地方。

Sub Add_Sheets()
Dim WS As Worksheet
Set WS = sheets.Add(After:=Worksheets("MasterSheet"))
WS.Name = 1  '<-- Want to call something so as to get the day from Master dynamically'
End Sub

这让我得到了我独特的日期,但不是日期列表:

Sub UniqueList()
Dim lastrow As Long
Dim sheets As Worksheet
Set sheets = ThisWorkbook.Worksheets("MasterSheet")
lastrow = sheets.Cells(Rows.Count, 3).End(xlUp).Row
sheets.Range("C2:C" & lastrow).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=sheets.Range("G2"), Unique:=True 'dont prefer this but it works.
End Sub

所以我愿意接受建议。 最近开始这个项目,所以不要太过于重做所有这一切。需要成为VBA,因此用户只需点击按钮即可。

感谢您的任何指示。

1 个答案:

答案 0 :(得分:0)

Function getSheetByName(sh As String) As Worksheet
    On Error Resume Next
    Set getSheetByName = Worksheets(sh)
    If Err.Number <> 0 Then Set getSheetByName = Nothing
End Function

Sub CreateSheetsByUniqueDate()
   Dim cell As Range, name As String
   Application.DisplayAlerts = False

   For Each cell In Worksheets("MasterSheet").UsedRange.Columns(3).Cells ' <~~ set to your date column
       name = "WS_" & Format(cell.Text, "dd")
       If getSheetByName(name) Is Nothing Then Worksheets.Add().name = name
   Next
   Application.DisplayAlerts = True
End Sub