一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Excel VBA ADO SQL入門教程001:認識SQL In Excel

 L羅樂 2018-03-28


我知道我一直有雙隱形的翅膀, 帶我飛給我希望……

1.

本文所有觀點及論述均是基于Excel平臺,更準確的說是MS Excel……如無特殊情況,文中將不再特殊說明。


2.

以星光俺行走江湖多年的經(jīng)驗來看,學(xué)習者可以分為兩類,一類是被動的學(xué)習者,完全或者少有清醒的自我思考意識,書上寫什么,我就看什么,老師講什么,我就聽什么,啊,世界如此單純我亦無憂無慮不要長大不要……。還有一類是主動的學(xué)習者,簡而言之,TA知道自己學(xué)的是什么,為什么而學(xué),怎么樣才能學(xué)的透徹……

譬如說罷,咱們今天和以后分享的SQL、ADO等,后者就會問,這倆貨是什么?為什么要學(xué)呀?學(xué)了有什么用啊?難不難學(xué)——和談戀愛比起來?


3.

那就先說SQL吧。

SQL是一種結(jié)構(gòu)化查詢語言(Structured Query Language),是一種聲明式語言,敲黑板劃重點【結(jié)構(gòu)化和聲明式】。SQL的核心是對表的引用,聲明你想從數(shù)據(jù)源中獲取什么樣的結(jié)果,而不用告訴計算機如何才能夠得到結(jié)果——

后面這句話似乎很難理解,舉例來說,倘若我們需要獲取上圖所示表格(Sheet1)成績大于等于80分的人員名單,如果用命令式程序語言,比如VBA,是這樣的:

Sub MyFind()

    Dim arr, brr, i&, k&

    arr = Sheet1.[a1].CurrentRegion

    ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))

    For i = 1 To UBound(arr)

        If arr(i, 2) >= 80 Then

            k = k 1

            brr(k, 1) = arr(i, 1)

            brr(k, 2) = arr(i, 2)

        End If

    Next

    [d:f].ClearContents

    [d1].Resize(k, 2) = brr

End Sub

你需要通過VBA編程告訴計算機每一步怎么走,數(shù)據(jù)從哪里來,從哪里開始遍歷,行列是多少,符合條件的數(shù)據(jù)裝入哪里,怎么裝等等……

而如果用聲明式SQL語言呢?只要告訴計算機我要什么就可以了。

SELECT 姓名,成績 FROM [Sheet1$] WHERE 成績>=80

我要Sheet1表(FROM [Sheet1$])……成績大于等于80(WHERE 成績>=80)……姓名和成績的數(shù)據(jù)(SELECT 姓名,成績)。

只要結(jié)果,不問過程。

就醬紫的聲明式霸道總裁范。


4.

為什么要學(xué)習SQL In Excel(Excel支持的SQL語言)呢?

換言之,相比于Excel其它功能,例如函數(shù)、VBA、POWER PIVOT等,SQL有何優(yōu)勢?

首先,必須嚴肅臉說明的是,對于普通Excel使用者而言,VBA、SQL以及以后提及的ADO并不是非學(xué)不可的,非學(xué)不可的是基礎(chǔ)操作、函數(shù)、透視表、圖表……

然而大數(shù)據(jù)時代,對于另外相當一部分表族而言,Excel用久了,慢慢的,會意識到一個大問題;曾經(jīng)在你心中無比強大的Excel函數(shù),原來只適合小數(shù)據(jù)的騰挪躲閃;當數(shù)據(jù)量稍大后,函數(shù)這貨就像未嗑士力架的姚明——不來勁的很哩。

SQL In Excel則可以解決函數(shù)處理大數(shù)據(jù)效率低下的問題,嗯~使用SQL語言,你甚至可以將Excel作為前臺數(shù)據(jù)管理界面,數(shù)據(jù)庫(例如ACCESS)作為后臺數(shù)據(jù)儲存?zhèn)}庫,進而儲存、分析、管理遠超Excel體積的數(shù)據(jù)量。


