冬去春來 自然 山水一色 天成

冬去春來 自然 山水一色 天成
冬去春來 自然 。。。。。 山水一色 天成
顯示具有 數學 標籤的文章。 顯示所有文章
顯示具有 數學 標籤的文章。 顯示所有文章

2014/04/09

Excel密技-查表

在Excel中常會用到查表, 也就是一些規定或是基本資料的查詢, 這些規定或基本資料是建成一張表格, 然後從你要查詢的關鍵字在表中找到另一個資料. 例如班級的制服訂作, 你可以找每一個人來套量, 也可以利用已經有的身高資料, 配合尺寸表得到.
假設你的團購團一年來讓你賺了不少錢, 為了強化顧客忠誠度, 你決定給他們一個驚喜, 送大家一件T恤, 當然還有一個目的, 在T恤上印上廣告宣傳. 即然是驚喜, 自然不能找大家來量, 這時候, 團員的身高表就要拿出來了
姓名(A1)身高
王五159
吳九156
趙六166
梁二170
鄭十151
張三169
朱七162
孫八162
丁一161
李四175
表1
然後是身高對照尺寸表, 備註欄是為了說明用, 可以不用
身高(D1)
尺寸
備註
0
S
0 ~ 159.9
160
M
160 ~ 164.9
165
L
165 ~ 169.9
170
XL
170 ~ 174.9
175
XXL
175 ~ 179.9
180
XXXL
180 ~
表2
可是想想, 全部送, 沒有辦法刺激買氣, 那改為訂購金額超過1000元的才列為對象好了. 查到符合的人有丁一, 梁二, 趙六等三人. 所以再建一個贈送對象表
姓名(H1)
身高
尺寸
丁一


梁二


趙六

接下來要說明如何查表了, 我們要用 VLookUp 這個公式, 在丁一的身高格I2填上
=VLookUp(H2,A2:B11,2,0)
意思是在表格 A2:B11中的第一欄A2:A11中找H2:丁一, 找到了, 傳回第2欄(B)的值. 最後一個參數0, 是告訴電腦, A2:A11是沒有排序, 要找到完全一樣的才可以.
所以會得到下表. 注意, 用自動填滿時, 公式要寫成 =VLookUp(H2,$A$2:$B$11,2,0)
姓名(H1)
身高
尺寸
丁一
161

梁二
170

趙六
166
同樣的, 要查身高對照尺寸, 應該沒有問題吧? 在J2填入
=VLookUp(I2,$D$2:$E$7,2,0)
可是實作發現, 慘了, 查不到161, 166的對照. 但若把最後一個參數由0改為1, 就可以查到
姓名(H1)
身高
尺寸
丁一
161
M
梁二
170
XL
趙六
166
L
這個1是告訴電腦, 表格D2:D7是由小到大排序的, 找到相近但大不於查詢的數即可. 所以161 會查到160, 傳回M, 166會查到165, 傳回L.
最後一個參數, 0 或 1, 需確實了解才能把這公式用對了, 得到正確的結果, 小心. 另外, 被查詢的表格可以有很多欄, 但被查詢比較的欄一定是第1欄, 傳回的欄可以是範圍內的任何一個.
還有HLookUp, 與VLookUp的差異是方向是橫向的而以, 其他一樣. 還有LookUp...
接下來說明如何查詢二維表格.
假設衣服的尺寸與身高相關之外, 還跟體重有關, 所以建了一個二維的表格如下
尺寸(A1)
體重
身高
0
50
60
70
80
90
0
S
S
M
M
L
L
160
M
M
M
L
L
XL
165
L
L
L
L
XL
XL
170
XL
XL
XL
XL
XL
XXL
175
XXL
XXL
XXL
XXL
XXL
XXXL
180
XXXL
XXXL
XXXL
XXXL
XXXL
XXXL
利用公式 Index(B3:G8,1,1)會得到S, Index(B3:G8,6,1)會得到XXXL, 類推. 所以, 現在我們要找出的是在行, 列中的第幾個, 再利用Index公式找到所要的值.
要找出所查詢的值在被查詢的欄或列的第幾個, 就要用Match公式. 以身高 171, 體重 81 來說明
Match(171,A3:A8)傳回來4, Match(81,B2:G2)會傳回來5, Index(B3:G8,4,5)會傳回來XL
所以公式為 =Index(B3:G8,Match(171,A3:A8),Match(81,B2:G2))
Match 公式也有像VLookUp, HLookUp的查詢方式的參數, 用法相同, 還可以從大到小排列.
此外還有 Address, Indirect.....公式, 可以練習用用.
ivr 

Excel密技-計算項目

