- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EXCEL活页簿模拟成一维、二维、三维阵列在资料处理上,Excel整体来
EXCEL活頁簿模擬成一維、二維、三維陣列
在資料處理上,Excel整體來說算是功能相當好用的。但有些時候我們可能會發覺Excel怎麼剛好沒有所需的功能,這時便可以寫一點小小的巨集程式來加強。因此擅長使用Excel軟體的人,只要再加上一點小小的巨集程式撰寫,就好比如虎添翼,幾乎無所不能了。
在這裡我們將Excel活頁簿模擬成一維、二維、三維陣列,介紹幾個實用的巨集範例,本文將著重在說明程式指令的撰寫,讓不會寫程式的人也可以很快學會這幾種常用的Pattern,至於巨集的編輯和執行方式在另一篇「Excel學習三部曲」中有詳細說明,於此將不再贅述。
第一階段:以(Range(A I)) 模擬一維陣列
範例一:計算ID不重複的資料有幾筆,需先根據ID排序,Range(A I)是表示A欄的第I列儲存格,茲將程式碼說明如下, 符號表示之後的文字是註解,作為說明之用,可不必打在程式裡:
Sub countunique()
Dim I, count As Integer
I = 2 第一列是標題 資料從第二列開始
count = 0 計數器變數
Worksheets(2).Select 資料放在Sheet2
將第一筆資料的ID放到AA變數以便和下一筆比較
AA = Range(A I).Value
I = I + 1 指向下一筆資料
Do While AA 還有記錄資料 即ID不等於空字串
假使ID值不等於AA變數的上一筆ID值 則計數加一
If Range(A I).Value AA Then
count = count + 1 不重複的ID則計數器變數加一
將目前的ID保留到變數AA以便和下一筆ID比較
AA = Range(A I).Value
End If
I = I + 1 指向下一筆資料
Loop
迴圈結束表示不再有ID資料了 把加總計數結果放到H1儲存格
Range(H1).Value = count
End Sub
範例二:如上圖,ID和NAME兩個key都相同的資料要刪除,需先根據ID再根據NAME排序,茲將程式碼說明如下:
Sub delsame()
Dim I As Integer
I = 2
Worksheets(2).Select 資料放在Sheet2
將目前的ID和Name保留到變數AA和BB以便和下一筆比較
AA = Range(A I).Value
BB = Range(B I).Value
I = I + 1 指向下一筆資料
Do While AA 還有記錄資料 即ID不等於空字串
假使ID等於上一筆ID , Name等於上一筆Name則該筆刪除
If Range(A I).Value = AA And Range(B I).Value = BB Then
Rows(I).Delete
Else
不然繼續將目前的ID和NAME保留到變數AA和BB以便和下一筆比較
AA = Range(A I).Value
BB = Range(B I).Value
I = I + 1 指向下一筆資料
End If
Loop
End Sub
第二階段:以(Cells(I, J)) 模擬二維陣列
範例三:以下是矩陣相乘的例子,Cells(I, J)表示二維陣列第I列第J欄(索引皆從1開始,所以Cells(3, 2)即是指B3儲存格)的位置,程式碼也說明如下:
Sub Array_Mult()
Dim I, J, K, temp As Integer
Worksheets(1).Select
For K = 1 To 3
For I = 1 To 3
temp= 0
For J = 1 To 2
temp = temp + (Cells(I + 2, J + 1) * Cells(J + 2, K+ 4))
Next J
Cells(I + 6 , K + 1) = temp
Next I
Next K
End Sub
範例四:這是一個較複雜的例子,從下圖原始的明細資料(sheet1)可看到一個病歷號有數十種不同的檢驗項目,及其檢驗結果,我們要將同一個病歷號的數十種檢驗合併成一個病歷號一筆資料(sheet2),但是每個病歷號檢驗的項目只是所有檢驗項目的一部分,也就是說,假設檢驗項目總共是100項,那麼每個病歷號在s
您可能关注的文档
- A第10章交流电传感器.ppt
- Bante821便携式溶解氧仪.PDF
- BAUMERTHALHEIM系列产品BAUMERTHALHEIM公司简介瑞士.doc
- ARM技术--嵌入式系统.ppt
- A组-两级双机收发性能1-Indico.ppt
- Arria10收发器PHY用户指南-Altera.PDF
- Black'n'WoodNixieTubeClock辉光管时钟-Tube-Tester.PDF
- App管理平台-软体功能操作_Angel_20121116.pdf.PDF
- BM-24A电池组监测仪-大连微拓电气有限公司主页.doc
- BL8025T精度实时时钟芯片-上海贝岭股份有限公司.PDF
- 福莱特玻璃集团股份有限公司海外监管公告 - 福莱特玻璃集团股份有限公司2024年度环境、社会及管治报告.pdf
- 广哈通信:2024年度环境、社会及治理(ESG)报告.pdf
- 招商证券股份有限公司招商证券2024年度环境、社会及管治报告.pdf
- 宏信建设发展有限公司2024 可持续发展暨环境、社会及管治(ESG)报告.pdf
- 品创控股有限公司环境、社会及管治报告 2024.pdf
- 中信建投证券股份有限公司2024可持续发展暨环境、社会及管治报告.pdf
- 洛阳栾川钼业集团股份有限公司环境、社会及管治报告.pdf
- 361度国际有限公司二零二四年环境、社会及管治报告.pdf
- 中国神华能源股份有限公司2024年度环境、社会及管治报告.pdf
- 广西能源:2024年环境、社会及治理(ESG)报告.pdf
文档评论(0)