Excel·VBA江西省預算一體化工資表一鍵處理

每月制作工資表導出為Excel后都需要調整格式,刪除0數據的列、對工資表項目進行排序、打印設置等等,有些單位還分有“行政”、“事業”2個工資表就需要操作2次。顯然,這種重復操作的問題,可以使用VBA代碼解決

目錄

    • 代碼使用說明
    • 1,工資表格式處理
      • 涉及功能
      • 舉例
    • 2,工資表數據統計
      • 舉例

代碼使用說明

  • 代碼作用范圍:以下代碼作用于活動工作簿/工作表,無需將待處理的工資表保存在啟用宏的工作簿中(xlsm格式),只要待處理的工資表處于活動狀態即可運行代碼。同時,也不建議把數據保存在xlsm文件中,vba代碼運行結果是無法撤銷的
    活動工作簿:如果打開多個工作簿,顯示在最前面的就是活動工作簿
    活動工作表:活動工作簿當前顯示的工作表

1,工資表格式處理

涉及功能

  • 數據調整:工資表各項目按指定順序排序,添加合計數行,刪除合計數為0的列,刪除無意義項目列(應發合計、扣款合計),添加工資表所屬月份,添加個稅所屬月份,添加制表人及時間
    參數bt可指定工資表各項目的順序,如果工資表中存在某項不在參數bt內,且合計數不為0的,則該列排序在最后一列
  • 格式設置:行高、自適應列寬、文字居中、自動換行、隱藏指定列、所有框線
    存在部分列設置自適應列寬,但效果不佳的,可以在代碼運行后手工調整
  • 打印設置:橫向打印、頁邊距、打印標題、打印頁腳、凍結表格
Sub 工資表格式處理()'將每月2張工資表放在同一工作簿中,分別命名“行政、事業”,運行本代碼Dim title_row, title_h, row_h, bt, brr, ws, start_col&, b, i&, j&, gs&title_row = 3: title_h = 13.2: row_h = 24  '表頭行數,前2行行高,其他行高zbr_name = "制表人:薛定諤  " & Format(Date, "yyyy.mm.dd")bt = "職務工資,級別工資,崗位工資,薪級(技術)工資,教師(10%)," _& "績效獎金,生活補助,工作津貼,崗位津貼,降溫取暖費,公車改革補貼," _& "補發工資(停發),應發工資,養老保險,職業年金,醫療保險,失業保險," _& "住房公積金,代扣個稅,單位代扣小計,代扣其它,實發合計"  '表頭及順序brr = Split(bt, ",")For Each ws In ActiveWorkbook.WorksheetsWith ws'格式設置:行高、居中、自動換行、合并單元格、隱藏D-E列.Rows.RowHeight = row_h: .Rows("1:2").RowHeight = title_h.Rows(3).RowHeight = 25.2    '第3行行高.Cells.HorizontalAlignment = xlCenter  '全表居中.Cells.VerticalAlignment = xlCenter.Rows(3).WrapText = True     '第3行自動換行.Columns(2).WrapText = True  '第2列自動換行,單位名稱.Cells(1, 1).UnMerge    '取消合并單元格,方便調整列排序.Columns("d:e").Hidden = True'添加合計行,刪除合計數為零的列,刪除“應發合計,扣款合計”列hb_row = .UsedRange.Rows.count + 1: .Cells(hb_row, 3) = "合計"For j = 6 To .UsedRange.Columns.count.Cells(hb_row, j).FormulaR1C1 = "=SUM(R[" & 4 - hb_row & "]C[0]:R[-1]C[0])"NextFor j = .UsedRange.Columns.count To 6 Step -1If .Cells(hb_row, j) = 0 Or .Cells(3, j) = "應發合計" _Or .Cells(3, j) = "扣款合計" Then .Columns(j).DeleteNext'調整列排序,剪切列、插入列start_col = 6  '開始列號For Each b In brrFor j = 6 To .UsedRange.Columns.countIf .Cells(3, j) = b ThenIf j <> start_col Then.Columns(j).Cut.Columns(start_col).InsertEnd Ifstart_col = start_col + 1: Exit For  '遞增、跳出End IfNextNextIf Month(Date) = 1 Then gs = 12 Else gs = Month(Date) - 1  '個稅所屬月份For j = .UsedRange.Columns.count To 6 Step -1If .Cells(3, j) = "代扣個稅" Then .Cells(3, j) = "代扣" & gs & "月個稅": Exit ForNext'增加第1列序號列,表頭合并單元格,所有框線,列寬自適應.Columns(1).Insert: .Cells(3, 1) = "序號"For i = 4 To .UsedRange.Rows.count - 1.Cells(i, 1) = i - 3Next.Cells(1, 2) = Replace(.Cells(1, 2).Value, "局", "局" & Month(Date) & "月").Cells(1, 1).Resize(2, .UsedRange.Columns.count).Merge.UsedRange.Borders.LineStyle = xlContinuousRange(.Columns(7), .Columns(.UsedRange.Columns.count)).ColumnWidth = 4Range(.Columns(7), .Columns(.UsedRange.Columns.count)).AutoFitRange(.Columns(1), .Columns(2)).AutoFit: .Columns(4).AutoFit.Cells(.UsedRange.Rows.count + 1, .UsedRange.Columns.count - 2) = zbr_name'設置工作表橫向打印、頁邊距、打印標題、打印頁腳、凍結表格With .PageSetup.Orientation = xlLandscape  '橫向打印.PrintTitleRows = "$1:$3"   '打印標題.TopMargin = Application.InchesToPoints(0.787)     '上邊距2厘米.BottomMargin = Application.InchesToPoints(0.787)  '下邊距2厘米.CenterFooter = "第 &P 頁,共 &N 頁"  '打印頁腳End WithEnd WithNext
End Sub

