志工服務時數累計自動化

更新 發佈閱讀 21 分鐘

前言:

某單位之志工別服務時數記入於EXCEL檔內,需再匯入衛福部志工系統,內容含有每個月志工服務時數,因志工多,檔案多,筆數多,人工作業費時又常累計算錯,故提此法改善,提高效率。

1. 作業流程

<1> 輸入志工名或不輸入

<2>輸入年份

<3>讀取檔案 ,選取所需項目

<3.1> 判斷名字若不是則跳走

<3.2> 判斷年份若不是則跳走

<3.3>若志工名不同. 列出累計

<3.4>對象rec. 列出項目

<3.5>對象rec. 計算時數

<4>檔案讀取終了,列出累計

<5>JOB是否繼續,不是終了

2. 作業說明

2.0 先判斷志工檔案之資料夾是否存在,不存在結束JOB

2.1 輸入欲查志工名或不輸入直接enter,此時代表欲查詢所有志工

輸入欲查詢志工名字,判斷是否存在,不存在需再輸入

2.2 輸入欲查查詢民國年份,或不輸入直接enter,此時轉換為今年之民國年數

若輸入值 需< 140 and > 100,否則錯誤

2.3 讀取對象目錄內所有檔案,對檔案內的每一筆rec內容,尋找對象項目,若 找到,則執行動作指令

1> 依據 輸入之參數當作引數,將符合之檔案找出

2> 再判斷檔案內容是否有欲查詢之志工內容,若有將該筆Rec.之所需項目取出

3> 判斷志工名,若與前筆不同時, 列出服務時數之累計

4> 將志工服務時數等項目列出

5> 依志工別將每個月之服務時數合計,並換算服務分數之合計,換算為時數單位

 

2.4 查詢結果顯示於瑩幕外,也產出檔案可供參考確認

2.5 查詢完後,可再繼續查詢其他志工

3. 實例說明 cmd name : VolH_Cal.cmd

3.1 來源檔案即是志工別時數紀錄檔,inputfile樣本之內容如下:

姓名,身分證字號,服務日期起,服務日期迄,服務項目,服務內容,服務時數-小時,服務時數-分鐘,受服務人次,交通費,誤餐費,服務區域,備註,匯入動作,序號,國外參與服務人次,國內參與服務人次
劉孟陽,XXXXX90432,1080101,1080131,60,3,6,0,10,0,0,,,A,,,
劉孟陽,XXXXX90432,1080201,1080228,60,3,6,0,10,0,0,,,A,,,
劉孟陽,XXXXX90432,1080301,1080331,60,3,8,0,10,0,0,,,A,,,
劉孟陽,XXXXX90432,1080401,1080430,60,3,6,0,10,0,0,,,A,,,
劉孟陽,XXXXX90432,1080501,1080531,60,3,2,0,0,0,0,,,A,,,
劉孟陽,XXXXX90432,1080601,1080630,60,3,6,0,10,0,0,,,A,,,


3.2 cmd執行時,輸入欲查詢之志工,年份

如下志工名:未輸入;

年份輸入 112

*** Inquiry of volunteer service hours ***

***

**1 Enter 志工名字:

***

**2 Enter 民國年(yyy) :112

*** Volunteer service time process 執行中...

執行結果顯示如下 :

*** Volunteer service time process 執行完了

* ** Inquiry of Volunteer志工:? 年份:112 ** * 查詢日:2024/07/21 週日 10:22:14
--- 姓名 服務日起 服務日迄 時數 分鐘 ---
* 劉孟陽 1120102 1120131 2 0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* 邱鳳英 1120601 1120630 14 0
* 邱鳳英 1120701 1120731 10 30
* 邱鳳英 1120801 1120831 24 30
* 邱鳳英 1120901 1120930 17 30
* 邱鳳英 1121001 1121031 13 30
* 邱鳳英 1121101 1121130 14 0
* 邱鳳英 1121201 1121231 10 30
--------------- Sum Hours: 183 270 4.5 邱鳳英

