網路城邦
上一篇 回創作列表 下一篇   字體:
【工作小筆記】Excel VBA 複製工作表欄位資料
2012/03/30 00:34:34瀏覽28321|回應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 變數】
fix_total_col = ActiveCell.SpecialCells(xlLastCell).Row【傳回並將資料最後一列的列數指定給 fix_total_col 變數】

Range("G2", "G" & total_col).Select【選取 G2 開始有資料的 G行】

Selection.Copy【將選取的 G 行儲存格內容複製起來】
Sheets(2).Select【選取第二個活頁】
Range("B" & count_col).Select【選取 B2 開始相對於剛剛選取 G列的欄位數】
ActiveSheet.Paste【將資料貼上B2 開始的 B 行】
Application.CutCopyMode = False【僅貼上資料,非剪下貼上之模式】
Selection.End(xlDown).Select【將遊標停留在剛剛所複製資料的最後一格】

以上 copy Size01 的個數

最後為了簡化使用者的步驟,則用 Excel 的「錄製巨集」功能來簡化寫 VBA 的工作,並將排序的欄位放大區間至 65536 列。

綜觀全部的作業,大約花了半天的時間進行 VBA 撰寫及測試,終於完成了實現該需求的 Excel 檔案可提供給需求單位。操作步驟的畫面如下:

Step 1:由其它系統轉出資料,並將該資料全數貼上第一個活頁。

Step 2:在第二個活頁中,按「開始轉出」按鈕,將資料由二維陣列轉為一維陣列。

 

Step 3:在第二個活頁中,按「資料排序」按鈕。

Step 4:將所需的資料 Copy 到 NotePad 中,並儲存成自己想要的檔案名稱即完成。

人生,不就是由一連串的選擇所組合而成。
故事,通常可以從微小的細節中受到感動。

我是「高級水電工」,也是華語導遊/華語領隊,
就讓我們一起共同體驗人生、體驗感動。

聯絡方式:https://www.facebook.com/tours4sweethome
加入好友

【版權宣告】 版權屬瑞奇所有,歡迎非商業用途轉載,並請於轉載文章之中註明原始出處,否則即視為侵權行為!


free counters
( 興趣嗜好電腦3C )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=rickyshiu&aid=6275329

 回應文章

黃彥琳~~2024' 華府櫻情
等級:8
留言加入好友
好專業
2012/03/31 23:28

這麼專業的東西,

看不懂,

但一定要按讚!崇拜


瑞奇(rickyshiu) 於 2012-04-02 22:21 回覆:

通常, 寫完這些 VBA  之後,

也可能代表我和這家公司的緣份快盡了......

我寧願我不要替任何一家公司寫 VBA ......

三條線


C.S.Julius
等級:8
留言加入好友
我們以前系上寶哥(某教授)說
2012/03/30 11:38

我們以前系上寶哥(某教授)說

"我們不用自己太強!但是,一定要認識一些強者"

"需要的時候,可以去膜拜膜拜他們!這樣就夠了!"

強者、大師!

請接受大狼一拜!

哇哈哈~~大狼粉不熟悉VBA, 以後有需要的時候,就來你家挖寶嚕~

讚!

阿彌佗佛!


在父母的夢想與理想中溺斃了!

瑞奇(rickyshiu) 於 2012-03-30 14:30 回覆:

大狼, 其實我不是強者.....

我是被逼的......

傷心