亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Visual Basic處理多財務數據Excel表格

        2019-03-12 12:28:00胡敏李梅鄭增國
        現代計算機 2019年5期
        關鍵詞:工號行列數組

        胡敏,李梅,鄭增國

        (上饒師范學院網絡中心,上饒 334001)

        0 引言

        高校財務報賬各二級部門都會將費用表格上交給財務部門審核,審核通過后才能夠正常的劃賬下發(fā)。以我校為例,我校的專業(yè)經費報銷表格每月個數平均是在60個以上,在高峰期時會超過100。不同類型費用表格經常是不同的人員制造,在造表過程中就人名這一基本信息有時會出現同音不同字或者同名同姓但不同人員等現象,人工的檢測和校對需要耗費大量的時間在重復的比對上,雖然Excel表格中有匹配函數可以減輕工作量,但是頻繁的打開關閉表格也需要人工的看守,為此通過Visual Basic與Excel的對接,對報銷表格中的人名檢測、結構檢測等功能使用Visual Basic程序編輯完成。

        1 Excel操作Visual Basic的關聯

        在VB中有專門連接Excel外部對象Microsoft Excel 11.0 Object Library對象庫。在其中將Excel的結構和VB的結構一一對應。

        (1)Excel是以層次結構組織對象的工作簿、工作表、行列單元格,其對象模型中含有許多不同的對象元素。編程過程中主要用到以下4個層次的對象,在Vi?sual Basic程序中有專門面向Excel的對象Excel Appli?cation[1]。

        (2)Application 對象,即 Excel程序本身,Excel Ap?plication對象表示Excel應用程序本身。聲明一個Ex?cel應用程序對象的代碼為Dim xls As New Excel.Appli?cation。

        (3)WorkBook對象,即Excel的工作簿文件對象;聲明一個Excel工作薄對象的代碼為Dim xbook As New Excel.Workbook[2]。

        (4)WorkSheets對象,表示的是Excel的工作表對象集;

        例如:worksheets(1)表示第一個工作表。聲明一個Excel工作表象的代碼為:

        Dim xsheet As New Excel.Worksheet。

        (5)Range對象:是Excel應用程序中最常用的對象。在能夠處理Excel內的任何范圍之前,必須將它表示為Range對象,并處理該對象的方法和屬性[3]。

        (6)Cells、Range、Rows、Columns 對象,分別表示Excel工作表中的單元格對象集、區(qū)域對象、行對象集、列對象集[4]。

        2 實例應用及主要代碼

        我校財務報賬人員姓名檢測流程如圖1。

        圖1

        第一步:導入母本:

        從人事部門獲得學校在職教師信息Excel表格,包括姓名、工號、所在部門。在本系統(tǒng)中稱為母本即憑證文件。導入效果如圖2所示。

        圖2

        定義人員信息類型:Public Type person_info

        xm_info As String'姓名

        gonghao_info As String'工號

        End Type

        Public zaizhi()as person_info'將excel中在職人員的信息導入數組

        在VB中定義表格,引用表格

        Set xlApp=CreateObject("Excel.Application")

        Set xlsheet=xlBook.Worksheets("在職")

        xlsheet.Activate

        zaizhi_num=xlsheet.UsedRange.Rows.Count-1

        ReDim zaizhi(xlsheet.UsedRange.Rows.Count-1)

        '根據人事部門給的人事Excel表格行數重新定義zaizhi數組的大小

        For i=1 To xlsheet.UsedRange.Rows.Count-1'向zaizhi數組導入數據包括工號和姓名

        zaizhi(i).gonghao_info=Trimstring(xlsheet.Cells(i+1,1))'第一列工號

        zaizhi(i).xm_info=Trimstring(xlsheet.Cells(i+1,2))'第二列姓名

        Next i

        第二步:獲得待報銷表格中有效記錄的開始行列以及條數信息,用于導入數組。

        通過過程 zhiDuanPosition(xlsheet,r,excelfile)獲得表格的行數和報銷人員有效記錄開始的位置,包括在Excel中的行列值。并將結構正常并且姓名正確的表格傳入b_to_sz()過程中轉換為數組,便于后期的匯總分析。在導入的待測Excel表格中匹配帶有姓字的字段,定位為報賬人信息的開始包括行列。

        For i=1 To R_Count'從待測Excel表格的第一行開始查找

        flag=False'默認沒有找到姓名字段

        For j=1 To C_Count

        If InStr(Trimstring(xlsheet.UsedRange.Cells(i,j)),"姓")<>0 Then '遍歷該行中的每一個單元格匹配是否有”姓”字,如果找到表示以下行列為報賬人員的信息,記錄行列信息用于后面b_sz()數組內容的導入。

        xm_j=j

        flag=True

        Exit For

        End If

        Next j

        If flag=True Then Exit For‘如果沒有姓字則認為該表格的結構異常,沒有報賬人員姓名字段。

        Next i

        第三步:將結構正常的Excel表格數據信息的導入到數組b_sz(),篩選出姓名行列信息導入數組b_szF()中。

        Public Sub b_to_sz(xlsheet As Object)

        ReDim b_sz(1 To xlsheet.UsedRange.Rows.Count,1 To xlsheet.UsedRange.Columns.Count)As String‘根據表格大小先定義二維原始數組,將Excel中姓名對應列的內容和實發(fā)的金額列的內容存入b_sz數組中,精簡成b_szF()數組。

        (1)找出字段開始的第一列zd_start_c For j=1 To UBound(b_sz,2)

        If Len(Trimstring(xlsheet.UsedRange.Cells(zd_r,j)))<>0 Then

        zd_start_c=j‘

        Exit For

        End If

        Next j

        (2)找出字段最后一列zd_end_c

        For j=UBound(b_sz,2)To zd_start_c Step-1 '從后往前找字段最后一列zd_end_c

        If Len(Trimstring(xlsheet.UsedRange.Cells(zd_r,j)))<>0 Then'從后往前找第一個不為零的就是字段結束列

        zd_end_c=j

        Exit For

        End If

        Next j

        (3)找出最后一個姓名所在的行xm_end_r

        For i=zd_r To UBound(b_sz,1)+1'找出最后一個姓名所在的行xm_end_r

        If Len(Trimstring(xlsheet.UsedRange.Cells(i,xm_c)))=0 Then

        xm_end_r=i-1

        Exit For

        End If

        Next i

        (4)根據報賬人員信息開始的行列,定義精簡數組存放報賬人員姓名

        ReDim b_szF(1 To xm_end_r-zd_r+1,1 To zd_end_c

        zd_start_c+1)As String'定義精簡的數組

        For i=zd_r To xm_end_r

        b_j=1

        For j=zd_start_c To zd_end_c

        b_szF(b_i,b_j) =Trimstring(xlsheet.

        UsedRange.Cells(i,j))

        b_j=b_j+1

        End If

        Next j

        b_i=b_i+1

        Next i

        第四步:將選擇后的數組b_szF()與母本信息核對,并記錄不規(guī)范的姓名所在行列便于人工核對。

        判斷標準和處理方法見表1。

        (1)在母本中查找將待檢測的姓名,如果姓名不在要記錄在第幾行,便于后期人工核查。

        checkName_bsz(zaizhi(),b_szF(),excelfile,Dao_Excel_Name,zd_r)

        For i=2 To UBound(b_szF,1) '從內容行開始

        xm_is_in=False '先設定待測姓名不在母本中

        For zaizhi_i=1 To UBound(zaizhi) '將待測姓名與zaizhi數組中依次對比查找

        If Trimstring(b_szF(i,xm_c))=Trimstring

        (zaizhi(zaizhi_i).xm_info)Then

        xm_is_in=True'如果找到了則xm_is_in

        設置為True,并退出循環(huán)

        Exit For

        End If

        Next zaizhi_i

        If xm_is_in=False Then '遍歷完zaizhi數組后,如果xm_is_in仍然為false表示待檢測’的姓名沒有在人事處給的在職母本中

        xm_cw_tishi=xm_cw_tishi&"在第"&i+zd_r-1&"行,沒有找到"&b_szF(i,xm_c)&vbCrLf '將這個沒在在職人事的姓名的行列和內容記錄

        End If

        Next i

        (2)將姓名不在母本中的表格的信息記錄保存在錯誤提示.txt文本中,如圖3所示。

        圖3

        (3)姓名無異常且表格結構正常的表格信息列出,如圖4所示。

        圖4

        3 結語

        本文講解了Visual Basic操作多張財務報賬Excel表的實際應用,并取得了良好的效果。通過設計的Vi?sual Basic界面就能夠操作多個Excel表格,利用數組的特性進行表結構和保障人員信息檢測,并記錄異常信息的位置便于人工核對,大大提高了工作的效率。

        猜你喜歡
        工號行列數組
        JAVA稀疏矩陣算法
        電腦報(2022年13期)2022-04-12 00:32:38
        用“行列排除法”解四宮數獨(2)
        用“行列排除法”解四宮數獨(1)
        JAVA玩轉數學之二維數組排序
        電腦報(2020年24期)2020-07-15 06:12:41
        單層小波分解下圖像行列壓縮感知選擇算法
        測控技術(2018年9期)2018-11-25 07:44:44
        基于J2EE公司員工信息管理系統(tǒng)設計
        圖說
        尋找勾股數組的歷程
        VB數組在for循環(huán)中的應用
        考試周刊(2012年88期)2012-04-29 04:36:47
        如何使用“按鍵精靈”完成批量操作
        考試周刊(2012年10期)2012-04-29 00:14:38
        天天综合网网欲色| 久久视频在线视频精品| 亚洲成人av在线播放不卡| 亚洲av无码精品无码麻豆| 性色av闺蜜一区二区三区| 欧美中文在线观看| 亚洲免费人成网站在线观看| 亚洲永久国产中文字幕| 亚洲av日韩精品久久久久久久| 福利视频黄| 日韩精品极品视频在线观看蜜桃| 国产91久久麻豆黄片| 色欲av蜜桃一区二区三| 欧美日韩精品乱国产538| 日韩精品人妻少妇一区二区| 精品少妇一区二区三区免费| 一区二区三区乱码在线 | 欧洲| 99国产超薄丝袜足j在线观看| 久久这里只有精品黄色| 最新中文字幕一区二区| 在线视频观看免费视频18| 国产成人无码A区在线观| 北岛玲亚洲一区二区三区| 97se色综合一区二区二区| 98久9在线 | 免费| 国产精品国产自线拍免费| 成av人片一区二区久久| 99久久婷婷国产综合精品青草免费| 亚洲无码精品免费片| 偷拍av一区二区三区| 精品人妻码一区二区三区剧情| 大肉大捧一进一出好爽视色大师 | 亚洲一区二区三区无码久久| 日韩精品久久久一区| 亚洲天堂一二三四区在线| 丝袜人妻一区二区三区| 日韩乱码人妻无码中文字幕视频| 精品无码成人片一区二区| 亚洲一区二区蜜桃视频| 欧美人做人爱a全程免费| 国产日b视频|