作者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/m.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