20170824xlVBA出车对账单
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出车对账单的更多相关文章
- CE_现金银行对账单的手工导入和调节(案例)
2014-07-14 Created By BaoXinjian
- 微信对账单处理-PHP
最近要做支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款 ...
- 支付宝(查询对账单下载地址(alipay.data.dataservice.bill.downloadurl.query))
通过url下载zip对账单文件,进行解压,读取压缩文件内容. import java.io.BufferedOutputStream; import java.io.BufferedReader; i ...
- 支付宝对账单下载Java正式商户调用
package code; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; impo ...
- 支付宝对账单下载Java沙箱调用
package code; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; impo ...
- EBS ORACLE采购对账单自动产生发票
只要传入个对账单号,然后跑数据抛到接口表,运行接口请求,就可以自动生成发票 create or replace package body pkg_ap_check_by_po is --创建ap发票 ...
- PHP实现微信对账单处理
最近要做支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款 ...
- 开源一套原创文本处理工具:Java+Bat脚本实现自动批量处理对账单工具
原创/朱季谦 这款工具是笔者在2018年初开发完成的,时隔两载,偶然想起这款小工具,于是,决定将其开源,若有人需要做类似Java批处理实现整理文档的工具,可参考该工具逻辑思路来实现. 该工具是运行在w ...
- 支付宝支付下载对账单bug反馈整理
支付宝官方给广大开发朋友们,留了一个下载账单的API接口,供大家下载指定日期的账单数据.先来看下这个页面: 点我前往官方说明文档 $aop = new AopClient (); $aop->g ...
随机推荐
- Click()与Submit()
<input type="button" /> 定义可点击的按钮,但没有任何行为.如果你不写javascript 的话,按下去什么也不会发生. button 类型常用于 ...
- 配置vim
VundleVuldle是一个全自动的插件管理器,让我们通过维护插件列表的方式管理插件.它为安装.更新.删除插件提供了方便的命令.在安装Git的情况下(本文不赘述Git的安装),输入命令: git c ...
- 洛谷luogu2782
P2782 友好城市 题目描述 有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市.北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同.每对友好城市都向政府申 ...
- Newcoder Metropolis(多源最短路 + Dijkstra堆优化)题解
题目链接:https://www.nowcoder.com/acm/contest/203/I?tdsourcetag=s_pcqq_aiomsg来源:牛客网 思路:我们用用fa[i]表示距离i最近的 ...
- SQL优化参考
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- mvc扩展HtmlHelper功能
HtmlHelper详细介绍 简单示例 自定义HtmlHelper 解决: 直接写HTML的话如果语句有语法错误,如缺少结尾标记</b>,编译器不会报错,出来的页面可能会很乱且难以查出错误 ...
- sap hana 数据库 EBS
SAP实时数据平台详解 ************************************************************ EBS是Oracle 公司对原有应用产品整合后的一个产 ...
- Mac python 2.X 升级到 3.X
Mac OS X10.9默认带了Python2.7,不过现在Python3.3.3出来了,如果想使用最新版本,赶紧升级下吧.基本步骤如下. 第1步:下载Python3.3 下载地址如下: Python ...
- jdk1.8和tomcat9.0、maven3.5.0配置教程
一.jdk环境变量 JAVA_HOME :C:\Program Files\Java\jdk1.8.0_77(这个是你安装JDK时的路径,按照实际情况改成你自己的目录) CLASSPATH: .; ...
- 基于 Python 和 Pandas 的数据分析(5) --- Concatenating and Appending
这一节我们将会介绍几种不同的合并数据的方法. 在我们这个不动产投资的例子中, 我们希望获取 51 个州的房产数据, 并把它们组合起来. 我们这样做有很多原因. 这样做既便于我们做分析, 同时也可以占用 ...