Skip to main content

Excel VBA 小作品:筛选财务日结报表并输出至指定工作表(第一版)

社区健康服务信息系统财务日结报表含医疗收入诊察费、中草药费等关键数据,可分析社康服务中心诊察人次变动、中医药服务能力等。各社康中心财务报表行数不同,经典的建立 Vlookup 命令获取字段名和对应数值效率低,社康中心数量越多,Excel 分析与处理成本越大。

这个 Excel VBA 小作品实现以下自动化处理:

  • 使用 ActiveCell 赋值文本,按筛选目的获取财务项目字段名,将用友社区健康服务信息系统字段名配套为财务通用字段名。
  • 使用 For 遍历循环得到财务报表的行数,选择财务报表数据范围。
  • 通过 VLookup 在财务日结报表数据范围获取相应数值,写入到财务通用字段名的输出区域。
  • 使用 Selection.Copy 复制筛选结果,为汇总为其他数据工作表做准备。

这段 VBA 代码为:


Sub 筛选财务日结报表()
'
'从用友财务日结报表筛选研究对象字段名,在现有工作表输出筛选结果
'
'命名筛选输出标题
Range("I1").Select
ActiveCell.FormulaR1C1 = "用友字段名"
Range("J1").Select
ActiveCell.FormulaR1C1 = "通用字段名"

'筛选用友字段名,配套显示通用字段名
Range("I2").Select
ActiveCell.FormulaR1C1 = "总费用"
Range("J2").Select
ActiveCell.FormulaR1C1 = "医疗收入"
Range("I3").Select
ActiveCell.FormulaR1C1 = "诊察费"
Range("J3").Select
ActiveCell.FormulaR1C1 = "诊察费"
Range("I4").Select
ActiveCell.FormulaR1C1 = "西药费"
Range("J4").Select
ActiveCell.FormulaR1C1 = "西药费"
Range("I5").Select
ActiveCell.FormulaR1C1 = "中成药费"
Range("J5").Select
ActiveCell.FormulaR1C1 = "中成药费"
Range("I6").Select
ActiveCell.FormulaR1C1 = "中草药"
Range("J6").Select
ActiveCell.FormulaR1C1 = "中草药标量"
Range("J7").Select
ActiveCell.FormulaR1C1 = "总药品"


'添加列标题
Range("K1").Select
ActiveCell.FormulaR1C1 = "数值"

On Error Resume Next
'变量声明
Dim DeptRow As Long
Dim DeptCol As Long
Dim RowN As Long

'递减遍历得到非空值数据最后一行的行号

For RowN = Rows.Count To 1 Step -1
If Cells(RowN, "a").Value <> "" Then
RowN = RowN
Exit For
End If
Next RowN

Table1 = Sheet1.Range("i2:i6") ' 筛选输出首列
Table2 = Sheet1.Range(Cells(3, "a"), Cells(RowN, "g")) ' 选择财务日结报表范围

DeptRow = Sheet1.Range("K2").Row ' 筛选输出增加数据列
DeptCol = Sheet1.Range("k2").Column

'循环递增遍历
For Each cl In Table1

Sheet1.Cells(DeptRow, DeptCol) = WorksheetFunction.VLookup(cl, Table2, 3, False)
DeptRow = DeptRow + 1
Next cl

'计算药品总费用
Cells(7, "k").Value = WorksheetFunction.Sum(Range("k4:k6"))

'选择筛选输出数据并复制到剪贴板
    Range("J2:K7").Select
    Selection.Copy
End Sub

以往分析社康中心财务数据步骤多,根据不同的财务报表数据行数为多个分析对象逐一建立 Vlookup 命令,工作量大,容易录入错误公式。现在不管社康中心财务报表行数多少,一个宏命令统计出所需要的医疗业务总收入、诊察费、西药费、中成药费、费中草药、药品总费用。

这个 Excel VBA 还有明显缺点,VBA 需历时5秒才得到结果,只能说是粗糙的作品。

Comments

TOP