我還沒有用VBA工作過一段時間,這裏是我正在做的事情:我有一個ID列的工作表,然後引用一堆列具有該ID的人是否做過某件事(「1」)或沒有做過(「0」)。事情是這樣的:有條件地將單元格複製到新的工作簿
ID Task1 Task2 Task3
103 1 1 0
129 0 1 0
154 1 1 1
189 1 0 1
204 0 1 1
我想宏做的就是爲每一個任務一個新的工作簿(和保存工作簿是工作的名義下),然後填充每個工作簿只用ID#那些已經完成任務的人。因此,應該創建並保存名爲「Task1」的工作簿,該工作簿在列A中具有值103,154和189,並創建並保存名爲「Task2」的單獨工作簿,該工作簿具有值103,129,154和204在A列中,等等。
到目前爲止我還沒有很成功。我想出了這個:
Sub CopyToWorkbooks()
Dim lRow, lCol As Integer
Sheets("Sheet1").Select
lRow = Range("A" & Rows.Count).End(xlUp).Row
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
For Each cell In Range(Cells(1, "B"), Cells(1, lCol))
Union(Range("A1:A" & lRow), Range(Cells(1, cell.Column), Cells(lRow, cell.Column))).Copy
Workbooks.Add
Range("A1").PasteSpecial
ActiveWorkbook.SaveAs Filename:= _
"Users:User:Desktop:WorkbookFolder:" & cell.Value & ".xls" 'For saving the workbook on a Mac
ActiveWorkbook.Close
Next cell
Application.CutCopyMode = False
End Sub
這成功地創建並保存3個獨立的工作簿與正確的工作簿的名稱,但它會將所有在A列中的值,所有列的值與新對應工作簿名稱。所以,例如,工作簿「Task2」看起來像這樣:
ID Task2
103 1
129 1
154 1
189 0
204 1
任何幫助將不勝感激。謝謝!
謝謝,這個作品完美!我測試了Søren和ZAT提供的答案,兩者都完成了這項工作,但這種方法運行得更快。 – abclist19 2014-10-05 17:54:00