求助,按条件生成新工作薄
excel吧
全部回复
仅看楼主
level 8
nanlaihe 楼主
      一个普通表中有100多个单位的数据,大概2000行,10列
    先说以前的步骤,很有规律,筛选,新建工作薄,复制粘贴,保存。........单位多,太麻烦了,现在想用vba搞定,将各单位的数据分开生成新工作薄
     要求如下,看起来有点多,呵呵,麻烦高手出手!
1表头(1-8)行,各工作薄都保留表头
2各工作薄以本单位名为工作薄名
3各工作薄中保持原始数据,是数据的是数据,该是公式的是公式
4各表最后一行添加一个合计,计算该表中的fghij列的和
5统一设置,字号为12号、纸张为A4纸、横向(如果此步骤麻烦可以不设置)

2009年12月03日 11点12分 1
level 8
nanlaihe 楼主
一个拆开学吧,以下代码可以实现,表格内保留第一行作为表头,然后剩下的分类保存到c:\test中单独的工作薄。
问以下代码那个是调整表头行数的,比如我要的是前8行是表头,应该改哪个参数
Private Sub CommandButton1_Click()
     Dim Arr, Ary
     Dim Dic As Object
     Dim rng As Range
     Set Dic = CreateObject("Scripting.Dictionary")
     For Each rng In Range("a2", [A65536].End(3))
         Dic(rng.Value) = ""
     Next2
     Arr = Dic.keys
     For i = 0 To UBound(Arr)
         ReDim Ary(1 To 4, 1 To 1)
         k = 1
         Ary(1, 1) = [A1]
         Ary(2, 1) = [B1]
         Ary(3, 1) = [C1]
         Ary(4, 1) = [D1]
         For Each rng In Range("a2", [A65536].End(3))
             If rng = Arr(i) Then
                 k = k + 1
                 ReDim Preserve Ary(1 To 4, 1 To k)
                 Ary(1, k) = rng
                 Ary(2, k) = rng(1, 2)
                 Ary(3, k) = rng(1, 3)
                 Ary(4, k) = rng(1, 4)
             End If
         Next2
         Workbooks.Add
         With ActiveWorkbook
             .ActiveSheet.[A1].Resize(k, 4) = Application.Transpose(Ary)
             .SaveAs "C:\test\" & Arr(i) & ".xls"
             .Close
         End With
     Next
End Sub

2009年12月03日 12点12分 2
level 1
呵呵,你可以到我论坛看看啊
www.5maths.cn/upload
我这段正在弄这个,不过我的是学生成绩
1、总表生成班表。
2、调整班表可打印:(a4)纸张
3、计算总、平均分和名次段。
1、2我已经写出来了,对你应该有帮助。

2009年12月04日 00点12分 3
level 1
还有个问题,保留公式的话你要确保公式在新表里依然适用啊。
既然写出vba了,建议不如就不保留公式。分表就做报表用,什么时候用什么时候生成,点下鼠标就行了。只保存一个总表,
2009年12月04日 00点12分 4
1