多列賦值 EXCEL字典應用例項五(多列分類統計)

2021-10-14 16:23:31 字數 2491 閱讀 4431

昨天我們分享了應用字典技術實現單列分類統計的案例,那如果資料是多列的情況該怎麼辦呢?比如下面:

我們知道字典中乙個key對應乙個item,上圖中這種乙個姓名對應三列的資料該怎麼處理呢?

其實道理和單列資料統計是一樣的,首先把姓名以及c、d、e列資料寫入陣列arr中。

然後用乙個迴圈把arr1中姓名逐個寫入字典,同時對應的item從1開始逐個往上累加,然後把arr中的元素對應裝到arr1中,

arr1(1, n) = arr(i, 1)

arr1(2, n) = arr(i, 2)

arr1(3, n) = arr(i, 3)

arr1(4, n) = arr(i, 4)

如下圖:

至於為什麼arr1要確定成4行多列,我們最後解釋,先這樣寫進去。

當迴圈到姓名出現重複值的時候,我們要把arr1中該姓名對應的三列加班時間拿出來,然後加上本次對應的三列資料,得到的結果賦給該姓名。

怎麼把arr1中該姓名對應的三列加班時間找出來呢?由於字典中的n和arr1中的n是對應的,所以我們通過d(arr(i,1))就可以獲取該姓名對應的item,通過該item在arr1中就能找到該姓名對應的三個加班時間,然後加上本次的時間再賦值給該姓名,這樣就達到了乙個累加的效果。

具體**如下:

sub 加班時間統計()

dim d as object, arr, arr1(), i%, n%, m%

set d = createobject("scripting.dictionary")

arr = range("b2", [e2].end(xldown))

for i = 1 to ubound(arr)

if not d.exists(arr(i, 1)) then

n = n + 1

d(arr(i, 1)) = n

redim preserve arr1(1 to 4, 1 to n)

arr1(1, n) = arr(i, 1)

arr1(2, n) = arr(i, 2)

arr1(3, n) = arr(i, 3)

arr1(4, n) = arr(i, 4)

else

m = d(arr(i, 1))

arr1(2, m) = arr1(2, m) + arr(i, 2)

arr1(3, m) = arr1(3, m) + arr(i, 3)

arr1(4, m) = arr1(4, m) + arr(i, 4)

end if

next

end sub

最後講下為啥重新宣告陣列時要宣告成:

redim preserve arr1(1 to 4, 1 to n)

而不是宣告成:

redim preserve arr1(1 to n, 1 to 4)

看起來第二種和想要的結果格式上才一致呀,為啥非要反過來,經測試,我們知道:

或者我們可以直接宣告乙個新的二維陣列

arr1(1 to 50, 1 to 4)

用來裝符合條件的元素,目測下50行足夠了,所以用了50,大家可以根據實際情況來定。

**如下:

sub 加班時間統計1()

dim d as object, arr, arr1(1 to 50, 1 to 4), i%, n%, m%

set d = createobject("scripting.dictionary")

arr = range("b2", [e2].end(xldown))

for i = 1 to ubound(arr)

if not d.exists(arr(i, 1)) then

n = n + 1

d(arr(i, 1)) = n

arr1(n, 1) = arr(i, 1)

arr1(n, 2) = arr(i, 2)

arr1(n, 3) = arr(i, 3)

arr1(n, 4) = arr(i, 4)

else

m = d(arr(i, 1))

arr1(m, 2) = arr1(m, 2) + arr(i, 2)

arr1(m, 3) = arr1(m, 3) + arr(i, 3)

arr1(m, 4) = arr1(m, 4) + arr(i, 4)

end if

next

[g2].resize(n, 4) = arr1

end sub

這樣寫理解起來很容易,最後得到的陣列就是想要的結果,不需要再轉置了。

**:公尺巨集office

EXCEL合併多列

今天想實現乙個將 excel匯入到資料庫中的功能,這在以前我就實現過,本沒什麼。但問題是當晚列印出sql語句時,發現有很多空的資料,檢視了下excel 發現有乙個單元格中的資料是跨多列的。於是就要解決合併多列資料 的問題。通過網路,我找到了一種解決方法,我是這樣實現的 1.公式 concatenat...

Excel多列匹配相加

問題描述 下表合計金額處,自動查詢專案1與專案2中專案名稱相同的,對其金額進行相加。解決辦法 使用vlookup函式 例如g2單元格,則對應的公式為 vlookup a2,a 2 b 7,2,false if isna vlookup a2,d 2 e 7,2,false 0,vlookup a2,...

Excel 2010 SQL應用087 多列排序

目錄 源資料表 解決方案 多列排序技巧及規律 姓名 一級部門 二級部門 羅大吳營運部 動力羅文 營運部生產 張汶營運部 生產吳小麗 財務部財務部 柳生風營運部 動力樑先麗 營運部動力 張通營運部 動力古鳳 管理部行政 吳明麗營運部 生產趙香華 營運部動力 吳風營運部 生產閏關 管理部行政 吳巨集豔營...