打個響指,我們之前講過,VBA處理數(shù)據(jù)的核心是數(shù)組 字典,倘若SQL和它比較起來有何優(yōu)劣?

作為一個正努力成為樂觀主義者的人,星光還是先說優(yōu)點吧。

通過上面代碼的栗子我們很直觀的看到,SQL的書寫要比VBA編程簡潔的多,甚至比小巧靈的函數(shù)還要簡潔;此外,SQL高效處理的數(shù)據(jù)量上限,也是遠遠大于VBA數(shù)組 字典的;字典裝上50W的數(shù)據(jù),一般電腦的計算效率就開始垂直下降了,而SQL 還是風輕云淡臉;最后,SQL ADO VBA可以通過Excel直接處理數(shù)據(jù)庫(例如ACCESS)來源的數(shù)據(jù)……。

然后說劣勢。

SQL作為一種數(shù)據(jù)庫結(jié)構(gòu)化查詢語言,對表的結(jié)構(gòu)和數(shù)據(jù)的類型有著嚴格的要求,而嚴格來說Excel并非數(shù)據(jù)庫,盡管它支持ADO和SQL(誰說裝了數(shù)據(jù)就是數(shù)據(jù)庫的?拉出去自彈小丁丁500下,好冷)。Excel對表的結(jié)構(gòu)和數(shù)據(jù)的類型并沒有嚴格的限定,例如合并單元格,多行表頭,空記錄,一列之內(nèi)存在多種數(shù)據(jù)類型等等劣跡存在,因此,字典 數(shù)組處理EXCEL數(shù)據(jù)的靈活性要遠遠高于SQL,畢竟數(shù)組遍歷在手,天下我有,什么合并單元格多行表頭,統(tǒng)統(tǒng)都是浮云……


最后,SQL In Excel 和Power BI For Excel(以下簡稱Power BI)相比優(yōu)勢在哪里?

從Excel的角度講,SQL和Power BI最大的優(yōu)勢是,SQL支持VBA語言。通過ADO執(zhí)行SQL語言,VBA可以獲取、分析、管理多種來源的數(shù)據(jù),甚至進而對獲取的數(shù)據(jù)再搭配字典、數(shù)組以及各種Excel自帶的功能作進一步自動化、智能化處理……換句話說,VBA運行SQL語句后,可以再整合Excel所有的功能進一步處理數(shù)據(jù),除了Power BI——是的,Power BI不支持VBA,聳肩,無奈。

從數(shù)據(jù)的角度講,Power BI是一款數(shù)據(jù)分析的軟件,包含了M和DAX查詢語言,SQL則是一種數(shù)據(jù)管理的語言。查詢和管理有何不同?簡而言之,SQL不但可以查詢數(shù)據(jù),還可以操縱數(shù)據(jù),例如增、改、刪等等。而M和DAX語言對數(shù)據(jù)則只能查詢,不能操縱。就像我們在Power BI入門教程中講的,它只能改變自己,永遠無法改變對方(指的是數(shù)據(jù)源,不是我們的愛情)

另外,SQL是一門廣被接受和支持的語言。Excel,ACCESS,R,Python,JAVA,C等等軟件和語言,均是支持SQL的;而POWER BI顯然沒有這樣的待遇。

我們很久以說,作為一名數(shù)據(jù)分析員有三個必須掌握的技能,SQL獲得數(shù)據(jù),EXCEL分析數(shù)據(jù),PPT展現(xiàn)數(shù)據(jù)。POWER BI出現(xiàn)后,有人說學(xué)了POEWR BI,就不用學(xué)SQL了。如果你能意識到兩者之間的不同,顯然就會明白這是低頭說話不看前路哦。

當然,如果你是一名數(shù)據(jù)分析員,POWER BI最好也是要學(xué)的。原因很簡單,它很簡單。


5.

說了這么多,那么,如何在Excel中使用SQL?

