我为一家举办活动的非营利组织工作。我得到了大量的注册人,每个人都属于一个特定的团队。我正在尝试将我的大型工作簿分成每个团队的各个工作簿。
我被告知过去曾经工作过的代码,但是我遇到了一些问题。这是代码本身。
Sub ParseItems()
'Jerry Beaucaire(4/22/2010)
“基于选定的列,数据被过滤到各个工作簿中
'工作簿的名称是值加上今天的日期
Dim LR一样长,Itm一样长,MyCount一样长,vCol一样长
将ws作为工作表,将MyArr作为变量,将vTitles作为字符串,将SvPath作为字符串
“其中包含数据的表
设置ws = Sheets(“ Sheet1”)
'将文件保存到的路径,请记住最后的\
SvPath = "G:\AWNY\NW 2015\Teams\Post DOE\Interim Rosters\” "
“标题横穿数据顶部的范围,必须是字符串,数据必须
'具有此行的标题,进行编辑以适合您的标题区域设置
vTitles = "A1:AB1"
'选择要进行评估的列,列A = 1,列B = 2,依此类推。
vCol = Application.InputBox(“拆分数据的列是什么?”&vbLf&vbLf&“(A = 1,B = 2,C = 3等)”,“哪个列?”,1,类型:= 1)
如果vCol = 0,则退出Sub
“发现数据底部行
LR = ws.Cells(ws.Rows.Count,vCol).End(xlUp).Row
“加快宏的执行速度
Application.ScreenUpdating = False
'从A列中获取唯一值的临时列表
ws.Columns(vCol).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ws.Range("EE1"), Unique:=True
'排序临时列表
ws.Columns("EE:EE").Sort Key1:=ws.Range("EE2"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
'将列表放入数组中以进行循环(值不能为公式的结果,必须为常量)
MyArr = Application.WorksheetFunction.Transpose(ws.Range("EE2:EE" & Rows.Count).SpecialCells(xlCellTypeConstants))
'清除临时工作表列表
ws.Range("EE:EE").Clear
'打开自动过滤器,只需要一列
ws.Range(vTitles).AutoFilter
“一次遍历列出一个值
For Itm = 1 To UBound(MyArr)
ws.Range(vTitles).AutoFilter Field:=vCol, Criteria1:=MyArr(Itm)
ws.Range("A1:A" & LR).EntireRow.Copy
Workbooks.Add
Range("A1").PasteSpecial xlPasteAll
Cells.Columns.AutoFit
MyCount = MyCount + Range("A" & Rows.Count).End(xlUp).Row - 1
ActiveWorkbook.SaveAs SvPath & MyArr(Itm), 51
ActiveWorkbook.Close False
ws.Range(vTitles).AutoFilter Field:=vCol
Next Itm
“清理
ws.AutoFilterMode = False
MsgBox "Rows with data: " & (LR - 1) & vbLf & "Rows copied to other sheets: " & MyCount & vbLf & "Hope they match!!"
Application.ScreenUpdating = True
结束子
我遇到的问题是,当我运行代码时,它提示我输入要分割数据的列。我输入“ 1”(团队名称在A列中),它告诉我“运行时错误:'1004'”,并且“无法将其应用于所选范围。请选择范围中的单个单元格然后再试一次”。
我不确定该怎么做才能解决此问题,我们将不胜感激! 谢谢!