~ 上傳‧分享‧網賺 ~
~ 免費上傳空間‧請即申請 Freak Share ~
~ 進入後請點選左上角 注冊 ! ~
~ 聲明事項 ~
如各位想把以下本文章轉貼 , 請記得要注明出處.
本文章之內容為本人之經驗所寫, 絕無抄襲成份, 特此聲明.
由於圖片製作需時, 所以更新會比較慢.
存放圖片的 SHARE A PIC SERVER 可能讀取速度較慢, 請耐心等待.
GOOD MORNING CLASS ~~~~ :P
哈哈 ~ 原來真的是蠻過癮的嘛 ~ 哈哈 ~
嗯 … 看到你的圖片 , 可以想像得到 , 原本的報表中 , 資料的排序方式是全部都放在欄A 的 , 而你的目的就是 , 先把資料進行分類 , 然後再排序 , 把資料並排方便查閱 . 嗯 , 我相信 , 現在最困難的地方是 , 如何利用 EXCEL VBA 進行資料分類以及排序吧 … 嗯 … 好像問題都只有這兩個吧 ~ 哈哈 ~ ( 嗯 … 此段純粹為了欺騙排版而寫的 ~ 嘿嘿嘿 ~ :P )
好 , 先簡單地說明一下我的解決方法 , 首先 , 我會先用人手查看有多少個貨品種類 ( 這是為了準備資料分類後的資料儲存位置做的準備 , 加上如果按照你給出來的圖片 , 類別應該不會太多吧~ ) , 然後是利用 EXCEL VBA 進行資料分類 , 再進行排序 .
好 , 先解決第一個問題吧 , 就是資料分類的問題 .
說實在的 , 這個問題比較困難 , 因為需要配合 EXCEL 的函數公式來協助 , 而函數式有多難以理解 , 我相信很多人都明白的 :P
先看一下圖片
( PicR1_1 )
圖片跟你給我的差不多吧 ~ 哈哈 ~ 要使電腦明白如何把資料進行分類 , 首先要告訴它 , 分類的條件是什麼 . 嗯 … 根據上面的圖片 , 你應該發現 , 我的資料跟你的資料的共通處是 , 貨物型號的編排方法是有固定規則的 , 如果細心留意一下 , 這些料號是在固定規則再加上一個流水號 , 如果要利用流水號進行資料分辨 , 這實在是不合理的行為 , 所以嘛 ~ 要解決這個情況的話 , 最好的就是利用固定規則安排的英文字代號來告訴電腦分類的條件 .
首先 , 先學習一下 , 怎樣把這個條件找出來吧 ~ 嗯 … 嗯 … 這個吧 … 這個應該 ok 的
=LEFT(A1,3)
=LEFT 這個函數其實很容易使用的 , 這傢伙的使用結果是 , 找出目標儲存格內的文字 , 由左到右的首 3 個字 , 嘿嘿嘿 ~ 很好很好 , 這個找條件的方法確實是好得很 :P ( 再說明一下 , 上面的函數式最後那個數字是可以更改的 , 現在是 3 , 但是你可以按照你的要求來更改 )
有了這個函數之後 , 第二個問題就是如何加進你的報表裡 .
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
記得上面的程式碼嗎 ?
這就是加插一個新欄位的程式碼 , 加入一個新的欄位之後 , 嘿嘿嘿 ~ 問題來了 ~ 如何加入函數式到這欄的每一個位置 ~ ( 我所指的當然是欄 A 中有資料的位置囉 ~ )
嗯 , 對於這個問題 , 我先給你利用 EXCEL VBA 增加函數式到儲存格的程式碼吧 ~
Worksheets("Sheet1").Range("C1").Select
Worksheets("Sheet1").Range("C1").Formula = "=LEFT(A1,3)"
上面的程式碼就是把函數式增加到儲存格的方法 , 要注意的是 , 函數式是放在 “” 裡面的 , 如果在函數式裡出現了第二組的 “” , 那麼程式就會出現錯誤了 ~ 那時候便要改用 R1C1 的編寫方法 . 順道說明一下吧 , 如果上面的 =LEFT(A1,3) 函數式要改成 R1C1 的編寫方法的話 , 函數式就會變成=LEFT(R[-2]C[-2],3) , 嗯 ~ 看上去很複雜吧 ~ 其實也沒什麼大不了的 , R[-2]C[-2] 其實是座標來的 , 目前選擇了的儲存格座標就是 ( 0,0 ) , R 就是 Y 軸 , C 就是 X 軸 , 嗯 , 只是反轉了吧 , 很容易理解吧 , 對不 ~ 當然囉 ~ 這此不需要搞到這麼複雜的 ~ 就用上面那兩句程式碼就好 .
好 ~ 到我來考驗你了 ~ 嘿嘿嘿 :P
插入新一欄的方法有了 , 可以利用的函數式有了 , 現在就給你一個問題 , 如何把函數式貼在 C 欄的儲存格內 , 而貼上去之前 , 要先確定 A 欄的對應位置是有資料的 . 嘿嘿嘿 ~ 一點也不困難吧 :P , 給你一點提示 :
找到最後一個記錄的方法是 …..
FOR LOOP 迴圈的使用方法是 ……
選擇 … … 然後 …. … COPY …… 然後 ….. PASTE ……
嗯 … 提示滿多的嘛 ~ 哈哈 ~
好 ~ 資料的分辨方法有了 , 現在就來到了另一個部份 , 就是要告訴你的電腦 , 當條件成立就做什麼 . 嗯 … 這句話聽過很多次了吧 ~ 現在 , C 欄中的資料就是條件
( PicR1_2 )
當 條件 是 A , 就把儲存格 C2 的資料放到儲存格 F2 , B2 放到 G2 ,
當 條件 是 B , 就把儲存格 C2 的資料放到儲存格 H2 , B2 放到 I2 ,
當 條件 是 C , 就把儲存格 C2 的資料放到儲存格 J2 , B2 放到 K2 ,
當 條件 是 D , 就把儲存格 C2 的資料放到儲存格 L2 , B2 放到 M2 ,
此段程式碼就不提供了 , 提示就給多一點吧 XD
If Then Else … 嗯 … For Loop … 嗯 … 差不多了吧 ~ 哦 ~ 對了 , 還有 , 好好利用剛剛找出來的那個 “ 最後一個記錄的位置 ”
好 ~ 來到這個部份 , 資料分類就應該可以順利完成了 , 現在的問題是 , 如何把已分類好的資料弄得漂亮一點 , 要做這個動作 , 其實也是很簡單的嘛 ~ 只要利用 VBA 來進行資料排序就可以了 ~ 看一下圖片 :
( PicR1_3 )
排序後的結果應該就是你想要的東西吧 ~ 對嗎 ? 那就分享一下排序的 EXCEL VBA 程式碼是什麼東東吧 ~
Range("H2:I13").Select
Selection.Sort Key1:=Range("H2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlStroke, DataOption1:=xlSortNormal
上面的程式碼就是用作排序的程式碼 , 首先選擇了儲存格位置的 H2 到 I13 - Range("H2:I13").Select , 排序條件是儲存格 H2 - Selection.Sort Key1:=Range("H2") , 然後是進行遞增排序 - Order1:=xlAscending, … 嗯 , 其他的就先不管了 ~ 排序完成之後就可以做到你想要的效果了 ~
當然囉 ~ 我的這個樣本是 H2 到 I13 的儲存格 , 然而 , 你的報表中的最後一個記錄不可能是 13 吧 ~ 對不 ? 所以選擇的時候就要利用之前找出來的變量 ( 找出最後一個記錄的那個哦 ~ ) 來確定應該要被選擇的範圍 .
還記得嘛 ~ 要利用變量選擇儲存格的方法是 Range("H2:I" & XXX ).Select ~ OK !?
要做多少次排序的動作嘛 ~ 就要看你有多少個項目的資料被找出來了 ~ 當然 , 記得要小心修正程式碼哦 ~ 錯了的話就會浪費很多時間去除蟲 ( DEBUG ) 了 ~
==================
好了 ~ 問題基本上是解決了 ~ 而用的方法是最簡單最直接的方法 , 要配合人手先進行處理嘛 ~ 如果你細心想一想 , 有一些地方其實還有進化空間的 , 首先 , 我之前說過的 “ 先用人手查看有多少個貨品種類 ( 這是為了準備資料分類後的資料儲存位置做的準備 ) ” 這個問題 , 如果你想知道有多少個項目的話 , EXCEL 的進階篩選是可以做到的 , 在合適的情況下 , 進階篩選可以幫上不少忙呢~
還有其他部份可以再作加強的, 不過嘛 ~ 先留一些地方給你研究一下吧 XD
哦 ~ 還有 , 在程式設計的世界裡 , 解決問題的方法是肯定超過一種的 , 所以嘛 ~ 如果你想出來的方法跟我的不一樣都沒關係 , 只要做到目的就好了~ :)
2 留言:
其實用判斷正確 同 if ... else
不是更好嗎?
Hi 網~頁~迷
你所指的是那個部份 !?
發佈留言