2013年10月8日 星期二

Excel新學者常會患的錯誤一 程式設計架構的錯誤

Excel新學者常會患的錯誤一
程式設計架構的錯誤
幾乎每個星期都會看到有類似的發問者出現。
excel 新學者 都會經歷過這樣的階段:患了程式設計架構的大錯誤
怎麼樣的錯誤?
都是誤認為要以excel為架構設計一個資料庫時,若資料很多那全放在一起怕會很亂,要找資料,要寫資料、排序、篩選、計算、讀資料等等很多的動作要做,所以要將之分類存放才可以一目了然。
其實,這是錯誤的第一步
接下來的程式設計會變成高難度,超出你的能力,然後你繞不出來,最後就捨excel而去。
我常說,excel 碰到你們這樣做,都想哭了。
譬如說;
有很多人會把每一種類的東西各開一個工作表,好幾百種的東西就開了好幾百個工作表。然後問題來了,要在這幾百個工作表之間判斷工作表開過了沒?新開工作表的工作、寫資料、找資料、加總計算等等一大堆的工作,都變成好難好難。你問我我也不會,就算有很聰明絕頂的老師幫你寫一個好幾行的函數,好像幫你解一時之急,你也看不懂,也不會應用。
但這樣難的工作,是你走錯路之後的自討苦吃,自己把接下來的程式設計變成到高難度,這是莫須有的。只得到一個莫須有的結論給自己打擊:「excel 太難了,我不會,算了吧!
也有人每一個種類用三欄,幾百種下來就要再乘以3。然後出現了一個問題,欄數不夠,問說可以不可以開兩個excel檔如何來連結?
非常聰明而有創意,但就是走錯路了

如何做才對?
首先,你開幾十個或幾百個工作表,每一個工作表的架構完全一樣。就不應該分成很多張工作表,全部寫到一張工作表其餘全部刪去
不用怕,寫在一張工作表不會如你害怕的「很難找」,而是剛好相反是「非常好找」。
不用怕,不是常常聽人家說他的資料有好幾萬筆嗎?筆數再多更是要這樣做
然後 善用 排序、加總、自動篩選等,就可以隨心所欲做你想要做的事,而且不用寫程式,不用VBEACCESS,什麼都不用,而且是瞬間完成。
你原來懼怕的問題:
1. 每一筆都流水式的寫在最後面,我要找某一特定種類的東西不會找不到嗎?不會找得很辛苦嗎?
資料(D)/ 排序(S),瞬間完成。
2. 每種類分開加總呢?
資料(D)/ 小計,也是瞬間完成。
3. 如果我只要 種類1就好,其他的不要。我原來只需跳到「種類1」的工作表就可以了,現在呢?
資料(D)/ 篩選(F)/ 自動篩選(F)就會把所有其他的資料全部隱藏,只剩下「種類1」的資料出現,也是瞬間完成。
4. 看完「種類1」,我要再恢復所有的資料呢
資料(D)/ 篩選(F)/ 全部選取,所有被隱藏的資料,又出現了,也是瞬間完成。
5. 你要寫 Vlookup 函數,也一下子變成好簡單。
6. 要做樞紐分析,也是好簡單,功能又強。
我剛剛說的:隨心所欲、自由自在、瞬間完成。更要緊的:你一下子都會!
Excel 是這樣子玩的!

Excel功能好強,excel好簡單,excel好好玩!

Excel 的資料分級程式

Excel 的資料分級程式
使用excel的時候,常會遇到將資料 分級 的需要。譬如
0-2.9 太低
312 普通
1215 優秀
15.1~太超過了
之類的,通常我們 會用好幾個 巢狀 IF 來寫這個程式,又臭又長。而且IF還有數目的限制。
這裡介紹一個很有用的  分級 程式。
就是 Vlookup 函數
用過 Vlookup 的人都知道,這是一個很棒的 查表函數。他可以查到 3, 12 15等我們預設的值對應到的資料。
但是大部分的人不知道,如果查不到呢?譬如 叫他去查6,他就查不到,那就會回復給我們一個 #N/A
其實有一個好方法,可以叫它 查不到也沒關係」,給我一個「最接近的數字所對應的值」就好了。譬如說 6 查不到,那就查「 6小但最接近的那一組數字」,也就是3那組數字。
這樣就很棒了!可以用來 查整個區間,還有就是可以用來做我們題目所提到的「做分級的工作」。
如何做?
譬如 我們把下面的表放在 A11B16
0

3
普通
12
優秀
15
優秀
15.1
太超過了
9999

我們要查分級的數字放在  A1
要把查到的分級  放到B1
B1 =VLOOKUP(A1,A11:B16,2,0), 
A13時,B1=普通
這裡我們詳細講解一下Vlookup這個 函數
就是要電腦到 A11B16這個表中去找 第一欄的數字=A1那一欄的數字的那一列,也就是 A12(=3) 那一列的第-2欄的資料 對應回來,得到「普通」這個內容
但要表中沒有的數字時就出現了錯誤,譬如A16 時,B1#N/A
因為Vlookup函數的最後一個引數 0 的時候,就是要「找到完全相同」的數字才行,否則就是 #N/A
但,精彩的來了!
Vlookup函數最後一個引數為1的時候,就是只要找到「小於它而最近的數字
也就是 B1=VLOOKUP(A1,A11:B16,2,1)
A16時,B1=普通
A1311.9999999 B1都是=普通,對!這就是我們要的
然後,各位看到我最上方寫一個 0, 最下方寫一個 9999, 就是假設可能出現的最小和最大值,這樣你怎麼查也不會出現 #N/A了。
還有 15的下面,要插入一個 15.1 (或是15.0000001比較安全)這樣超過15的數字就會對應到 「太超過了」。
過癮吧,你即使是分10級、20級再多的級數都沒關係,照樣可以用,不像IF有最多8層的限制,而且還把函數寫得非常冗長,頭都昏了。
這樣的功能還可以用在哪裡呢?
譬如 你要寫一個 薪資所得稅扣除額 的程式,薪資 18,00120,000的人假如扶養親屬-2個人要扣繳多少所得稅之類的,是不是用 Vlookup 才做就得心應手,很便捷的就完成了。

記得,Vlookup就是一個超棒的 查表函數 分級函數,有 查表 分級 的需要是就是要善用 Vlookup就對了。