|
发表于 2012-1-8 19:51
|
显示全部楼层
本楼为最佳答案
- Sub 汇总2_Click()
- Range("W10:AC65535").ClearContents
- Dim intRow As Long, t As Single
- Dim ARow As Integer, SQdate As String
- Dim arr1, arr2, i As Long
- t = Timer
- Dim cn As New ADODB.Connection, sql As String
- SQdate = "WHERE "
- If Len([X3]) > 0 And Len([Z3]) > 0 Then SQdate = SQdate & "日期 between # " & [X3] & " # AND #" & [Z3] & "# AND "
- For Each Ran In Range("W6:Y6")
- If Len(Ran) > 0 Then SQdate = SQdate & Ran.Offset(-1) & "='" & Ran & " ' AND "
- Next
- If Len(SQdate) = 6 Then
- SQdate = ""
- Else
- SQdate = Left(SQdate, Len(SQdate) - 5)
- End If
- cn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
- sql = "select 客户,总帐科目,sum(借方),sum(贷方),sum(借方-贷方),分类 from [sheet1$C9:V" & intRow & "]" & _
- SQdate & "GROUP BY 客户,总帐科目,分类"
- Sheet1.Range("W10").CopyFromRecordset cn.Execute(sql) '导出数据
- cn.Close
- Set cn = Nothing
- arr1 = Range("Y10:AA" & [Y65536].End(xlUp).Row)
- ReDim arr2(1 To 1, 1 To 3)
- For i = 1 To 3
- arr2(1, i) = Application.Sum(Application.Index(arr1, , i))
- Next i
- Range("Y" & [Y65536].End(xlUp).Row + 1).Resize(1, 3) = arr2
- MsgBox "汇总完成-共用:" & (Timer - t) * 1000 & "毫秒"
- End Sub
复制代码
|
|