一般有三種方法。

一種是MS Query法,不常用,省略。

一種是OLE DB法,具體過程是,單擊Excel【數(shù)據(jù)】選項卡下的【現(xiàn)有鏈接】,在彈出的【現(xiàn)有鏈接】對話框中,單擊【瀏覽更多】,選取目標文件后,依次【確定】,得到下面的【導(dǎo)入數(shù)據(jù)】對話框。

這種方法通常搭配數(shù)據(jù)透視表(上圖顯示方式選擇【數(shù)據(jù)透視表(P)】),也可以搭配Power Pivot(高級版本Excel勾選上圖的【將此數(shù)據(jù)添加到數(shù)據(jù)模型】)。

單擊【屬性】按鈕后,得到【鏈接屬性】對話框,再單擊【定義(D)】選項卡,即可在【命令文本】編輯框中輸入SQL語句,并【確定】執(zhí)行。

關(guān)于上圖【連接字符串】中的關(guān)鍵字和關(guān)聯(lián)值,我們會在以后的AOD部分詳加說明,此處先過。

最后一種是VBA ADO法,也是我們后文中常使用的方法。

相比于第2種方法,VBA ADO法的優(yōu)點……

首先是自動化,它可以使用VBA代碼綁定ADO,設(shè)定鏈接字符串,執(zhí)行SQL語句,進而一鍵獲取分析數(shù)據(jù)。其次,VBA編程可以使用變量編輯SQL語句,這遠比第2種方法手動輸入SQL語句要靈活智能的多,另外,VBA ADO法不但可以SELECT(查詢)數(shù)據(jù),還可以INSERT(增)DELETE(刪)UPDATE(改)數(shù)據(jù)庫的數(shù)據(jù)等。


6.

……握握爪,今天我們就先聊到這里吧,下期我們簡單聊下ADO,然后聊SQL語言中最常用的SELECT語句……

嗯,忘記回答一個很重要的問題。

SQL難嗎?

入門很容易,精通很難。

對于EXCELer,并沒有精通的必要性,搭配ADO以及VBA自身的功能,例如數(shù)組和字典,入門SQL已經(jīng)足夠了。

你要對……我有信心(忐忑臉)。

安,愛你們,下期見。



一碼不掃,
可以掃天下?

ExcelHome

VBA編程學(xué)習與實踐




    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    制服丝袜美腿美女一区二区| 亚洲性日韩精品一区二区| 亚洲中文字幕在线综合视频| 91欧美日韩国产在线观看| 欧美小黄片在线一级观看| 国产精品亚洲一区二区| 国产一二三区不卡视频| 亚洲中文字幕三区四区| 欧美午夜视频免费观看| 久久99一本色道亚洲精品| 国产一区二区三区口爆在线| 香蕉久久夜色精品国产尤物| 91爽人人爽人人插人人爽| 日本道播放一区二区三区| 久七久精品视频黄色的| 丰满少妇被猛烈插入在线观看| 欧洲一级片一区二区三区| 国内九一激情白浆发布| 少妇高潮呻吟浪语91| 精品亚洲一区二区三区w竹菊 | 欧美一区二区三区99| 亚洲少妇一区二区三区懂色| 中文字幕人妻综合一区二区| 亚洲视频在线观看免费中文字幕| 手机在线观看亚洲中文字幕| 国产精品推荐在线一区| 日本中文在线不卡视频| 国产日韩精品欧美综合区| 久久精品视频就在久久| 色婷婷视频在线精品免费观看| 亚洲日本中文字幕视频在线观看| 日韩无套内射免费精品| 国产盗摄精品一区二区视频| 国产国产精品精品在线| 国产乱淫av一区二区三区| 日韩精品一区二区三区av在线 | 国产精品白丝一区二区| 欧美日韩在线视频一区| 国产内射一级一片内射高清视频| 老富婆找帅哥按摩抠逼视频| 国产亚洲神马午夜福利|