2009年7月15日 星期三

第2講 繪製柏拉圖資料的佈署

用Excel VBA自動化地做柏拉圖例 - 第2講
1 第1講提到繪製柏拉圖資料的佈署範例如下表
[表1]


A
B
C
1
不良內容
不良率

2
AA
0.120

3
BB
0.020

4
CC
0.050

5
DD
0.010

6
Else
0.015

7

要讓電腦自動化作業,必須留意資料的佈署問題,安排位置愈固定,VBA編程愈簡單

2 以下是本次設計自動化繪製柏拉圖上的構想
2-1 柏拉圖需要二欄資料,如[表1]的“不良內容"與“不良率”,名稱可任意給,但左邊欄必為項目相關如“AA”,姑且稱項目欄, 右邊欄必為數量相關如“0.120”,姑且稱數量欄
2-2 不良內容如 AA、BB…等不限定數量,也不用先行排序
2-3 柏拉圖資料常有其他項,正常繪圖是要將其他項放在柏拉圖最右邊,所以資料安排上,請將其他項擺在最下方,如[表1]的else 0.015
2-4 其他項的名詞上可使用”其他”、”else”…,VBA不管使用何種名詞,只要是最下欄就認為是”其他項”,將放到柏拉圖最右邊
2-5 萬一,沒有”其他項”,則必須再不良內容加上一行,名義任取,如 else,重要的是數量欄(不良率) 填0
以上2-1~2-5是設計者構想,使用者是不知道的,所以VBA編程仍需撰寫操作檔手冊以利使用,當然此處就以上的說明而省略。
另外例如Minitab 繪製柏拉圖時,若不良項目數較多時,可經由排序只取95%的項目,而將其餘不良項目合併(或不合併)為一個”其他項”,這種構想本文留給看官自己去優化編程。
3 開始建立第二個Excel巨集(名稱為 count)
目的:本次練習建巨集目的是對柏拉圖資料的佈署作一檢視,並于資料下方列出檢視結果如下表 [表2] A1:B9

A
B
C
1
不良內容
不良率

2
AA
0.120

3
BB
0.020

4
CC
0.050

5
DD
0.010

6
Else
0.015

7



8
Item no.
5

9
Item else
1
具體步驟(請繼續用第1講的Excel工作表跟著操作)
3-1 功能表 工具 > 巨集 > 巨集 (快捷鍵 alt-F8,另外簡體版 工具 >宏 >宏) 出現巨集的對話方塊
3-2 巨集的名稱:因為已經有data巨集,所以巨集名默認為data並反黑,請直接填入 “count” (可任意名稱),位置:默認,按 『創建』 ,又出現Visual Basic 編輯器(VBE),關注到
Sub count()
End sub
3-3 開始在Sub count()與End sub間填寫命令
請看官Copy 以下內容 Paste 到Sub count() 與 End sub 之間
‘ -------------- 從此處開始 Copy ------------------
‘ -------macro by Geroge ---2009/7/12--------------
Dim ct As Integer, xs1 As Double
ct = 0
Do
If Cells(ct + 2, 1) = "" Then
Exit Do
Else
ct = ct + 1
End If
Loop
Cells(ct + 3, 1) = "Item no."
Cells(ct + 4, 1) = "Item else"
If Cells(ct + 1, 2) = 0 Or Cells(ct + 1, 2) = "" Then
Cells(ct + 3, 2) = ct - 1
Cells(ct + 4, 2) = 0
Else
Cells(ct + 3, 2) = ct
Cells(ct + 4, 2) = 1
End If
‘----------------------------------------------------------------
‘ --------------------Copy 截止處 -------------------------
‘指令說明:
- Dim 對變數 ct 定義為整數
- Do else loop 為迴圈
- If else end if 是邏輯判斷
請注意每行開頭有『’』表示批註,其後的命令都不執行
4 新增一個按鈕來執行巨集 count
為了日後方便以及免於記憶,打算在工作表上加上一個按鈕,只要按一下按鈕就可以執行本巨集,作法是
4-1 呼叫表單工具箱 (視圖 > 工具欄 > 表單,或者滑鼠在工具列空白處按滑鼠右鍵 > 表單)後出現一個有控制項的表單 (表單控制項是專用在工作表)
4-2 建立"按鈕"控制項,名稱為 count 並連結 巨集-count
4-3 單擊按鈕就可執行巨集,結果如[表2],表示OK
4-4 另外再測試一次,將B6位置0.015改為0,意思無其他項,再執行count巨集,看B8 B9是否為4與 0,若OK,再次執行 data巨集與count巨集,恢復到4-3 狀態,準備進入第3講,自動排序並計算柏拉圖的累積折線資料。
<第2講 完>

沒有留言:

張貼留言