案例:
代碼非常簡單: function test(){ var arr=Range("a2",Cells(1,3).End(4)).Value(); var m=new Map(); for (var ar of arr){ if (m.has(ar[0])){ m.set(ar[0],m.get(ar[0]).concat([ar])); } else { m.set(ar[0],[["部門","業(yè)務(wù)員","銷售"],ar]) } } for (var [k,v] of m) { var sht=Worksheets.Add(undefined,Sheets(Sheets.Count)); sht.Name=k; sht.Range("a1").Resize(v.length,3).Value2=v; }} 新建一個Map,把拆分指標(這里是部門)作為Key,其它數(shù)據(jù) [業(yè)務(wù)員,銷售額] 作為Value,把數(shù)據(jù)讀取到Map中,如果遇到Map中有的Key,就把此Key對應(yīng)的Value值取出來,然后再連接迭代出來的數(shù)組,如果遇到Map中沒有Key,就把標題和此條數(shù)據(jù)作為兩個元素寫入Map,這樣迭代完成后Map中Key就只有不重復(fù)的幾個部門,Value中存儲著Key對應(yīng)的數(shù)據(jù),迭代Map,把相關(guān)數(shù)據(jù)取出來即可。 盡管思路和VBA中沒啥差別,但是在語句的簡潔和運行效率上確實更優(yōu)。 |
|