舉例

系統導出工資表,保存至同一個工作簿的不同工作表(部分截圖)
在這里插入圖片描述
代碼處理后工資表
在這里插入圖片描述
在這里插入圖片描述

2,工資表數據統計

為便于賬務處理以及數據核對,對以上經過代碼處理的工資表進行數據統計
工資收入部分分別計入:基本工資、津貼補貼、績效獎金

Sub 工資表數據統計()'僅適用于統計經過以上代碼處理的工資表Dim dict1 As Object, dict2 As Object, jb$, jbt$, arr, brr, ws, res, i&, j&, gzxm$jb = "職務工資,級別工資,崗位工資,薪級(技術)工資,教師(10%)"  '基本工資jbt = "生活補助,工作津貼,崗位津貼,降溫取暖費,公車改革補貼"      '津貼補貼title_row = 3: start_col = 7  '表頭行號,開始列號Set dict1 = CreateObject("scripting.dictionary")brr = Split(jb, ",")For Each b In brrdict1(b) = "基本工資"Nextbrr = Split(jbt, ",")For Each b In brrdict1(b) = "津貼補貼"NextSet dict2 = CreateObject("scripting.dictionary")Set dict2("基本工資") = CreateObject("scripting.dictionary")  '字典嵌套Set dict2("津貼補貼") = CreateObject("scripting.dictionary")For Each ws In ActiveWorkbook.Worksheetsarr = ws.UsedRange.Value: ws_name = ws.Name: s = s + "," + ws_nametotal_row = ws.UsedRange.Rows.count - 1  '合計行號For j = start_col To UBound(arr, 2)gzxm = arr(title_row, j)  '工資項目If Not dict1.Exists(gzxm) And Not dict2.Exists(gzxm) Then  '不屬于基本工資、津貼補貼Set dict2(gzxm) = CreateObject("scripting.dictionary")ElseIf dict1.Exists(gzxm) Thengzxm = dict1(gzxm)    '屬于基本工資、津貼補貼,則轉換End Ifdict2(gzxm)(ws_name) = dict2(gzxm)(ws_name) + arr(total_row, j)NextNextk2 = dict2.keys: brr = Split(s, ",")  '字典dict2所有鍵轉為數組,拆分字符串sReDim res(1 To dict2.count + 1, 1 To UBound(brr) + 2)  '統計結果數組'橫縱條件賦值到數組For i = 2 To UBound(res)  '縱向res(i, 1) = k2(i - 2)NextFor j = 1 To UBound(brr)  '橫向res(1, j + 1) = brr(j)Nextres(1, UBound(res, 2)) = "合計"'數組結果賦值到res數組For i = 2 To UBound(res)  '縱向For j = 2 To UBound(res, 2) - 1  '橫向If dict2(res(i, 1)).Exists(res(1, j)) Thenres(i, j) = dict2(res(i, 1))(res(1, j))res(i, UBound(res, 2)) = res(i, UBound(res, 2)) + res(i, j)End IfNextNextWorksheets.Add(After:=Sheets(Sheets.count)).Name = "統計"  '添加工作表并命名Worksheets("統計").[a1].Resize(UBound(res), UBound(res, 2)) = resWith Worksheets("統計")  '格式設置.Cells.Font.Name = "宋體": .Cells.Font.Size = 12: .Rows.RowHeight = 20.Cells.HorizontalAlignment = xlCenter  '全表居中.Cells.VerticalAlignment = xlCenterRange(.Columns(1), .Columns(.UsedRange.Columns.count)).AutoFitEnd With
End Sub

