字體:小 中 大 | |
|
||||||||||||
2012/03/30 00:34:34瀏覽28712|回應2|推薦20 | ||||||||||||
這幾天因為工作量突然增加,另一位同事也在趕一個程式,但我主管又要我去了解一下另一部門的需求,看是否有辦法幫得上忙。因此,花了一點時間和需求單位訪談後,就決定以 Excel 來協助她們處理資料。 一開始,本想和我的前任一樣使用 Excel 的基本函數來處理;但在把資料導到 Excel 活頁之後發現,那些資料是以二維的方式來呈現,因而讓先前的念頭無法實現。為了簡化操作步驟,必需使用自定函數及 VBA 的複製工作表欄位來處理。 首先,為了簡化 Excel 的運算欄位,所以使用了一個自定函數,讓資料轉進來運算的活頁中時,可以直接運算資料。這個步驟不再贅述,有興趣的朋友可參考前幾篇文章的《撰寫 Excel 的自定函數》。 接著就是整個工程中,最花時間的地方,因為我得要把原始資料的二維陣列,轉換為可使用的一維陣列。其中,比較重要的命令摘要如下: count_col = 2【count_col變數指定為 2 ,資料要由第二列開始列出】 Sheets(1).Select【選取第一個活頁】 total_col = ActiveCell.SpecialCells(xlLastCell).Row【傳回並將資料最後一列的列數指定給 total_col 變數】 Range("G2", "G" & total_col).Select【選取 G2 開始有資料的 G行】 Selection.Copy【將選取的 G 行儲存格內容複製起來】 以上 copy Size01 的個數 最後為了簡化使用者的步驟,則用 Excel 的「錄製巨集」功能來簡化寫 VBA 的工作,並將排序的欄位放大區間至 65536 列。 綜觀全部的作業,大約花了半天的時間進行 VBA 撰寫及測試,終於完成了實現該需求的 Excel 檔案可提供給需求單位。操作步驟的畫面如下: Step 1:由其它系統轉出資料,並將該資料全數貼上第一個活頁。 Step 2:在第二個活頁中,按「開始轉出」按鈕,將資料由二維陣列轉為一維陣列。
Step 3:在第二個活頁中,按「資料排序」按鈕。 Step 4:將所需的資料 Copy 到 NotePad 中,並儲存成自己想要的檔案名稱即完成。
|
||||||||||||
( 興趣嗜好|電腦3C ) |