作者ptguitar (佩蒂吉他)
看板Office
标题[算表] vba简化跟分表存档问题
时间Fri May 12 09:42:25 2017
软体:excel
版本:2007以上
我有个table类似
班级 姓名 分数
一班 A 50
二班 B 60
. . .
. . .
. . .
. . .
用录制巨集+修改弄了个档案:
https://drive.google.com/open?id=0BwCgrQhGgaw7UHZpd1pUN25pNE0
主要有两个问题
1.我是把班级复制到P栏位 然後移除重复
用回圈跑这段 然後 新增档案 复制过去 存档关闭
不知道这段若是不要复制P栏位移除重复的方式
直接在班级那边就取唯一值不知道该怎麽改?
2.存档後都会多出sheet2 sheet3等工作表
虽说可以直接删这两个工作表
但是不知道有没有方式直接输出档案像是一班.xlsx
里面只有唯一一个一班的工作表?
感谢各位大大..
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.250.67.77
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1494553347.A.4AB.html
※ 编辑: ptguitar (60.250.67.77), 05/12/2017 09:42:58
1F:→ soyoso: 问题1,dictionary、判断字串配合instr或判断array配合工 05/12 10:15
2F:→ soyoso: 作表函数match 05/12 10:15
感谢S大 不过我用application countif写 移动范围计算 若是=1
就新增workbook方式
但是都会到一班那边出错 不知道怎麽回事
VBA初学者问题很多 感谢指教^^
https://drive.google.com/open?id=0BwCgrQhGgaw7MDdmNDY5aHphcTg
For i = 2 To Range("A2").End(xlDown).Row
If Application.CountIf(Range("A2:A" & i), Range("A" & i)) = 1 Then
With mytable
.AutoFilter 1, Range("A" & i).Value
.Copy
End With
Workbooks.Add 1
With ActiveSheet.Range("A1")
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
End With
ActiveSheet.Name = Range("A" & i).Value
ActiveWorkbook.SaveAs "d:\输出\" & Range("A" & i).Value & ".xlsx"
Workbooks(Range("A" & i).Value & ".xlsx").Close SaveChanges:=False
Application.CutCopyMode = False
mytable.AutoFilter
End If
Next i
3F:→ soyoso: 问题2,workbooks.add 1 05/12 10:23
4F:→ soyoso: 或sheetsinnewworkbook指定数量後再新增活页簿 05/12 10:27
※ 编辑: ptguitar (60.250.67.77), 05/12/2017 14:46:40
5F:→ soyoso: 将activesheet.name、activeworkbook.saveas和workbooks() 05/12 14:55
6F:→ soyoso: .close指定range("a" & i)的部分改为range("a2") 05/12 14:55
7F:→ ptguitar: 感谢S大!是因为筛选後会留下range("A2")那笔吗? 05/12 15:11
8F:→ soyoso: 为筛选後复制到新活页簿工作表储存格a2那笔 05/12 16:13
9F:→ ptguitar: 了解!! 05/12 16:19
10F:→ ptguitar: 刚刚研究知道自己问题出那了 感谢soyoso大大提示~ 05/12 16:38