乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      示例講字典(Dictionary):獲取唯一值

       新用戶0118F7lQ 2022-06-17 發(fā)布于福建
      excelperfect

      標簽:VBA,Dictionary
      字典(Dictionary)是一種通過鍵(key)和項(item)(注:鍵和項是字典中的術(shù)語)存儲唯一項的方法。它是一種基于唯一鍵存儲數(shù)據(jù)的極好工具,它的強大之處在于可以使用鍵來存儲和合并數(shù)據(jù)。
      在本文中,講解如何在字典中捕獲一個單元格區(qū)域并將其引用回Excel。這里,將存儲一個10行的單元格區(qū)域,然后只輸出該區(qū)域中唯一的項目。
      示例如下圖1所示。獲取其數(shù)據(jù)區(qū)域,使用字典將數(shù)據(jù)存儲,然后使用VBA數(shù)組提取我們選擇需要獲取唯一值的列。
      圖片
      1
      設(shè)置字典非常簡單:可以直接創(chuàng)建字典對象,而無需引用Microsoft Scripting Runtime。下面的代碼創(chuàng)建字典引用:
      With CreateObject('Scripting.Dictionary')
      另一種方式是,在VBE中單擊“工具-引用”命令,在“引用”對話框中,勾選“Microsoft Scripting Runtime”前的復(fù)選框,如下圖2所示。
      圖片
      2
      下面的VBA代碼從數(shù)據(jù)單元格區(qū)域中生成唯一數(shù)據(jù)。它將從數(shù)組的當前區(qū)域獲取數(shù)據(jù),并將數(shù)據(jù)匯總到一個唯一值列表中,輸出到所選擇的單元格區(qū)域內(nèi)。
      Sub ScriptA()
          Dim ar
          Dim i As Long
          Dim k As Variant
          ar = [A1].CurrentRegion.Value
          With CreateObject('Scripting.Dictionary')
              For i = 1 To UBound(ar)
                  .Item(ar(i, 1)) = .Item(ar(i, 1)) + ar(i, 3)
              Next
              For Each k In .keys
                  Debug.Print k, .Item(k)
              Next k
              ar = Array(.keys, .items)
              Sheet3.[A1].Resize(.Count, 2) = Application.Transpose(ar)
          End With
      End Sub
      將單元格區(qū)域推送到一個名為(ar)的數(shù)組中,該數(shù)組存儲所有數(shù)據(jù)。然后,一個簡單的For循環(huán)遍歷數(shù)組中的數(shù)據(jù)。
      .Item行允許引用數(shù)組(ar),并將唯一數(shù)據(jù)放入字典中。
      .Item(ar(i, 1)) = .Item(ar(i, 1)) + ar(i, 3)
      當循環(huán)完成后,所要做的就是將數(shù)據(jù)從字典中提取到想要的位置。
      使用以下代碼將數(shù)據(jù)返回數(shù)組:
      ar = Array(.keys, .items)
      也可以只使用:
      ar = Array(.keys)
      僅引用一列。
      最后,將輸出數(shù)據(jù)的單元格區(qū)域調(diào)整為與保存字典的數(shù)組相同的大小。
      Sheet3.[A1].Resize(.Count, 2) = Application.Transpose(ar)
      這里將數(shù)據(jù)輸出工作表Sheet3的單元格A1,并從該起始點調(diào)整區(qū)域大小。
      圖片
      3
      如果想要輸出不同列的唯一值,可以使用代碼。例如,將第1列:
      .Item(ar(i, 1)) = .Item(ar(i, 1)) + ar(i, 3)
      修改為第2列:
      .Item(ar(i, 2)) = .Item(ar(i, 2)) + ar(i, 3)
      此時得到第2列的唯一值如下圖4所示。
      圖片
      4
      注:本文學(xué)習整理自thesmallman.com,有興趣的朋友可以到原網(wǎng)站學(xué)習?;蛘叩街R星球App完美Excel社群下載本文示例工作簿。
      歡迎到知識星球:完美Excel社群,進行技術(shù)交流和提問,獲取更多電子資料,并通過社群加入專門的微信討論群,更方便交流。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多