* **-------------------------------------- 執行終了 on 2024/07/21 週日 10:22:15
**3 Do you inquire other Volunteer ? (Y/N) :

3.3 查詢產出之訊息內容,除了顯示於螢幕外,同時存入txt file

txt檔名: Inquiry_Volunteer_time.txt

本例 txt檔,只查詢四名志工,內容如下

* ** Inquiry of Volunteer志工:?  年份:112 ** *   查詢日:2024/07/21 週日 10:22:14 
--- 姓名 服務日起 服務日迄 時數 分鐘 ---
* 劉孟陽 1120102 1120131 2 0
* 劉孟陽 1120201 1120227 9 30
* 劉孟陽 1120301 1120331 8 0
* 劉孟陽 1120401 1120430 8 0
* 劉孟陽 1120501 1120531 4 0
* 劉孟陽 1120601 1120630 4 0
* 劉孟陽 1120701 1120731 4 0
* 劉孟陽 1120801 1120831 8 0
* 劉孟陽 1120901 1120930 8 0
* 劉孟陽 1121001 1121031 2 0
* 劉孟陽 1121101 1121130 8 0
* 劉孟陽 1121201 1121231 8 0
--------------- Sum Hours: 73 30 .5 劉孟陽
* 王瑛瑛 1120102 1120131 5 0
* 王瑛瑛 1120201 1120227 12 0
* 王瑛瑛 1120301 1120331 12 30
* 王瑛瑛 1120401 1120430 10 0
* 王瑛瑛 1120501 1120531 10 0
* 王瑛瑛 1120601 1120630 10 0
* 王瑛瑛 1120701 1120731 7 30
* 王瑛瑛 1120801 1120831 17 30
* 王瑛瑛 1120901 1120930 11 0
* 王瑛瑛 1121001 1121031 11 0
* 王瑛瑛 1121101 1121130 10 0
* 王瑛瑛 1121201 1121231 13 30
--------------- Sum Hours: 128 120 2.0 王瑛瑛
* 趙羅秀英 1120102 1120131 4 0
* 趙羅秀英 1120201 1120227 5 30
* 趙羅秀英 1120301 1120331 10 0
* 趙羅秀英 1120401 1120430 8 0
* 趙羅秀英 1120501 1120531 4 0
* 趙羅秀英 1120601 1120630 6 0
* 趙羅秀英 1120701 1120731 6 0
* 趙羅秀英 1120801 1120831 10 0
* 趙羅秀英 1120901 1120930 8 0
* 趙羅秀英 1121001 1121031 10 0
* 趙羅秀英 1121101 1121130 15 0
* 趙羅秀英 1121201 1121231 8 0
--------------- Sum Hours: 94 30 .5 趙羅秀英
* 邱鳳英 1120102 1120131 15 30
* 邱鳳英 1120201 1120227 16 0
* 邱鳳英 1120301 1120331 20 30
* 邱鳳英 1120401 1120430 10 30
* 邱鳳英 1120501 1120531 20 30
* 邱鳳英 1120601 1120630 14 0
* 邱鳳英 1120701 1120731 10 30
* 邱鳳英 1120801 1120831 24 30
* 邱鳳英 1120901 1120930 17 30
* 邱鳳英 1121001 1121031 13 30
* 邱鳳英 1121101 1121130 14 0
* 邱鳳英 1121201 1121231 10 30
--------------- Sum Hours: 183 270 4.5 邱鳳英

* **-------------------------------------- 執行終了 on 2024/07/21 週日 10:22:15

4. 改善前後

4.1 改善前 :

(1)須於資料夾內,尋找志工別檔案,手動一一打開檔案

(2) 開啟檔案後,找出該年度的筆數,一年12筆,人工計算整年度的服務時數,分數累計後換算為時單位

(3)多數個志工檔案,因人工作業,易手誤算錯,耗時費工,業務效率差

4.2 改善後: 

