46、[VBA入門到放棄筆記]字典對(duì)合并單元格的求和

合并單元格是Excel中比較蛋疼的東東,但至今仍有不少使用合并單元格的案例。如下圖,需要對(duì)ABCDE進(jìn)行求和。


數(shù)據(jù)

Sub comm()
    Dim arr, R&, i&, d As Object
    Set d = CreateObject("scripting.dictionary")
    arr = [a1].CurrentRegion
    For i = 1 To UBound(arr)
        If arr(i, 2) <> "" Then  '//如果B列單元格不為空
            R = i       '//標(biāo)記此時(shí)的行號(hào)
            d(arr(i, 1)) = d(arr(i, 1)) + arr(i, 2) '//求和
        Else   '//如果B列單元格為空
 '//求和,注意arr(R, 2) R取標(biāo)記的行號(hào),也就是合并單元格區(qū)域中有數(shù)據(jù)的單元格
           d(arr(i, 1)) = d(arr(i, 1)) + arr(R, 2) 
        End If
    Next
    [d1].Resize(d.Count, 2) = Application.Transpose(Array(d.keys, d.items)) '//輸出數(shù)據(jù)
End Sub

結(jié)果:


結(jié)果

此題目同樣可以改版,變成求和的key是合并單元格

數(shù)據(jù)

同樣采取標(biāo)記行的做法,代碼如下,不解釋了。

Sub comm()
    Dim arr, R&, i&, d As Object
    Set d = CreateObject("scripting.dictionary")
    arr = [a1].CurrentRegion
    For i = 1 To UBound(arr)
        If arr(i, 1) <> "" Then
            R = i
            d(arr(i, 1)) = d(arr(i, 1)) + arr(i, 2)
        Else
            d(arr(R, 1)) = d(arr(R, 1)) + arr(i, 2)
        End If
    Next
    [d1].Resize(d.Count, 2) = Application.Transpose(Array(d.keys, d.items))
End Sub

結(jié)果


結(jié)果

要充分利用循環(huán)遍歷干點(diǎn)神馬事情,一切都可以在當(dāng)中發(fā)生。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)自鏈接 目錄 1.認(rèn)識(shí)NPOI 2.使用NPOI生成xls文件 2.1創(chuàng)建基本內(nèi)容 2.1.1創(chuàng)建Workboo...
    腿毛褲閱讀 11,160評(píng)論 1 3
  • 來源:微信公眾號(hào)表妹的EXCEL 提問:表妹,你好,請(qǐng)問合并單元格的問題怎么弄? 表妹:參看2016年12月28日...
    表妹的EXCEL閱讀 3,579評(píng)論 1 3
  • 單元格對(duì)象 單元格是電子表格中最為核心的元素,當(dāng)然單元格也是對(duì)象,是電子表格對(duì)象的子對(duì)象,所有的數(shù)據(jù)都是基于單元格...
    i7studio閱讀 7,380評(píng)論 2 7
  • 昨晚頭實(shí)在太痛,附上一篇之前的情書,篇幅有些長(zhǎng) 親愛的,真的要跟你說一聲抱歉,這已經(jīng)不是我第一次拿起筆寫情書給你。...
    采臣胸閱讀 295評(píng)論 0 1
  • 今生不好過,我選擇把開始提前支取了。 再見,今生! 你好,來世!
    吳森迪閱讀 244評(píng)論 0 0

友情鏈接更多精彩內(nèi)容