VBA 利用字典代替VLOOKUP

2021-09-25 21:25:27 字數 1954 閱讀 6754

sub 代替vlookup()

方法一:

dim d, ar, br, cr, wb as workbook

set d = createobject("scripting.dictionary")

br = worksheets("sheet1").[a1].currentregion '需要配置的資料表

ar = worksheets("r").[a1].currentregion '目標表

redim crr(1 to ubound(br) - 1, 1 to 1) '配置表的迴圈列數

for i = 2 to ubound(ar) '從目標表需要關聯的字段

d(ar(i, 4)) = ar(i, 6)

next

for i = 2 to ubound(br)

crr(i - 1, 1) = d(br(i, 4)) '將crr寫到brr表中

next

worksheets("sheet1").range("ej2").resize(ubound(br), 1) = crr '匹配

方法二:

dim arr, d as object, crr '

set d = createobject("scripting.dictionary")

arr = worksheets("基礎資訊表").[a1].currentregion

brr = worksheets("統計結果").[a1].currentregion

for i = 2 to ubound(arr)

d(arr(i, 1)) = arr(i, 6)

next

redim crr(2 to ubound(brr), 1 to 1) '匹配目標表內容

for j = 2 to ubound(brr)

crr(j, 1) = d(brr(j, 2))'''在字典裡查詢brr值並返回相應值

next

worksheets("統計結果").[c2].resize(ubound(crr) - 1, 1) = crr

set d = nothing

方法三:多列

dim arr, d as object, crr '陣列brr用來存放求和資料 '建立字典

set d = createobject("scripting.dictionary") '陣列賦值

arr = worksheets("基礎資訊表").[a1].currentregion '重置陣列brr大小

brr = worksheets("統計結果").[a1].currentregion

for i = 2 to ubound(arr)

d(arr(i, 1)) = arr(i, 6) & "," & arr(i, 7)

next

redim crr(2 to ubound(brr), 1 to 1)

redim drr(2 to ubound(brr), 1 to 1)

for j = 2 to ubound(brr)

if d(brr(j, 2)) <> "" then

crr(j, 1) = split(d(brr(j, 2)), ",")(0) '在brr裡查詢到此名,並返回對應值

drr(j, 1) = split(d(brr(j, 2)), ",")(1)

else

crr(j, 1) = ""

drr(j, 1) = ""

end if

next

worksheets("統計結果").[c2].resize(ubound(crr) - 1, 1) = crr

worksheets("統計結果").[d2].resize(ubound(crr) - 1, 1) = drr

set d = nothing

end sub

Python 利用字典合併檔案

這個要求是這樣的 將倆個檔案合併為乙個檔案,這倆檔案具有相同的第一列,合併後的檔案為 第一列只有一列 其他列追加,與下圖cc.txt 相同aa.txt1 44 2 65 3 64 4 43bb.txt1 54 2 66 3 68 4 49 importsys printsys.path 0 with...

利用字典管理使用者的登入資訊

我們用乙個程式用於管理使用者名稱和登入密碼的模擬登入資料系統,指令碼接受新使用者的資訊。登入使用者賬號建立後,已經存在的使用者可以用登入名字和密碼重返系統,新使用者則不能用別人的登入名建立使用者賬戶。coding utf 8 created on sun aug 20 20 43 01 2017 a...

Shell 程式設計 利用字典統計文字次數

csdn 問答上看到的乙個問題,有乙個 test.log 內容如下 a,e a,b,e b,c,e c,ec,d,ed,e統計規則是這樣的 每一行以逗號分割,如果第二個欄位為 e 就統計該行,否則將第乙個字段相同且第二個欄位不為 e 的行數累加。為了換換腦子 調節一下大腦思維,所以就花了點時間寫了下...