舉例

對1-舉例處理結果進行統計:
部分統計結果的順序可能需要手工調整,如失業保險
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72802.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72802.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72802.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度學習驅動的跨行業智能化革命:技術突破與實踐創新

第一章 深度學習的技術范式演進與核心架構 1.1 從傳統機器學習到深度神經網絡的跨越 深度學習的核心在于通過多層次非線性變換自動提取數據特征,其發展歷程可劃分為三個階段:符號主義時代的規則驅動(1950s-1980s)、連接主義時代的淺層網絡(1990s-2000s)以及深度學習時代…

嵌入式學習筆記-卡爾曼濾波,PID,MicroPython

文章目錄 卡爾曼濾波卡爾曼濾波的核心思想卡爾曼濾波的數學模型1. 狀態轉移模型&#xff08;預測系統狀態&#xff09;2. 觀測模型&#xff08;預測測量值&#xff09; 卡爾曼濾波的五個關鍵步驟1. 預測狀態2. 預測誤差協方差3. 計算卡爾曼增益4. 更新狀態5. 更新誤差協方差 卡…

一周熱點-文本生成中的擴散模型- Mercury Coder

一、背景知識 在人工智能領域&#xff0c;文本生成模型一直是研究的熱點。傳統的大型語言模型多采用自回歸架構&#xff0c;從左到右逐個預測下一個標記。這種模型雖然在生成連貫文本方面表現出色&#xff0c;但在速度上存在一定的局限性&#xff0c;因為它需要按順序生成每個標…

Qt調試功能使用方法

QT編程環境 QT在Windows操作系統下的三種編程環境搭建。 方案編程環境編譯器調試器1Qt CreatorMinGW GCCGDB2Qt CreatorMicrosoft Visual C CompilerDebugging Tools for Widows3Microsoft Visual Studio VS自帶VS自帶 方案提及的QT安裝程序及壓縮包均能在官網Index of /off…

vulnhub靶場之【digitalworld.local系列】的mercy靶機

前言 靶機&#xff1a;digitalworld.local-mercy&#xff0c;IP地址為192.168.10.11 攻擊&#xff1a;kali&#xff0c;IP地址為192.168.10.6 kali采用VMware虛擬機&#xff0c;靶機選擇使用VMware打開文件&#xff0c;都選擇橋接網絡 這里官方給的有兩種方式&#xff0c;一…

Fiddler抓取App接口-Andriod/IOS配置方法

Andriod配置方法&#xff1a; 1&#xff09;確保手機和Fiddler所在主機在同一個局域網中 2&#xff09;獲取Fiddler所在主機的ip地址&#xff0c;通過cmd命令進入命令編輯器&#xff0c;輸入ipconfig -all&#xff0c;找到IPv4地址&#xff0c;記下該地址 3&#xff09;對手機…

步進電機軟件細分算法解析與實踐指南

1. 步進電機細分技術概述 步進電機是一種將電脈沖信號轉換為角位移的執行機構&#xff0c;其基本運動單位為步距角。傳統步進電機的步距角通常為 1.8&#xff08;對應 200 步 / 轉&#xff09;&#xff0c;但在高精度定位場景下&#xff0c;這種分辨率已無法滿足需求。細分技術…

C語言_數據結構總結2:動態分配方式的順序表

0——靜態分配內存的順序表和動態分配內存的順序表的相同之處和不同之處 相同之處 基本操作邏輯相同&#xff1a;無論是靜態分配還是動態分配的順序表&#xff0c;其核心的操作邏輯是一致的。例如插入操作都需要將插入位置之后的元素依次后移&#xff0c;刪除操作都需要將刪除…

Vue 與 Element UI 深度探秘:從 Array.isArray 到動態綁定的技術之旅!?

以下是一篇深入的技術博客&#xff0c;基于我們對 compare-form.vue 和 <w-form-select.vue> 的所有討論&#xff0c;涵蓋 Array.isArray、option-label/option-value、:list 動態綁定、: 語法以及 Vue 2/3 兼容性等問題。博客風格輕松有趣&#xff0c;加入 SVG 圖解和實…

計算機視覺|3D卷積網絡VoxelNet:點云檢測的革新力量

一、引言 在科技快速發展的背景下&#xff0c;3D 目標檢測技術在自動駕駛和機器人領域中具有重要作用。 在自動駕駛領域&#xff0c;車輛需實時、準確感知周圍環境中的目標物體&#xff0c;如行人、車輛、交通標志和障礙物等。只有精確檢測這些目標的位置、姿態和類別&#x…

