检查凭证录入模板的核算项目

Sub 凭证()
Dim arr
Dim i, j, k, hang
Dim lie_debit, mrr
hang = Range("F2").End(xlDown).Row
arr = Range("A1:M" & hang)
mrr = Array("核算项目", "研发项目")
'填充空白单元格
For i = 2 To UBound(arr)
    For j = 1 To 3
        If arr(i, j) = "" Then
            arr(i, j) = arr(i - 1, j)
        End If
    Next j
Next i
Range("A1").Resize(UBound(arr), UBound(arr, 2)) = arr
Cells(1, 1).Select
Cells(2, 1).Select
Application.ActiveWindow.FreezePanes = True
Range("A1:M" & hang).AutoFilter
Range("I2:K" & hang).NumberFormatLocal = "#,##0.00_ "

lie_debit = Range("1:1").Find("贷方").Column
For k = 0 To UBound(mrr)
    Cells(1, lie_debit + k + 1).EntireColumn.Insert
    Cells(1, lie_debit + k + 1).Value = mrr(k)
    Cells(1, lie_debit + k + 1).EntireColumn.NumberFormatLocal = "@"
Next k

'进入部门表格获取部门编码
Workbooks.Open "D:\学习资料\部门-匹配.xls"
Dim brr, p
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
brr = Range("A1").CurrentRegion
For p = 2 To UBound(brr)
    dic(brr(p, 2)) = brr(p, 1)
Next p
Workbooks("部门-匹配").Save
Workbooks("部门-匹配").Close

'进入凭证录入表格匹配核算项目
'Workbooks("凭证模板 - 录入").Activate
Dim m, keyStr, zifushu
Dim lie_hsxm, lie_yfxm, hsxm, yfxm
Dim crr
keyStr = "/"
lie_hsxm = Range("1:1").Find(mrr(0)).Column
lie_yfxm = Range("1:1").Find(mrr(1)).Column
lie_kemu = Range("1:1").Find("科目名称").Column
ReDim crr(1 To UBound(arr), 1 To 2)
crr = WorksheetFunction.Transpose(WorksheetFunction.Transpose(crr))
For m = 2 To UBound(arr, 1)
    zifushu = ziFuGeShu(arr(m, lie_kemu), keyStr)
    If zifushu >= 2 Then
        hsxm = tiQuZiFu(arr(m, lie_kemu), keyStr, 1)
        crr(m, 1) = dic(hsxm)
        yfxm = tiQuZiFu(arr(m, lie_kemu), keyStr, 2)
        crr(m, 2) = "05"
    ElseIf zifushu >= 1 Then
        hsxm = tiQuZiFu(arr(m, lie_kemu), keyStr, 1)
        crr(m, 1) = dic(hsxm)
    ElseIf zifushu = 0 Then
        crr(m, 1) = ""
        crr(m, 2) = ""
    End If
Next m

End Sub
Function tiQuZiFu(str, keyStr, ciShu)
Dim str_result, wz_1, wz_2
wz_1 = ziFuWeiZhi(str, keyStr, ciShu)
geShu = ziFuGeShu(str, keyStr)
If geShu >= 2 Then
    wz_2 = ziFuWeiZhi(str, keyStr, ciShu + 1)
End If
If geShu = 1 Then
    str_result = Mid(str, wz_1 + 1, 99)
Else
    If ciShu <> geShu Then
        str_result = Mid(str, wz_1 + 1, wz_2 - wz_1 - 1)
    Else
        str_result = Mid(str, wz_1 + 1, 99)
    End If
End If
tiQuZiFu = str_result
End Function

Function ziFuWeiZhi(str, keyStr, ciShu)
Dim geShu, wz_1, wz_result
geShu = ziFuGeShu(str, keyStr)
If geShu = 1 Then
    wz_result = InStr(1, str, keyStr, 1)
Else
    wz_1 = InStr(1, str, keyStr, 1)
    If ciShu = 1 Then
        wz_result = wz_1
    ElseIf ciShu = 2 Then
        wz_result = InStr(wz_1 + 1, str, keyStr, 1)
    Else
        wz_result = "weiZhi不是1和2"
    End If
End If
ziFuWeiZhi = wz_result
End Function

Function ziFuGeShu(str, keyStr)
Dim len_str, zifu
Dim i, gs_result
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")

len_str = Len(str)
For i = 1 To len_str
    zifu = Mid(str, i, 1)
    If zifu = keyStr Then
        If Not dic.exists(zifu) Then
            dic(keyStr) = ""
            gs_result = 1
        Else
            gs_result = gs_result + 1
        End If
    End If
Next i
ziFuGeShu = gs_result

End Function

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值