(1) 執行後,將資料夾內所有志工檔案,一個一個檔案開啟讀取資料,快速列出志工別服務時數明細及累計

(2) 查詢後的結果 螢幕顯示外,可產出txt檔案 ,提供問題原因查明確認用,或再轉作其他用途使用 

(3) 可一次查詢出全部志工,或志工個別查詢,亦能查詢過去年度之志工服務訊息,精準快速,效率佳 

5. 展開運用

(1) 志工服務時數若有誤植問題發生時,可快速查詢了解現況

(2) 其他單為各系統之資料檔案組,若有多檔或多筆資料,經常須找出資料利用場合時,可應用此法

6.設計編寫

6.1 cmd 語法使用說明

<1> 判斷資料夾是否存在

IF NOT EXIST D:\CSV ( echo ### ERROR : D:\CSV is not exist )

<2> FOR 指令內引數之運用,參考本件如下2種寫法寫法

For /f " tokens=3 delims=:," %%i in ('findstr /S /C:%PAR1% "%PARPath%\CSV\* " ') do (

IF %%i==%PAR1% SET ERRY=0)

IF NOT %ERRY%==0 ( echo ### 找不到志工名:%PAR1%\CSV ,請再輸入 )

說明:

讀取CSV資料夾內所有檔案,讀取該筆rec.內若有與定數%PAR1%相同值,則選出該筆rec,並將該REC內容以"," 作分隔之第三項目取出,以%%i 作變數名取出,提供 DO ()內之指令應用。


For /f " tokens=3,5-6,9-10 delims=:," %%i in ('findstr /S /C:A "%PARPath%\CSV\* " ') do (

CALL :ListSeleRec %%i %%j %%k %%l %%m)

說明:

讀取CSV資料夾內所有檔案,讀取該筆rec.內若有與定數相同之A值,則選出該筆rec,並將該REC內容以","或":" 作分隔之第3,5-6,9-10 共5項目取出,以%%i %%j %%k %%l %%m依序作變數名取出,提供 DO ()內之CALL指令應用,各引數值說明 i=志工姓名 j=服務日起 k=服務日迄 l=服務時數 m=服務分鐘。

<3> IF 可多層判斷,參考如下3種寫法

if A1==A1R (

cmd1-------

) else (

if A2==A2R (

cmd2-------

) else (

if A3==A3R (

cmd3-------

) else (

echo ###ERROR rec. )))

if %a% LSS 150 (echo 11) else ( if %a% GTR 100 ( echo 00 ))


if %a% LSS 150 ( if %a% GTR 100 (echo 00) )

6. 2 本例cmd 設計如下

cmd 檔名: VolH_Cal.cmd

@echo off
setlocal
SET PARPath=D:\志工\志工EXCEL
rem CD C:\Users\admin\Desktop\衛福部志工系統-志工時數

if not EXIST %PARPath%\CSV ( echo ###ERROR : %PARPath%\CSV is not exist & Goto EJob )
D:
CD %PARPath%
rem C:
echo.
echo *** Inquiry of volunteer service hours ***

:Enter_par1
:: --- PAR1 for 志工名字, PAR2 for 服務年分
set PAR1=?
set PAR2=?

echo ***
set /p PAR1="**1 Enter 志工名字:"
if %PAR1% == ? goto Enter_par2

SET ERRY=1
For /f " tokens=3 delims=:," %%i in ('findstr /S /C:%PAR1% "%PARPath%\CSV\* " ') do (
IF %%i==%PAR1% SET ERRY=0)
IF NOT %ERRY%==0 ( echo ### 找不到志工名:%PAR1%\CSV ,請再輸入
Goto Enter_par1 )

:Enter_par2
echo ***
set /p PAR2="**2 Enter 民國年(yyy) :"
if %PAR2% == ? ( SET /a PAR2=%DATE:~,4%-1911 )
set ERRY=0
if %PAR2% GTR 140 (set ERRY=1 ) else ( if %PAR2% LSS 100 ( set ERRY=1 ))
if %ERRY%==1 (
echo ###ERROR 輸入 %PAR2% ,民國年度不正確,請再輸入
goto Enter_par2 )

:Process_Begin
::----出力txt之表頭設定
echo. > Inquiry_Volunteer_time.txt
echo * ** Inquiry of Volunteer志工:%PAR1% 年份:%PAR2% ** * 查詢日:%DATE% %TIME:~,8% >> Inquiry_Volunteer_time.txt
echo --- 姓名 服務日起 服務日迄 時數 分鐘 --- >> Inquiry_Volunteer_time.txt
echo *** Volunteer service time process 執行中...

set B_VName=INIT_VName
SET /a SumH=0
SET /a SumM=0

rem ---Read rec. 無輸入志工名以 "."代替全部讀取
::-----讀取%PARPath%\CSV\* 內所有檔案,檢查檔案內有 A 的該筆資料列出,帶出5個引數----
::---i=姓名 j=服務日起 k=服務日迄 l=時數 m=分鐘
For /f " tokens=3,5-6,9-10 delims=:," %%i in ('findstr /S /C:A "%PARPath%\CSV\* " ') do (
CALL :ListSeleRec %%i %%j %%k %%l %%m)

::----列出合計志工別之服務時數
CALL :Sum_List

echo. >> Inquiry_Volunteer_time.txt
echo *** Volunteer service time process 執行完了
echo * **-------------------------------------- 執行終了 on %DATE% %TIME:~,8% >> Inquiry_Volunteer_time.txt
type Inquiry_Volunteer_time.txt

::----可再次重複執行
set /p PAR3="**3 Do you inquire other Volunteer ? (Y/N) :"
if /i %PAR3% == Y goto Enter_par1

pause ----
:EJob
:: end job
endlocal
exit

:ListSeleRec
::---讀取之年分判斷 yyy = PAR2
SET SByyy=%2
SET SEyyy=%3
IF %SByyy:~0,3% NEQ %PAR2% GOTO Exit_ListSeleRec
::---judg VName is PAR1=? or specify

IF NOT %PAR1%==? (IF NOT %PAR1%==%1 GOTO Exit_ListSeleRec)

::---judg B_Name NEQ C_Name
IF NOT %B_VName%==INIT_VName (IF NOT %B_VName%==%1 CALL :Sum_List)

::---judg S-yyymm and E-yyymm-----
IF %SByyy:~0,5% NEQ %SEyyy:~0,5% ( set ERRym=## ERRyyymm
) ELSE ( set ERRym= )

::---List out correct rec.
echo * %1 %2 %3 %4 %5 %ERRym%>>Inquiry_Volunteer_time.txt

::---時數合計
SET /a VH=%4
SET /a VM=%5
SET /a SumH=SumH+VH
SET /a SumM=SumM+VM

::---Move %1 to B_VName
SET B_VName=%1

:Exit_ListSeleRec
rem pause 2.5 list exit -----
EXIT /B

::-----讀取志工名變化時,列印出時數合計
:Sum_List
SET /a SumM_H=0
SET /a SumM_H=(SumM * 10) / 60
SET SumM_H=%SumM_H:~0,-1%.%SumM_H:~-1,1%

echo --------------- Sum Hours: %SumH% %SumM% %SumM_H% %B_VName%>>Inquiry_Volunteer_time.txt
SET /a SumH=0
SET /a SumM=0
rem pause 3.5 sum list---------
EXIT /B

--------by linct---------

留言
avatar-img
linct的沙龍
76會員
275內容數
樂趣體驗紀錄,沙龍房間有歌唱,生活,科技
linct的沙龍的其他內容
2025/03/31
比爾·蓋茲於1999年出版的《數位神經系統》一書,至今仍具有參考價值。本文探討該書的核心概念,如何在當今的科技環境下應用數位神經系統,並提出一些需要調整的部分。
Thumbnail
2025/03/31
比爾·蓋茲於1999年出版的《數位神經系統》一書,至今仍具有參考價值。本文探討該書的核心概念,如何在當今的科技環境下應用數位神經系統,並提出一些需要調整的部分。
Thumbnail
2025/01/26
此程式利用批次檔(bat)結合vbscript,自動篩選Windows事件紀錄,並產生Excel報表,方便管理人員統計與分析系統事件。
Thumbnail
2025/01/26
此程式利用批次檔(bat)結合vbscript,自動篩選Windows事件紀錄,並產生Excel報表,方便管理人員統計與分析系統事件。
Thumbnail
2025/01/20
此程式 可將 CSV 檔案資料轉換並更新至 Excel 檔案,減少檔案大小並方便傳輸。程式可自訂 CSV、Excel 檔案路徑及更新範圍,多種儲存格式與應用場景,如讀取 TXT 檔案、保留 Excel 巨集公式及設定排程自動執行等。
Thumbnail
2025/01/20
此程式 可將 CSV 檔案資料轉換並更新至 Excel 檔案,減少檔案大小並方便傳輸。程式可自訂 CSV、Excel 檔案路徑及更新範圍,多種儲存格式與應用場景,如讀取 TXT 檔案、保留 Excel 巨集公式及設定排程自動執行等。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
當你想升級設備、投放廣告,或是為了雙 11 提前備貨,卻發現現金流卡住時,除了等銀行、跟親友開口,其實還有一個常被忽略、卻很有力的選項。讓房子,成為你事業的贊助商——國峯厝好貸。
Thumbnail
當你想升級設備、投放廣告,或是為了雙 11 提前備貨,卻發現現金流卡住時,除了等銀行、跟親友開口,其實還有一個常被忽略、卻很有力的選項。讓房子,成為你事業的贊助商——國峯厝好貸。
Thumbnail
這篇文章探討如何使用 VBA 來設計一個隨機生成不重覆的排班表,解決依據每日、每站、每人進行的排班需求。文章分享了設定人員、站點及工作日的基本步驟,並使用 AI - ChatGPT 4o 做為互動,最終產生了滿意的結果,並提供了一個 VBA設計完成 的影片 以及 免費的檔案下載。
Thumbnail
這篇文章探討如何使用 VBA 來設計一個隨機生成不重覆的排班表,解決依據每日、每站、每人進行的排班需求。文章分享了設定人員、站點及工作日的基本步驟,並使用 AI - ChatGPT 4o 做為互動,最終產生了滿意的結果,並提供了一個 VBA設計完成 的影片 以及 免費的檔案下載。
Thumbnail
僅代表個人立場,抒發與分享工作相關的點點滴滴。
Thumbnail
僅代表個人立場,抒發與分享工作相關的點點滴滴。
Thumbnail
某單位志工服務時數記錄在檔案內,需匯入衛福部志工系統,但由於志工多、檔案多,進行人工計算耗時費工且常累計算錯。故提此法改善,提高效率。文章內容包含了作業流程、作業說明、實例說明、改善前後、展開運用和設計編寫。
Thumbnail
某單位志工服務時數記錄在檔案內,需匯入衛福部志工系統,但由於志工多、檔案多,進行人工計算耗時費工且常累計算錯。故提此法改善,提高效率。文章內容包含了作業流程、作業說明、實例說明、改善前後、展開運用和設計編寫。
Thumbnail
科技發達的現代,就要善用科技化產品,來處理店裡的大小事務!排假是每個企業都會遇到的問題,該如何安排才能同時符合員工以及現場的需求?
Thumbnail
科技發達的現代,就要善用科技化產品,來處理店裡的大小事務!排假是每個企業都會遇到的問題,該如何安排才能同時符合員工以及現場的需求?
Thumbnail
透過 Google Sheets 和 Make 打造專案任務自動提醒系統,當一到專案任務重要時程,系統便自動寄發專案任務的提醒信件或行事曆邀請,給專案任務負責人和相關團隊成員,確保專案進度如期完成,有效提升跨部門溝通協作效率!不再花費時間人工追蹤時程進度,釋放時間及專注力,專注在更重要的工作上!
Thumbnail
透過 Google Sheets 和 Make 打造專案任務自動提醒系統,當一到專案任務重要時程,系統便自動寄發專案任務的提醒信件或行事曆邀請,給專案任務負責人和相關團隊成員,確保專案進度如期完成,有效提升跨部門溝通協作效率!不再花費時間人工追蹤時程進度,釋放時間及專注力,專注在更重要的工作上!
Thumbnail
當你剛進入職場時,可能會覺得工作效率低,事情多且繁瑣。這篇文章提供了3種簡單的優化方法:模板化、流程化和清單化,可以幫助你顯著提高工作效率。
Thumbnail
當你剛進入職場時,可能會覺得工作效率低,事情多且繁瑣。這篇文章提供了3種簡單的優化方法:模板化、流程化和清單化,可以幫助你顯著提高工作效率。
Thumbnail
為了在有限的時間內獲得更多有效產出,不少團隊會選擇採用生產力工具,來幫助追蹤工作的進度和截止時間,確保團隊能提升工作效率、降低壓力,並騰出更多時間專注於更重要的任務。以下將推薦一些市面上好用的生產力工具,幫助團隊在各種情境下選擇適合的工具,讓團隊能保有最好的工作效率,以迎向各種挑戰。
Thumbnail
為了在有限的時間內獲得更多有效產出,不少團隊會選擇採用生產力工具,來幫助追蹤工作的進度和截止時間,確保團隊能提升工作效率、降低壓力,並騰出更多時間專注於更重要的任務。以下將推薦一些市面上好用的生產力工具,幫助團隊在各種情境下選擇適合的工具,讓團隊能保有最好的工作效率,以迎向各種挑戰。
Thumbnail
其實流程不是不能改,只是考量要長遠、考慮周到。財會工作就是搜集、整理、統計、分析資料,不是只「記帳」而已,任何流程的建立都是為了能便於分析,快速找到問題。如果沒有意識到這一點,就是連自己也輕看自己的工作了。
Thumbnail
其實流程不是不能改,只是考量要長遠、考慮周到。財會工作就是搜集、整理、統計、分析資料,不是只「記帳」而已,任何流程的建立都是為了能便於分析,快速找到問題。如果沒有意識到這一點,就是連自己也輕看自己的工作了。
Thumbnail
內容行事曆是一種策略工具,可以幫助職場人士預先規劃和組織其內容創作與發布。透過明確規劃每日、每週或每月的內容主題、格式、發布管道和目標受眾,業者可以更有效地吸引、參與和保留客戶。特別是在節日或特殊事件期間,內容行事曆能夠幫助業者提前準備,確保市場活動和宣傳內容的時效性和吸引力。
Thumbnail
內容行事曆是一種策略工具,可以幫助職場人士預先規劃和組織其內容創作與發布。透過明確規劃每日、每週或每月的內容主題、格式、發布管道和目標受眾,業者可以更有效地吸引、參與和保留客戶。特別是在節日或特殊事件期間,內容行事曆能夠幫助業者提前準備,確保市場活動和宣傳內容的時效性和吸引力。
Thumbnail
在工作中,我們經常需要處理各種報表,而其中一項任務就是每天手動更新報表。這可能是一個繁瑣且容易被遺忘的工作,但有幸的是,我們可以利用VBA(Visual Basic for Applications)和Windows工作排程器來自動化這個過程,讓我們在不知不覺中完成這項任務。
Thumbnail
在工作中,我們經常需要處理各種報表,而其中一項任務就是每天手動更新報表。這可能是一個繁瑣且容易被遺忘的工作,但有幸的是,我們可以利用VBA(Visual Basic for Applications)和Windows工作排程器來自動化這個過程,讓我們在不知不覺中完成這項任務。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News