今天是中華民國100年1月1日, 農曆春節也快到了, 假設你正在揪團購買年貨, 為了收集團員的訂單, 你建立一張表格如下
姓名
項目
數量
單價
總價
王五
仙楂丸
6
10
60
李四
木耳
5
100
500
趙六
木耳
4
100
400
梁二
香菇
10
300
3000
趙六
蒟蒻
1
65
65
王五
仙楂丸
3
10
30
梁二
香菇
5
300
1500
梁二
開心果
2
70
140
王五
蒟蒻
5
65
325
梁二
龍眼乾
4
220
880
丁一
香菇
8
300
2400
梁二
開心果
9
70
630
梁二
仙楂丸
4
10
40
梁二
花生
1
50
50
丁一
香菇
9
300
2700
李四
蒟蒻
2
65
130
趙六
蒟蒻
10
65
650
表1
現在你想知道有多少人訂購, 訂購了多少種東西, 你會如何做?
方法很多, 淺一點的, 先排序, 手工算一下; 深一點的用個樞紐分析表, 還是要手工算.
姓名
項目
 數量
 總價
丁一
香菇
17
5100
丁一 合計
 
17
5100
王五
仙楂丸
9
90
 
蒟蒻
5
325
王五 合計
 
14
415
李四
木耳
5
500
 
蒟蒻
2
130
李四 合計
 
7
630
梁二
仙楂丸
4
40
 
花生
1
50
 
香菇
15
4500
 
開心果
11
770
 
龍眼乾
4
880
梁二 合計
 
35
6240
趙六
木耳
4
400
 
蒟蒻
11
715
趙六 合計
 
15
1115
總計
 
88
13500
那有自動的方法可以直接顯示有5個人, 購買了7種東西嗎? 有的. 用CountIf.
假設上面表1從A1格開始, 那CountIf(A2:A18,A2)=3, 也就是說王五有3筆訂單. 沒錯, 我們是要算有幾個團員下單, 不是要算那個團員有幾筆訂單. 所以要另想方法.
假若把每一筆都算一次呢? 也就是下表, 用自動填滿, 記得公式為CountIf($A$2:$A$18,A2).
姓名
次數
王五
3
李四
2
趙六
3
梁二
7
趙六
3
王五
3
梁二
7
梁二
7
王五
3
梁二
7
丁一
2
梁二
7
梁二
7
梁二
7
丁一
2
李四
2
趙六
3
我們發現王五被算了3次, 每次有3筆訂單, 李四被算了2次, 每次有2筆訂單. 也就是說有N筆訂單的人會被算N次. 這樣利用 N*1/N=1特性, 我們可以算出有幾個人. 也就是把公式倒數, 1/CountIf($A$2:$A$18,A2), 然後加總就可以得到想要的結果了.
姓名
次數
王五
0.3333333
李四
0.5
趙六
0.3333333
梁二
0.1428571
趙六
0.3333333
王五
0.3333333
梁二
0.1428571
梁二
0.1428571
王五
0.3333333
梁二
0.1428571
丁一
0.5
梁二
0.1428571
梁二
0.1428571
梁二
0.1428571
丁一
0.5
李四
0.5
趙六
0.3333333
總計
5
排序一下, 就會比較清楚了
姓名
次數
合計
丁一
0.5
1
丁一
0.5
王五
0.3333333
1
王五
0.3333333
王五
0.3333333
李四
0.5
1
李四
0.5
梁二
0.1428571
1
梁二
0.1428571
梁二
0.1428571
梁二
0.1428571
梁二
0.1428571
梁二
0.1428571
梁二
0.1428571
趙六
0.3333333
1
趙六
0.3333333
趙六
0.3333333
總計
5
5
為了便於擴充訂單, 可以把總計移到最頂端, 加總的範圍記得放大, 例如到B100.
總計
5
姓名
次數
王五
0.333333
李四
0.5
趙六
0.333333
梁二
0.142857
趙六
0.333333
王五
0.333333
梁二
0.142857
梁二
0.142857
王五
0.333333
梁二
0.142857
丁一
0.5
梁二
0.142857
梁二
0.142857
梁二
0.142857
丁一
0.5
李四
0.5
趙六
0.333333
到此, 大致完成了. 最後, 要把這些公式合併, 這樣就可以更有彈性的運用. 現在在總計那格寫上
=sumproduct(1/CountIf(A3:A100,A3:A100 & "")) -1
你會發現可以得到相同的結果. 其中CountIf 用了陣列模式, 同時為了計算空白, 加上了 & "", 加總的部份為了陣列, 改為 sumproduct, 最後把多算的空白減回來. 完成.
5
7
88
 
13500
姓名
項目
數量
單價
總價
王五
仙楂丸
6
10
60
李四
木耳
5
100
500
趙六
木耳
4
100
400
梁二
香菇
10
300
3000
趙六
蒟蒻
1
65
65
王五
仙楂丸
3
10
30
梁二
香菇
5
300
1500
梁二
開心果
2
70
140
王五
蒟蒻
5
65
325
梁二
龍眼乾
4
220
880
丁一
香菇
8
300
2400
梁二
開心果
9
70
630
梁二
仙楂丸
4
10
40
梁二
花生
1
50
50
丁一
香菇
9
300
2700
李四
蒟蒻
2
65
130
趙六
蒟蒻
10
65
650

voicexml