42钦听、[VBA入門到放棄筆記]字典應(yīng)用:求和

字典常常用來進(jìn)行求和洒试。

  • 單列求和
源數(shù)據(jù)
Sub 求和()
    Dim arr, i As Long, d As Object
    arr = [a1].CurrentRegion'數(shù)組賦值
    Set d = CreateObject("scripting.dictionary")'創(chuàng)建字典
    For i = 2 To UBound(arr)'遍歷數(shù)組
        d(arr(i, 1)) = d(arr(i, 1)) + arr(i, 2)'對(duì)部門進(jìn)行求和
    Next
    [d2].Resize(d.Count, 1) = Application.Transpose(d.keys)'輸出數(shù)據(jù)
    [e2].Resize(d.Count, 1) = Application.Transpose(d.items)
End Sub
結(jié)果

  • 單條件多列求和
源數(shù)據(jù)
  • 要實(shí)現(xiàn)這樣的求和,需要用字典來標(biāo)記行朴上。
  • 用exists判斷部門是否存在垒棋,當(dāng)遍歷部門時(shí),部門第一次出現(xiàn)的時(shí)候余指,是肯定不存在字典里的捕犬,因此跷坝,對(duì)部門進(jìn)行計(jì)數(shù),然后放進(jìn)字典碉碉,標(biāo)識(shí)行柴钻。以例子為參考......
  • 1、當(dāng) i=2時(shí)垢粮,A不存在贴届,則計(jì)數(shù) k=k+1,k=1蜡吧,d(A)=1毫蚓,將部門A放在數(shù)組第一行。
  • 2 當(dāng) i=3時(shí)昔善,B不存在元潘,則計(jì)數(shù) k=k+1,k=2君仆,d(B)=2翩概,將部門B放在數(shù)組第二行。
  • 3返咱、當(dāng) i=4時(shí)钥庇,C不存在,則計(jì)數(shù) k=k+1咖摹,k=3评姨,d(C)=2,將部門C放在數(shù)組第三行萤晴。
    ......
  • 4吐句、當(dāng) i=10時(shí),E不存在硫眯,則計(jì)數(shù) k=k+1蕴侧,k=5择同,d(E)=5,將部門E放在數(shù)組第五行两入。
    -----依次類推--------
  • 假定下圖綠色區(qū)域是一個(gè)數(shù)組,用來存放數(shù)據(jù)敲才。


    Paste_Image.png
Sub 求和()
    Dim arr, i As Long, d As Object
    arr = [a1].CurrentRegion '數(shù)據(jù)放進(jìn)數(shù)組arr
    '定義一個(gè)和arr一樣大小的數(shù)組brr來存放求和數(shù)據(jù)
    ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))
    Set d = CreateObject("scripting.dictionary") '創(chuàng)建字典
    For i = 2 To UBound(arr) '遍歷數(shù)組
        '如果部門沒有添加到字典里(第一次肯定不會(huì)存在字典里)
        If Not d.exists(arr(i, 1)) Then
            k = k + 1 '計(jì)數(shù)
            d(arr(i, 1)) = k '字典標(biāo)識(shí)行裹纳,存入字典
            For j = 1 To UBound(arr, 2) '將第一條數(shù)據(jù),從arr放進(jìn)brr
                brr(k, j) = arr(i, j)
            Next
        Else '如果部門已經(jīng)在字典里面了
            m = d(arr(i, 1)) '讀取字典標(biāo)識(shí)的行,如A,m=1紧武,B,m=2.......
            brr(m, 2) = brr(m, 2) + arr(i, 2) '數(shù)據(jù)累加剃氧,字段1
            brr(m, 3) = brr(m, 3) + arr(i, 3)'字段2
            brr(m, 4) = brr(m, 4) + arr(i, 4)'字段3
        End If
    Next
    [g2].Resize(k, 4) = brr
End Sub
  • 要弄明白上面的代碼else后面的累加,先看下面的例子
例子
  • 數(shù)組arr阻星,arr(2,2)元素朋鞍,是第二行第二列的位置已添,當(dāng)執(zhí)行代碼arr(2, 2) = arr(2, 2) + 10000,arr(2,2)就由原來的200滥酥,變成了10200.
    上面的代碼就是通過用字典來標(biāo)識(shí)行更舞,實(shí)現(xiàn)在數(shù)組元素原來的基礎(chǔ)上累加。 m = d(arr(i, 1))讀取標(biāo)識(shí)行是關(guān)鍵坎吻。
結(jié)果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缆蝉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瘦真,更是在濱河造成了極大的恐慌刊头,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诸尽,死亡現(xiàn)場離奇詭異原杂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)您机,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門污尉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人往产,你說我怎么就攤上這事被碗。” “怎么了仿村?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵锐朴,是天一觀的道長。 經(jīng)常有香客問我蔼囊,道長焚志,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任畏鼓,我火速辦了婚禮酱酬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘云矫。我一直安慰自己膳沽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布让禀。 她就那樣靜靜地躺著挑社,像睡著了一般。 火紅的嫁衣襯著肌膚如雪巡揍。 梳的紋絲不亂的頭發(fā)上痛阻,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音腮敌,去河邊找鬼阱当。 笑死俏扩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的弊添。 我是一名探鬼主播动猬,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼表箭!你這毒婦竟也來了赁咙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤免钻,失蹤者是張志新(化名)和其女友劉穎彼水,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體极舔,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凤覆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拆魏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盯桦。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖渤刃,靈堂內(nèi)的尸體忽然破棺而出拥峦,到底是詐尸還是另有隱情,我是刑警寧澤卖子,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布略号,位于F島的核電站,受9級(jí)特大地震影響洋闽,放射性物質(zhì)發(fā)生泄漏玄柠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一诫舅、第九天 我趴在偏房一處隱蔽的房頂上張望羽利。 院中可真熱鬧,春花似錦刊懈、人聲如沸这弧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽当宴。三九已至,卻和暖如春泽疆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背玲献。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工殉疼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梯浪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓瓢娜,卻偏偏與公主長得像挂洛,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子眠砾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容