- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
本帖最後由 GBKEE 於 2016-1-1 10:16 編輯
回復 12# yen956
vba的說明- Dictionary 物件
- 物件,用於儲存資料關鍵字和項目對。
- 語法
- Scripting.Dictionary
- 請注意
- Dictionary 物件與 PERL 相關陣列全等。可以是任何型式的資料的項目被儲存在陣列中。每個項目都與一個唯一的關鍵字相關。該關鍵字用來取出單個項目,通常是整數或字串,可以是除陣列外的任何型態。
- 下面的程式碼舉例說明了如何建立一個 Dictionary 物件:
- Dim d '建立一個變數
- Set d = CreateObject(Scripting.Dictionary)
- d.Add "a", "Athens" '加入一些關鍵字和項目
- d.Add "b", "Belgrade"
- d.Add "c", "Cairo"
複製代碼 9#附檔的程式碼試試看- Option Explicit
- Sub Ex()
- Dim d As Object, E As Variant, AR(1 To 3), i As Integer
- Dim Rng As Range, AX(), M As Variant
- Set d = CreateObject("SCRIPTING.DICTIONARY")
- '工作表1-> 工作表3 '出現機率為80%的字母*****
- For i = 1 To 3 '"工作表1"->"工作表3" 在活頁簿上的 Index
- MsgBox Sheets(i).Name '可註解掉
- With Sheets(i).Range("B:B").SpecialCells(xlCellTypeConstants).Offset(, 1)
- .Cells = "=COUNTIF(C2,RC[-1])/COUNTA(C1)" '儲存格寫上公式
- AR(i) = Application.WorksheetFunction.Transpose(.Offset(, -1).Resize(, 2).Value)
- 'AR(i) 導入英文字母出現百分比機率
- For Each E In .Cells
- If E >= 0.8 Then d(E.Offset(, -1).Value) = ""
- Next
- .Cells = .Value '公式轉為值
- .NumberFormatLocal = "0%" '數字格式化
- .Cells.Offset(, 1) = ""
- If d.Count >= 1 Then
- .Cells(1).Range("B1").Resize(d.Count) = Application.WorksheetFunction.Transpose(d.keys)
- End If
- End With
- d.RemoveAll
- Next
-
- '***工作表4 上B欄位中,每個英文字母出現在指定工作表的比率***
- Set Rng = Sheets("工作表4").Range("A1")
- i = 0
- Do Until Rng Is Nothing
- AX = AR(Sheets(Rng.Value).Index) '"工作表1"->"工作表3" 在活頁簿上的 Index
- 'AR(Sheets(Rng.Value).Index) 導出各個工作表上英文字母的機率
- M = Application.Match(Rng.Offset(i, 1), Application.Index(AX, 1), 0)
- 'Application.Match 工作表函數
- With Rng.Offset(i, 2) 'C欄
- If Not IsError(M) Then
- .Cells = AX(2, M)
- Else
- .Cells = 0
- End If
- .NumberFormatLocal = "0%"
- End With
- i = i + 1
- If Rng.Offset(i) <> "" Then '下一個工作表
- Set Rng = Rng.Offset(i)
- i = 0
- ElseIf Rng.Offset(i, 1) = "" Then '沒有字串
- Set Rng = Nothing '離開迴圈的條件
- End If
- Loop
- End Sub
複製代碼 |
|