excel - Creating worksheets based on unique values -


i have data set sorted date wise , want copy data based on month, i.e, data of each month copied new worksheet , name of sheet name of month present. data set: http://bit.ly/1cohv5j

i tried running following code:

sub x() dim rng range  activesheet     .autofiltermode = false     sheets.add().name = "temp"     .range("h2", .range("h2").end(xldown)).advancedfilter action:=xlfiltercopy, copytorange:=sheets("temp").range("a1"), unique:=true      each rng in sheets("temp").usedrange.offset(1).resize(sheets("temp").usedrange.rows.count - 1)         .range("a1").currentregion.autofilter field:=8, criteria1:=rng         sheets.add(after:=sheets(sheets.count)).name = rng.text         .autofilter.range.copy sheets(rng).range("a1")      next rng      .autofiltermode = false     application.displayalerts = false     sheets("temp").delete     application.displayalerts = true  end  end sub 

but error keeps coming up:

"you typed invalid name sheet or chart. make sure that: name type not exceed 31 charaters name not contain of thefollowing characters: \ / ? * [ or ] not leave name blank

kindly , tell me going wrong.

the text in of cells may have reserved characters... can try below, replace sheeets.add bit cleaned string

ps: should make sure cell using name not empty

full code should below

sub x()     dim rng range     dim sheeetname string         activesheet     .autofiltermode = false     sheets.add().name = "temp"     .range("h2", .range("h2").end(xldown)).advancedfilter action:=xlfiltercopy, copytorange:=sheets("temp").range("a1"), unique:=true     each rng in sheets("temp").usedrange.offset(1).resize(sheets("temp").usedrange.rows.count - 1)         .range("a1").currentregion.autofilter field:=8, criteria1:=rng         sheeetname = getgoodsheetname(rng.text)         sheets.add(after:=sheets(sheets.count)).name = sheeetname         .autofilter.range.copy sheets(sheetname).range("a1")      next rng      .autofiltermode = false     application.displayalerts = false     sheets("temp").delete     application.displayalerts = true     end end sub  function getgoodsheetname(fromname string) string     dim objregex object     set objregex = createobject("vbscript.regexp")     objregex         .global = true         .pattern = "[\<\>\*\\\/\?|]"         getgoodsheetname = .replace(fromname, "_")     end end function 

Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -