公告版位

目前分類:01_EXCEL函數與VBA (160)

瀏覽方式: 標題列表 簡短摘要

用COUNT相關函數與VBA統計樂透彩中獎機率

 

完成結果:

 

 

 

 

昨天在東吳進修推廣部講到數學函數單元,最重要的用到COUNTIF函數

並舉到樂透彩中獎機率範例

分享幾個好用的EXCEL應用技巧,

1.定義名稱範圍

2.自訂格式化

3.用公式設定格式化條件

這個範例可以用再只要需要統計機率

就可以用COUNTIF函數快速的統計出機率,

當然這些資料來自網路上的開放資料,

也可以配合VBA自動下載網路資料

 

上課畫面:

01_完成結果畫面

02_定義名稱所有的101年號碼

03_用COUNTIF與COUNT算出機率

04_格式化成10000分之多少

05_算出排名

06_前7名格式化

 

完整的教學影片:

 

請先看之前的課程:

如何用EXCEL統計樂透彩中獎機率範例

https://terry55wu.blogspot.com/2015/08/excel.html

如何將數學函數轉EXCEL VBA設計之一

http://terry55wu.blogspot.tw/2014/09/excel-vba_19.html

如何將數學函數轉EXCEL VBA設計之二

http://terry55wu.blogspot.tw/2015/01/excel-vba.html

提高工作效率_黑名單篩選範例分享

http://terry55wu.blogspot.tw/2015/06/blog-post.html

雲端問卷調查及EXCEL統計分析研習分享

http://terry55wu.blogspot.tw/2014/11/excel.html

 

EXCEL VBA進階班的課程規劃

 

主要是延伸入門課,延伸資料庫、多工作表、工作簿、網路爬蟲、視覺化報表等應用並與Python程式協同應用

單元01_資料拆解相關(VBA)

單元02_輸入自動化與表單設計

單元03_用ADO匯入與匯出資料庫

單元04_大量工作表合併與分割

單元05_資料查詢(篩選與分割工作表)

單元06_下載網路資料(YAHOO股市)

單元07_活頁簿與檔案處理(工作表分割與合併活頁簿)

單元08_視覺化報表與快速匯入圖片

 

其他相關學習:

函數東吳進修推廣部, EXCEL, EXCEL VBA 函數 程式設計 線上教學 excel vba 教學 excel vba指令教學 vba範例教學excel  excel vba教學視頻 函數教學 excel函數

文章標籤

吳老師 發表在 痞客邦 留言(0) 人氣()

如何在EXCEL中錄製巨集與精簡為VBA程式(範例黑名單篩選)

 

請先看之前的課程:

如何用COUNTIF函數篩選黑名單(無須撰寫VBA) [連結]

提高工作效率_黑名單篩選範例分享  [連結]

讓EXCEL VBA具有進度狀態條功能(表單設計)   [連結]

 

完成結果:

 

昨天在東吳進修推廣部講到數學函數單元,最重要的用到COUNTIF函數

並舉到黑名單篩選範例,實際上,這有點類似資料庫的應用

只要未來需要查詢大量清單資料,就可以使用CONTIF來查詢,

只要結果大於1,就表示有找到資料,

但是,無法比對關鍵字查詢等的簡易查詢,

若要進階查詢,還是要用VBA的Instr函數

或是篩選的功能VBA,或是SQL語法等,

不過COUNTIF算是最簡單的。

若是要將整個動作變為按鈕一件重複完成,

可以利用錄製巨集完成,

但如何錄製巨集還是需要注意幾個重點:

1.錄製巨集前要彩排

2.錄製執行後記得要加上註解

3.可以關閉畫面更新

4.看懂VBA程式並進行精簡

 

上課畫面:

01_下載黑名單範例

 

02_建立黑名單名稱範圍

 

03_用COUNTIF函數判斷是在黑名單

 

04_篩選結果為0並刪除列

 

 

完整的教學影片:

 

EXCEL VBA進階班的課程規劃

 

主要是延伸入門課,延伸資料庫、多工作表、工作簿、網路爬蟲、視覺化報表等應用並與Python程式協同應用

單元01_資料拆解相關(VBA)

單元02_輸入自動化與表單設計

單元03_用ADO匯入與匯出資料庫

單元04_大量工作表合併與分割

單元05_資料查詢(篩選與分割工作表)

單元06_下載網路資料(YAHOO股市)

單元07_活頁簿與檔案處理(工作表分割與合併活頁簿)

單元08_視覺化報表與快速匯入圖片

 

其他相關學習:

函數東吳進修推廣部, EXCEL, EXCEL VBA 函數 程式設計 線上教學 excel vba 教學 excel vba指令教學 vba範例教學excel  excel vba教學視頻 函數教學 excel函數

文章標籤

吳老師 發表在 痞客邦 留言(0) 人氣()

EXCEL下拉清單用VBA自動查詢與顯示不同資料

 

這是延伸之前撰寫的一篇文章:

EXCEL太複雜工作還是交給VBA吧!範例班級成績查詢 [連結]


預覽畫面:

 

雖說用EXCEL的內建函數也可以做出類似的效果,

但要用IF、SMALL、IFERROR函數,還要會在EXCEL中執行陣列

授課的結果,大多學員幾乎陣亡。

反而用VBA來撰寫自動查詢與顯示不同資料,

似乎就變簡單了,

只要會撰寫簡單的 For迴圈,用Cells物件

B到E欄資料,複製到G到J欄

配合變數 k ,就可以逐一的將資料複製過來,

當然資料也可以是在不同的工作表或工作簿。

反而用VBA來處理顯得更加簡便

所以,若有更複雜的工作,要提高工作效率,

建議,還是用VBA為佳。

 

如何用VBA來做:

 

Public Sub 班級()

   '1.刪除舊資料

   Range("G5:J12").ClearContents

   '1.輸出的列數

   k = 5

   '2.迴圈判斷班級

   For i = 2 To 12

       If Cells(i, "A") = Range("H2") Then

           Cells(k, "G") = Cells(i, "B")

           Cells(k, "H") = Cells(i, "C")

           Cells(k, "I") = Cells(i, "D")

           Cells(k, "J") = Cells(i, "E")

           k = k + 1

       End If

   Next

End Sub


再來就是可以配合事件驅動,就可以省去按鈕動做了。

 

Private Sub Worksheet_Change(ByVal Target As Range)

   If Target.Address = "$H$2" Then

       Call 班級

   End If

End Sub

 

教學影音(完整版在論壇):

 

教學影音完整版在論壇:

https://groups.google.com/forum/#!forum/scu_excel_vba2_86

 

課程特色:

EXCEL函數 VBA程式設計資料庫與網路資料是分別屬於不同領域的知識,

但卻是目前大家都需要的一項專業技能,要把三者融合的很好實在非常不容易,

剛好我有近20年的VB程式設計資料庫設計的經驗,

教EXCEL函數與相關課程也有多年,因此清楚如何把最重要的知識教給大家,

ADO資料庫設計的知識非常多,但根據我多年的設計實務經驗,

覺得最重要的是掌握SQL語言,就可以輕易的完成查詢、新增、修改與刪除等功能,

就可以輕易的完成自己想處理的大量資料,大大提高工作效率了!

 

上課用書是:

Excel函數&VBA其實很簡單

(http://www.books.com.tw/exep/prod/booksfile.php?item=0010457292)

Excel VBA 與資料庫整合大活用

(http://www.books.com.tw/exep/prod/booksfile.php?item=0010463634)

 

完整教學影音DVD申請

http://goo.gl/ZlBZE

 

其他相關學習:

函數東吳進修推廣部, EXCEL, EXCEL VBA 函數 程式設計 線上教學 excel vba 教學 excel vba指令教學 vba範例教學excel  excel vba教學視頻 函數教學 excel函數

文章標籤

吳老師 發表在 痞客邦 留言(1) 人氣()

讓EXCEL VBA具有進度狀態條功能(表單設計)

 

 

示意畫面:

 

緣起:

由於範例黑名單篩選,需要查詢兩個範圍是否有相同資料,

需要耗費時間比對,因此會有一小段時間需要讓使用者等待,

此時若是有個進度狀態調出現,就可以讓使用者知道所需等待時間,

與進行的進度,這樣可以讓VBA程式更加友善。

但是該如何做,從那下手呢?

首先需要知道的事VBA的表單設計,

其次是當啟動表單之後,會觸發Activate事件,

所以需要將狀態條的程式寫在這裡,

讓迴圈中加入更新狀態條的比例。

以下是詳細步驟截圖:

 

1.設計表單

加入Label控制項(大A)

2.增加啟動表單功能

Public Sub 查詢黑名單_表單()

   home.Show

End Sub

 

3.在Activate事件裡撰寫程式

Private Sub UserForm_Activate()

   PB.Width = 0

   r = Sheets(1).Range("A2").End(xlDown).Row

   k = 1

   '1.取查詢名單和黑名單字串比對

   For i = 2 To r

       Sheets(1).Cells(i, "B") = "=CountIf(黑名單, A" & i & ")"

       '2.將結果寫到查詢結果

       If Sheets(1).Cells(i, "B") >= 1 Then

           Sheets(3).Cells(k, "A") = Sheets(1).Cells(i, "A")

           k = k + 1

       End If

       PB.Width = (i - 1) * (200 /r)

       Me.Repaint

   Next

   home.Hide

End Sub

 

4.在EXCEL中增加啟動表單按鈕

所以如果按下按鈕,就會啟動進度狀態條表單,

並觸發Activate事件裡的程式,

此時就會到進度狀態條表單畫面會出現了。

也就是將來如果有需要等待的VBA程式,

就可以加入進度狀態條,讓程式更加專業有趣。

 

教學影片:

 

 

其他相關學習:

教學論壇:

https://groups.google.com/forum/#!forum/scu_excel_vba2_83

 

與前幾期的課程雖然用的是相同的範例,但最大的不同在:

1.除了解說建函數公式,並將之轉成自訂函數,把複雜的公式變簡單。

2.如何將複雜的公式變成簡單的按鈕,按下按鈕就自動完成工作。

 

內容主要分成:

1.常用函數

2.進階函數應用

3.從函數到VBA設計

4.如何自訂函數

5.VBA程式設計入門

6.如何錄製巨集與修改

7.如何將大量資料轉存到資料庫

8.如何讀取資料庫資料

詳細目錄:http://goo.gl/eQptxx

 

有講義與範例和完成的畫面公式與程式碼,

只要按照每周的順序學習,學會EXCEL VBA自動化絕非難事,

優點:

1.可非線性學習:可按照自己最不熟的部分多次學習。

2.可反覆學習:有疑問可以多次聽講,保證學的會。

3.可攜帶學習:只要有瀏覽器就可以播放SWF檔,MAC電腦也沒問題。

 

課程理念:

1.以循序漸進的方式, 透過詳細的說明和實用的Excel VBA範例, 逐步了解整個 VBA 的架構與輪廓,進而學習 VBA 變數、函式及邏輯的觀念, 即使沒有任何程式設計基礎, 也能自己親手撰寫 VBA 程序來提昇工作效率, 晉身職場 Excel 高手! 2.進而解說EXCEL與資料庫的結合,將EXCEL當成資料庫來使用,結合函數、VBA等更深入的功能,讓資料處理和分析的應用更上層樓。 3.將結合GOOGLE雲端試算表,教您如何將EXCEL函數雲端化與網路化。

 

更多EXCEL VBA連結:

01_EXCEL函數與VBA(入門) http://terry55wu.blogspot.tw/p/excelvba.html

02_EXCEL VBA自動化教學(進階) http://terry55wu.blogspot.tw/p/excel-vba.html

 

吳老師 2019/5/21

 

 

大數據, 巨集錄製, 函數東吳進修推廣部, 表單, 處理, 資料庫, ADO, EXCEL, excel函數教學, excel函數應用, SQL, VBA, vba教學視頻

文章標籤

吳老師 發表在 痞客邦 留言(0) 人氣()

使用VBA製作銷貨訂購單與儲存資料(EXCEL當資料庫)

 

預覽畫面:

 

本範例主要分享銷貨訂單的自動化EXCEL當成輸入介面

當然也可以利用VBA裡的表單來製作,難度會比較高些,

不過感覺會更專業些,但是無論哪種方式,

最主要是可以輔助輸入的效率與正確性

讓輸入資料不易出錯,

也無法隨意竄改,

所以需要最後配合保護工作表

除了四個區域(單號、客戶、商品、數量)可以修改外,

其他都不能修改,避免輸入資料正確性

另外下拉清單也可以自動帶出其他資料

這樣就可以加快輸入效率,

最後,可以再利用VBA程式

將所有資料存在銷貨明細一筆紀錄單號也自動加一之後,

又可以繼續輸入資料,達到類似進銷存系統的目的。

 

以下分享流程:

1.訂單日期

02_到貨日期

03_到貨日期(避開六日)

04_客戶

05_序號

06_商品

07_小計

08_保護工作表

09_增加訂單明細工作表

10_VBA程式畫面

Public Sub 新增資料()

   '1.判斷在哪一列

   If Sheets("銷貨明細").Range("A2") = "" Then

       r = 2

   Else

       r = Sheets("銷貨明細").Range("A1").End(xlDown).Row + 1

   End If

   '2.輸出資料

   '單號

   Sheets("銷貨明細").Cells(r, "A") = Range("B2")

   '訂單日期

   Sheets("銷貨明細").Cells(r, "B") = Range("D2")

   '到貨日期

   Sheets("銷貨明細").Cells(r, "C") = Range("G2")

   '客戶編號

   Sheets("銷貨明細").Cells(r, "D") = Range("B3")

   '客戶名稱

   Sheets("銷貨明細").Cells(r, "E") = Range("C3")

   '連絡電話

   Sheets("銷貨明細").Cells(r, "F") = Range("G3")

   '地址

   Sheets("銷貨明細").Cells(r, "G") = Range("B4")

   '銷貨總額

   Sheets("銷貨明細").Cells(r, "H") = Range("G4")

  

   '3.清空資料

   'Range("B2") = ""

   Range("B3") = ""

   Range("E2") = ""

   Range("B7:B16").ClearContents

   Range("F7:F16").ClearContents

 

   '4.單號加1

   Range("B2") = Range("B2")+ 1

End Sub

 

**如果編號為S000X

   Range("B2") = Left(Range("B2"), 1) & Format(Right(Range("B2"), 4) + 1, "0000")

 

教學影音(完整版在論壇):

 

教學影音完整版在論壇:

https://groups.google.com/forum/#!forum/scu_excel_vba2_86

 

課程特色:

EXCEL函數 VBA程式設計資料庫與網路資料是分別屬於不同領域的知識,

但卻是目前大家都需要的一項專業技能,要把三者融合的很好實在非常不容易,

剛好我有近20年的VB程式設計資料庫設計的經驗,

教EXCEL函數與相關課程也有多年,因此清楚如何把最重要的知識教給大家,

ADO資料庫設計的知識非常多,但根據我多年的設計實務經驗,

覺得最重要的是掌握SQL語言,就可以輕易的完成查詢、新增、修改與刪除等功能,

就可以輕易的完成自己想處理的大量資料,大大提高工作效率了!

 

上課用書是:

Excel函數&VBA其實很簡單

(http://www.books.com.tw/exep/prod/booksfile.php?item=0010457292)

Excel VBA 與資料庫整合大活用

(http://www.books.com.tw/exep/prod/booksfile.php?item=0010463634)

 

完整教學影音DVD申請

http://goo.gl/ZlBZE

 

其他相關學習:

函數東吳進修推廣部, EXCEL, EXCEL VBA 函數 程式設計 線上教學 excel vba 教學 excel vba指令教學 vba範例教學excel  excel vba教學視頻 函數教學 excel函數

文章標籤

吳老師 發表在 痞客邦 留言(0) 人氣()

EXCEL太複雜工作還是交給VBA吧!範例班級成績查詢

 

預覽畫面:

 

關於下拉清單快速查詢班級資料是常見問題,

但是要做到這樣的結果,

如果用EXCEL內建函數

需要用到函數分別有:

IF(比對)、SAMLL(改範圍比對與排序)、INDEX(抓資料)、IFERROR(過濾錯誤)

而且還需要用陣列來執行,

光複雜度,就令人卻步

每每講完這部分,再講VBA的解法,

反而用VBA來處理顯得更加簡便

所以,

若有更複雜的工作,要提高工作效率,

建議,還是用VBA為佳。

 

如何用VBA來做:

 

Public Sub 班級()

   '1.刪除舊資料

   Range("G5:J12").ClearContents

   '1.輸出的列數

   k = 5

   '2.迴圈判斷班級

   For i = 2 To 12

       If Cells(i, "A") = Range("H2") Then

           Cells(k, "G") = Cells(i, "B")

           Cells(k, "H") = Cells(i, "C")

           Cells(k, "I") = Cells(i, "D")

           Cells(k, "J") = Cells(i, "E")

           k = k + 1

       End If

   Next

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

   If Target.Address = "$H$2" Then

       Call 班級

   End If

End Sub


補充用EXCEL內建函數:

以下是用IF(比對)、SAMLL(改範圍比對與排序)、INDEX(抓資料)、IFERROR(過濾錯誤)

=IF($A2=$H$2,ROW()-3,"N")

{=SMALL(IF($A$2:$A$12=$H$2,ROW($A$2:$A$12),"N"),ROW()-4)}

**注意SMAIL的比對為範圍,所以需要將比對條件改為範圍,另返回的列數也要是範圍,並且一定要用陣列執行(CTRL+SHIFT+ENTER)

 

{=INDEX($A$1:$E$12,SMALL(IF($A$2:$A$12=$H$2,ROW($A$2:$A$12),"N"),ROW()-4),COLUMN()-5)}

 

 

 

{=IFERROR(INDEX($B$1:$E$12,SMALL(IF($A$2:$A$12=$H$2,ROW($A$2:$A$12),"N"),ROW(A1)),COLUMN(A1)),"")}

 

教學影音(完整版在論壇):

 

教學影音完整版在論壇:

https://groups.google.com/forum/#!forum/scu_excel_vba2_86

 

課程特色:

EXCEL函數 VBA程式設計資料庫與網路資料是分別屬於不同領域的知識,

但卻是目前大家都需要的一項專業技能,要把三者融合的很好實在非常不容易,

剛好我有近20年的VB程式設計資料庫設計的經驗,

教EXCEL函數與相關課程也有多年,因此清楚如何把最重要的知識教給大家,

ADO資料庫設計的知識非常多,但根據我多年的設計實務經驗,

覺得最重要的是掌握SQL語言,就可以輕易的完成查詢、新增、修改與刪除等功能,

就可以輕易的完成自己想處理的大量資料,大大提高工作效率了!

 

上課用書是:

Excel函數&VBA其實很簡單

(http://www.books.com.tw/exep/prod/booksfile.php?item=0010457292)

Excel VBA 與資料庫整合大活用

(http://www.books.com.tw/exep/prod/booksfile.php?item=0010463634)

 

完整教學影音DVD申請

http://goo.gl/ZlBZE

 

其他相關學習:

函數東吳進修推廣部, EXCEL, EXCEL VBA 函數 程式設計 線上教學 excel vba 教學 excel vba指令教學 vba範例教學excel  excel vba教學視頻 函數教學 excel函數

文章標籤

吳老師 發表在 痞客邦 留言(0) 人氣()

EXCEL快速資料分欄用INDEX函數與VBA

 

預覽畫面:

 

常遇到儲存格中若有單欄資料要分為四欄多欄資料,

若不懂的用INDEX等查詢函數,配合COLUMN與ROW參照函數

可能要用非常多的時間才能完成工作,

但若懂得用INDEX或INDIRECT函數

馬上就可以輕易完成結果,

需要先用Column與Row函數取得位置,再利用INDEX函數讀取資料,

最後多餘的標題與冒號,可以用REPLACE函數或是MID函數去除。

不過比較函數與VBA的執行效率,

當然VBA程式寫出來,按下按鈕執行似乎比較直接,

所以若資料量大或是需要重複動作的應用,

還是建議用VBA來完成

 

1.Column與Row函數:

=COLUMN()-3+(ROW()-2)*4

 

2.INDEX函數

=INDEX($B$2:$B$33,COLUMN()-3+(ROW()-2)*4,1)

3.MID與LEN函數

=MID(INDEX($B$2:$B$33,COLUMN()-3+(ROW()-2)*4,1),LEN(D$1)+2,99)

**補充用REPLACE切割=REPLACE(INDEX($B$2:$B$33,COLUMN()-3+(ROW()-2)*4,1),1,LEN(D$1)+1,"")

 

 

4.INDIRECT函數

=INDIRECT("B"&COLUMN()-2+(ROW()-2)*4)

=REPLACE(INDIRECT("B"&COLUMN()-2+(ROW()-2)*4),1,LEN(D$1)+1,"")

 

**用INDIRECT轉為VBA的RANGE物件輸出資料

 

Public Sub 人事分欄()

'    Cells(2, 4) = Range("B2")

'    Cells(2, 5) = Range("B3")

   k = 2

   For i = 2 To 9

       For j = 4 To 7

           Cells(i, j) = Mid(Range("B" & k), Len(Cells(1, j)) + 2, 99)

           k = k + 1

       Next

   Next

End Sub

 

Public Sub 清除()

   Range("D2:G9").ClearContents

End Sub

 

教學影音(完整版在論壇):

 

教學影音完整版在論壇:

https://groups.google.com/forum/#!forum/scu_excel_vba2_86

 

課程特色:

1.如何將函數轉成VBA2.VBA與資料庫快速結合

 

EXCEL函數 VBA程式設計資料庫與網路資料是分別屬於不同領域的知識,

但卻是目前大家都需要的一項專業技能,要把三者融合的很好實在非常不容易,

剛好我有近20年的VB程式設計資料庫設計的經驗,

教EXCEL函數與相關課程也有多年,因此清楚如何把最重要的知識教給大家,

ADO資料庫設計的知識非常多,但根據我多年的設計實務經驗,

覺得最重要的是掌握SQL語言,就可以輕易的完成查詢、新增、修改與刪除等功能,

就可以輕易的完成自己想處理的大量資料,大大提高工作效率了!

 

上課用書是:

Excel函數&VBA其實很簡單(http://www.books.com.tw/exep/prod/booksfile.php?item=0010457292)

Excel VBA 與資料庫整合大活用(http://www.books.com.tw/exep/prod/booksfile.php?item=0010463634)

 

完整教學影音DVD申請:http://goo.gl/ZlBZE

論壇:http://groups.google.com/group/labor_excel_vba?hl=zh-TW

 

其他相關學習:

 

函數東吳進修推廣部, EXCEL, EXCEL VBA 函數 程式設計 線上教學 excel vba 教學 excel vba指令教學 vba範例教學excel  excel vba教學視頻 函數教學 excel函數

文章標籤

吳老師 發表在 痞客邦 留言(0) 人氣()

EXCEL VBA動態取消工作表保護與VBA專案保護設定