所以我有一张带有日期栏的主表。 主表中的数据具有重复日期。对于我们所关注的月份的含义,我可以将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,因此用户只需点击按钮即可。
感谢您的任何指示。
答案 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