前端打包優化相關 Webpack

前端打包優化相關 Webpack 打包時間的優化&#xff08;基于 Vue CLI 4 Webpack 5&#xff09; 1. Webpack 配置減少打包時間 1.1 對 JS 配置&#xff1a;排除 node_modules 和 src 中的打包內容 在開發環境下&#xff0c;修改 Webpack 的 JS 規則&#xff0c;排除 /node_m…

leetcode69.x 的平方根

題目&#xff1a; 給你一個非負整數 x &#xff0c;計算并返回 x 的 算術平方根 。 由于返回類型是整數&#xff0c;結果只保留 整數部分 &#xff0c;小數部分將被 舍去 。 注意&#xff1a;不允許使用任何內置指數函數和算符&#xff0c;例如 pow(x, 0.5) 或者 x ** 0.5 。…

Docker 部署 MongoDB 并持久化數據

Docker 部署 MongoDB 并持久化數據 在現代開發中&#xff0c;MongoDB 作為 NoSQL 數據庫廣泛應用&#xff0c;而 Docker 則提供了高效的容器化方案。本教程將介紹如何使用 Docker 快速部署 MongoDB&#xff0c;并實現數據持久化&#xff0c;確保數據不會因容器重啟或刪除而丟失…

信奧賽CSP-J復賽集訓(模擬算法專題)(3):P1089 [NOIP 2004 提高組] 津津的儲蓄計劃

信奧賽CSP-J復賽集訓&#xff08;模擬算法專題&#xff09;&#xff08;3&#xff09;&#xff1a;P1089 [NOIP 2004 提高組] 津津的儲蓄計劃 題目描述 津津的零花錢一直都是自己管理。每個月的月初媽媽給津津 300 300 300 元錢&#xff0c;津津會預算這個月的花銷&#xff0…

日新F1、瑞研F600P 干線光纖熔接(熔接損耗最大0.03DB)

Ⅰ. 設備特性對比與實測驗證 1. 日新F1&#xff08;兩馬達&#xff09;極限參數 切割角度&#xff1a;必須≤0.3&#xff08;雙邊累計誤差&#xff1c;0.6&#xff09; ? 實測案例&#xff1a;切割0.35時&#xff0c;損耗波動達0.05-0.08dB&#xff08;超干線標準&#xff09…

【量化科普】Sharpe Ratio,夏普比率

【量化科普】Sharpe Ratio&#xff0c;夏普比率 &#x1f680;量化軟件開通 &#x1f680;量化實戰教程 在量化投資領域&#xff0c;夏普比率&#xff08;Sharpe Ratio&#xff09;是一個非常重要的風險調整后收益指標。它由諾貝爾經濟學獎得主威廉F夏普&#xff08;William…

數據結構--【順序表與鏈表】筆記

順序表 template <class T> class arrList :public List<T> //表示 arrList 類以公有繼承的方式繼承自 List<T> 類 //公有繼承意味著 List<T> 類的公共成員在 arrList 類中仍然是公共成員&#xff0c;受保護成員在 arrList 類中仍然是受保護成員。 { …

idea中隱藏目錄

可能的解決步驟&#xff1a; 排除目錄的方法是否在2021版本中有變化&#xff1f;應該沒有&#xff0c;還是通過右鍵標記為排除。 用戶可能想完全隱藏目錄&#xff0c;比如在項目視圖中不顯示&#xff0c;這可能需要調整項目視圖的設置&#xff0c;比如取消勾選“顯示排除的文件…

AWS 如何導入內部SSL 證書

SSL 證書的很重要的功能就是 HTTP- > HTTPS, 下面就說明一下怎么導入ssl 證書,然后綁定證書到ALB. 以下示例說明如何使用 AWS Management Console 導入證書。 從以下位置打開 ACM 控制臺:https://console.aws.amazon.com/acm/home。如果您是首次使用 ACM,請查找 AWS Cer…

2025最新群智能優化算法:基于RRT的優化器(RRT-based Optimizer,RRTO)求解23個經典函數測試集,MATLAB

一、基于RRT的優化器 基于RRT的優化器&#xff08;RRT-based Optimizer&#xff0c;RRTO&#xff09;是2025年提出的一種新型元啟發式算法。其受常用于機器人路徑規劃的快速探索隨機樹&#xff08;RRT&#xff09;算法的搜索機制啟發&#xff0c;首次將RRT算法的概念與元啟發式…