Private Sub GetClientAccountList()
Dim EndRow As Long
Dim i As Long, j As Long
Dim m As Long, n As Long
Dim TakeSum As Double, PaySum As Double
Dim NotTake As Double, NotPay As Double
Dim HasTake As Double, HasPay As Double
Dim FileName As String
Dim FolderPath As String
Dim FilePath As String
Dim Rng As Range
Dim Arr As Variant
Dim Brr(), iRows Dim Crr()
ReDim Crr(1 To 4, 1 To 1)
Index = 0 Const HeadRow As Long = 1
Dim NewSht As Worksheet
Dim Wb As Workbook
Dim NewWb As Workbook
Dim Sht As Worksheet Set Wb = Application.ThisWorkbook
FolderPath = Wb.Path & "\先达对账单\"
Dim dClient As Object
Dim dTrade As Object
Set dClient = CreateObject("Scripting.Dictionary")
Set dTrade = CreateObject("Scripting.Dictionary")
Set Sht = Wb.Worksheets("明细")
With Sht
EndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
Set Rng = .Range("A2:T" & EndRow)
Arr = Rng.Value
For i = LBound(Arr) To UBound(Arr)
Key = CStr(Arr(i, 1))
If Key <> "" Then dClient(Key) = dClient(Key) & i & ";"
Key = CStr(Arr(i, 11))
If Key <> "" Then dTrade(Key) = dTrade(Key) & i & ";"
Next i
End With
Count = 0
For Each onekey In dClient.Keys
If Not dTrade.exists(onekey) Then
''''————————————————————————————
NotTake = 0
'单纯客户 Set NewWb = Application.Workbooks.Add
FileName = onekey & "--先达 2017对账单"
FilePath = FolderPath & FileName & ".xlsx"
On Error Resume Next
Kill FilePath
On Error GoTo 0
Set NewSht = NewWb.Worksheets(1)
NewSht.Name = FileName With NewSht
.Cells.Clear
With .Range("A1:J1")
.Value = Array("客户", "日期", "行程", "车型", "记账RMB", "记账HK", "现收RMB", "现收HK", "先达应收", "先达应付")
.Font.Bold = True
With .Interior
.Pattern = xlSolid
.Color = 16763443
End With
End With
iRows = Split(dClient(onekey), ";")
RowCount = UBound(iRows)
'Debug.Print RowCount
ReDim Brr(1 To RowCount, 1 To 12)
m = 0
For i = LBound(iRows) To UBound(iRows) - 1
m = m + 1
For j = 1 To 8
Brr(m, j) = Arr(iRows(i), j)
Next j
Brr(m, 9) = Brr(m, 5) + Brr(m, 6) - Brr(m, 7) - Brr(m, 8)
NotTake = NotTake + Brr(m, 9)
Next i
.Range("A2").Resize(RowCount, 10).Value = Brr
EndRow = .Cells.Find("*", .Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row desrow = EndRow + 1
.Cells(desrow, "I").Value = NotTake
.Cells(desrow + 1, "I").Value = NotTake
.Cells(desrow + 1, "I").Resize(1, 2).Merge
.Cells(desrow + 1, "C").Value = "合计"
SetBorders .UsedRange
SetCenters .UsedRange
.UsedRange.WrapText = True
.UsedRange.Columns.AutoFit
.UsedRange.Rows(1).RowHeight = 20
.UsedRange.Range("A:A").ColumnWidth = 10
.UsedRange.Range("B:B").ColumnWidth = 8
.UsedRange.Range("D:D").ColumnWidth = 6
.UsedRange.Range("E:J").ColumnWidth = 9
.UsedRange.Range("E:E,G:G,I:J").NumberFormat = """¥""#,##0;[Red]""¥""-#,##0"
'.UsedRange.Range("G:G").NumberFormat = """¥""#,##0;[Red]""¥""-#,##0"
.UsedRange.Range("F:F,H:H").NumberFormat = "\$#,##0;-\$#,##0"
'.UsedRange.Range("H:H").NumberFormat = "\$#,##0;-\$#,##0"
'.UsedRange.Range("I:J").NumberFormat = """¥""#,##0;[Red]""¥""-#,##0"
.UsedRange.Columns(3).ColumnWidth = 40
.UsedRange.Columns(3).HorizontalAlignment = xlLeft
.Range("C65536").End(xlUp).HorizontalAlignment = xlCenter
SetCenters .Range("C1")
End With
NewWb.SaveAs FileName:=FilePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
NewWb.Close True
Index = Index + 1
ReDim Preserve Crr(1 To 4, 1 To Index)
Crr(1, Index) = onekey '公司名称
Crr(2, Index) = NotTake
Crr(3, Index) = 0
Crr(4, Index) = NotTake
Else
''''————————————————————————————
NotTake = 0
NotPay = 0 '同行客户
Set NewWb = Application.Workbooks.Add
FileName = onekey & "--先达 2017对账单"
FilePath = FolderPath & FileName & ".xlsx"
On Error Resume Next
Kill FilePath
On Error GoTo 0
Set NewSht = NewWb.Worksheets(1)
NewSht.Name = FileName
With NewSht
.Cells.Clear
With .Range("A1:J1")
.Value = Array("客户", "日期", "行程", "车型", "记账RMB", "记账HK", "现收RMB", "现收HK", "先达应收", "先达应付")
.Font.Bold = True
With .Interior
.Pattern = xlSolid
.Color = 16763443
End With
End With
iRows = Split(dClient(onekey), ";")
RowCount = UBound(iRows)
'Debug.Print RowCount
ReDim Brr(1 To RowCount, 1 To 12)
m = 0
For i = LBound(iRows) To UBound(iRows) - 1
m = m + 1
For j = 1 To 8
Brr(m, j) = Arr(iRows(i), j)
Next j
Brr(m, 9) = Brr(m, 5) + Brr(m, 6) - Brr(m, 7) - Brr(m, 8)
NotTake = NotTake + Brr(m, 9)
Next i
.Range("A2").Resize(RowCount, 10).Value = Brr '空一行
EndRow = .Cells.Find("*", .Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row + 2
''''———————————————————————————— '外调同行
iRows = Split(dTrade(onekey), ";")
RowCount = UBound(iRows)
'Debug.Print RowCount
ReDim Brr(1 To RowCount, 1 To 12)
m = 0
For i = LBound(iRows) To UBound(iRows) - 1
m = m + 1
Brr(m, 1) = "先达"
For j = 2 To 4
Brr(m, j) = Arr(iRows(i), j)
Next j
For j = 5 To 8
Brr(m, j) = Arr(iRows(i), j + 7)
Next j Brr(m, 10) = Brr(m, 5) + Brr(m, 6) - Brr(m, 7) - Brr(m, 8)
NotPay = NotPay + Brr(m, 10) Next i
.Range("A" & EndRow).Resize(RowCount, 10).Value = Brr
'空一行
EndRow = .Cells.Find("*", .Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row + 1 desrow = EndRow + 1 .Cells(desrow, "I").Value = NotTake
.Cells(desrow, "J").Value = NotPay .Cells(desrow + 1, "I").Value = NotTake - NotPay
.Cells(desrow + 1, "I").Resize(1, 2).Merge .Cells(desrow + 1, "C").Value = "合计" SetBorders .UsedRange
SetCenters .UsedRange
.UsedRange.WrapText = True
.UsedRange.Columns.AutoFit
.UsedRange.Rows(1).RowHeight = 20
.UsedRange.Range("A:A").ColumnWidth = 10
.UsedRange.Range("B:B").ColumnWidth = 8
.UsedRange.Range("D:D").ColumnWidth = 6
.UsedRange.Range("E:J").ColumnWidth = 9
.UsedRange.Range("E:E,G:G,I:J").NumberFormat = """¥""#,##0;[Red]""¥""-#,##0"
'.UsedRange.Range("G:G").NumberFormat = """¥""#,##0;[Red]""¥""-#,##0"
.UsedRange.Range("F:F,H:H").NumberFormat = "\$#,##0;-\$#,##0"
'.UsedRange.Range("H:H").NumberFormat = "\$#,##0;-\$#,##0"
'.UsedRange.Range("I:J").NumberFormat = """¥""#,##0;[Red]""¥""-#,##0"
.UsedRange.Columns(3).ColumnWidth = 40
.UsedRange.Columns(3).HorizontalAlignment = xlLeft
.Range("C65536").End(xlUp).HorizontalAlignment = xlCenter
SetCenters .Range("C1")
End With NewWb.SaveAs FileName:=FilePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
NewWb.Close True Index = Index + 1
ReDim Preserve Crr(1 To 4, 1 To Index)
Crr(1, Index) = onekey '公司名称
Crr(2, Index) = NotTake
Crr(3, Index) = NotPay
Crr(4, Index) = NotTake - NotPay End If
'If Count = 1 Then Exit For
Next onekey For Each onekey In dTrade.Keys
If Not dTrade.exists(onekey) Then
Debug.Print "仅同行"; onekey
End If
Next onekey Set Sht = Wb.Worksheets("账单汇总")
With Sht
.UsedRange.Offset(1).Clear
Set Rng = .Range("A2")
Set Rng = Rng.Resize(UBound(Crr, 2), UBound(Crr))
Rng.Value = Application.WorksheetFunction.Transpose(Crr)
SetBorders .UsedRange
SetCenters .UsedRange
.UsedRange.Columns.AutoFit
End With Set Wb = Nothing
Set NewWb = Nothing
Set Sht = Nothing
Set NewSht = Nothing
Set Rng = Nothing Set dClient = Nothing
Set dTrade = Nothing End Sub
Public Sub SetBorders(ByVal Rng As Range)
With Rng.Borders
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
End Sub
Public Sub SetCenters(ByVal Rng As Range)
With Rng
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End Sub

  

20170824xlVBA出车对账单的更多相关文章

  1. CE_现金银行对账单的手工导入和调节(案例)

    2014-07-14 Created By BaoXinjian

  2. 微信对账单处理-PHP

    最近要做支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款 ...

  3. 支付宝(查询对账单下载地址(alipay.data.dataservice.bill.downloadurl.query))

    通过url下载zip对账单文件,进行解压,读取压缩文件内容. import java.io.BufferedOutputStream; import java.io.BufferedReader; i ...

  4. 支付宝对账单下载Java正式商户调用

    package code; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; impo ...

  5. 支付宝对账单下载Java沙箱调用

    package code; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; impo ...

  6. EBS ORACLE采购对账单自动产生发票

    只要传入个对账单号,然后跑数据抛到接口表,运行接口请求,就可以自动生成发票 create or replace package body pkg_ap_check_by_po is --创建ap发票 ...

  7. PHP实现微信对账单处理

    最近要做支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款 ...

  8. 开源一套原创文本处理工具:Java+Bat脚本实现自动批量处理对账单工具

    原创/朱季谦 这款工具是笔者在2018年初开发完成的,时隔两载,偶然想起这款小工具,于是,决定将其开源,若有人需要做类似Java批处理实现整理文档的工具,可参考该工具逻辑思路来实现. 该工具是运行在w ...

  9. 支付宝支付下载对账单bug反馈整理

    支付宝官方给广大开发朋友们,留了一个下载账单的API接口,供大家下载指定日期的账单数据.先来看下这个页面: 点我前往官方说明文档 $aop = new AopClient (); $aop->g ...

随机推荐

  1. Django框架(九) Django之ORM常用字段和参数

    ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范 ...

  2. Linux驱动开发调试 -- 打开dev_dbg()【转】

    本文转载自:https://blog.csdn.net/kunkliu/article/details/78048618 转载地址:http://blog.chinaunix.net/uid-2284 ...

  3. noip模拟【tea】

    tea [题目描述]有n个容量为V的瓶子,第i个瓶子中装着a[i]个单位的tea,使所有瓶子内的tea在不 超过其容量的前提下,非空的瓶子最少.在一个单位时间内,可以同时将多个瓶子中的tea倒入另外多 ...

  4. Latex: 解决 The gutter between columns is x inches wide (on page x), but should be at least 0.2 inches. 问题

    参考: Sample_WCCI.tex Latex: 解决 The gutter between columns is x inches wide (on page x), but should be ...

  5. js运算符的一些特殊应用

    作者: 小文 来源: http://www.cnblogs.com/daysme/ 时间: 2017/3/2 17:21:03 本文集合了了js运算符的一些特殊应用. js位运行符的运用. js运算符 ...

  6. 2-4、nginx特性及基础概念-nginx web服务配置详解

    Nginx Nginx:engine X 调用了libevent:高性能的网络库 epoll():基于事件驱动event的网络库文件 Nginx的特性: 模块化设计.较好扩展性(不支持模块动态装卸载, ...

  7. WebGIS前端地图显示之根据地理范围换算出瓦片行列号的原理(核心)

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在上一节中我们知道了屏幕上一像素等于实际中多少单位长度(米或 ...

  8. Md5混淆因子

    package cn.springmvc.utils;import org.apache.commons.codec.digest.DigestUtils;import org.apache.comm ...

  9. HttpPost

    public static string HttpPost(string url, string postData, bool isPost = true) { string method = isP ...

  10. table固定列的宽度,超出部分用…代替(针对普通table和antd)

    一. 实现思路 我们都知道让溢出内容变成...,只需要以下: overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 表格里的内容 ...