如何为列中的每个唯一值创建新的工作簿?

时间:2017-09-22 15:58:52

标签: excel-vba vba excel

我需要为第J列中的每个唯一值运行一个foreach语句。对于每个唯一名称,我想创建一个新的Excel工作簿,复制特定名称的所有行,最后保存具有相同唯一值的工作簿。

Sub test()
Range("A1:J17").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit
Application.CutCopyMode = False
Range("D1").Select
Selection.Copy
ChDir "c:\test"
ActiveWorkbook.SaveAs Filename:= _
    "c:\test\test.xlsx", _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub

enter image description here

1 个答案:

答案 0 :(得分:2)

我确信比我聪明的人可以告诉你如何df$group=(df$ID-1)%/%3 df%>%group_by(group)%>%dplyr::summarise(ntype=paste0(type,collapse = '')) # A tibble: 9 x 2 group ntype <dbl> <chr> 1 0 huk 2 1 wyb 3 2 nxo 4 3 lyl 5 4 roc 6 5 xgb 7 6 iyx 8 7 sqz 9 8 r 数组或其他东西,但这应该有效。我默认将大小设置为1,000 max,但如果要检查更多行,则将其设置为更高。这也假定列J是包含需要复制到新工作簿的数据的最后一列:如果不是这种情况,请将ReDim更改为ws.Range(ws.Cells(y, 1), ws.Cells(y, uCol)).Copy

ws.Range(ws.Cells(y, 1), ws.Cells(y, WHATEVER_COLUMN)).Copy