如何按指定個數在Excel中獲得一列數據的所有可能組合?

      網友投稿 730 2025-04-02

      如何按指定個數在Excel中獲得一列數據的所有可能組合?


      Q:數據放置在列A中,我要得到這些數據中任意3個數據的所有可能組合。如下圖1所示,列A中存放了5個數據,要得到這5個數據中任意3個數據的所有可能組合,如列B中所示。如何實現?

      圖1

      (注:這是無意中看到的一個問題,我覺得程序編寫得很巧妙,使用了遞歸的方法來解決,非常簡潔,特將該解答稍作整理后輯錄于此與大家分享!)

      A:VBA代碼如下:

      Sub Combinations()

      Dim rng As Range

      Dim n AsLong

      Dim vElements As Variant

      Dim lRow As Long

      Dim vResult As Variant

      ‘要組合的數據在當前工作表的列A

      Set rng =Range(“A1”, Range(“A1”).End(xlDown))

      ‘設置每個組合需要的數據個數

      n = 3

      ‘在數組中存儲要組合的數據

      vElements =Application.Index(Application.Transpose(rng), 1, 0)

      ‘重定義進行組合的數組大小

      ReDim vResult(1 To n)

      Call CombinationsREC(vElements, CInt(n), vResult, lRow, 1, 1)

      End Sub

      Sub CombinationsREC(vElements As Variant, _

      p As Integer,_

      vResult AsVariant, _

      lRow As Long,_

      iElement AsInteger, _

      iIndex AsInteger)

      Dim i AsInteger

      For i =iElement To UBound(vElements)

      vResult(iIndex)= vElements(i)

      IfiIndex = p Then

      lRow = lRow + 1

      Range(“B” & lRow) = Join(vResult, “, “)

      ‘每組組合放置在多列中

      Range(“C” &lRow).Resize(, p) = vResult

      Else

      ‘遞歸調用

      Call CombinationsREC(vElements, p, vResult, lRow, i + 1, iIndex + 1)

      End If

      Next i

      End Sub

      代碼的關鍵在于遞歸調用的實現,有興趣的朋友可以使用F8鍵逐語句運行代碼觀察代碼效果,來理解實現過程。

      代碼的圖片版如下:

      如果將代碼中注釋掉的代碼恢復,也就是將組合結果放置在多列中,運行后的結果如下圖2所示。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel批量填充公式的教程步驟圖
      下一篇:晚會甘特圖
      相關文章
      亚洲精品美女久久久久| 亚洲午夜精品久久久久久app| 亚洲国产成人无码AV在线影院| 亚洲成人激情在线| 亚洲理论电影在线观看| 亚洲欧洲日本在线| 亚洲AV无码乱码在线观看| 亚洲国产成人久久精品大牛影视| 亚洲人成综合网站7777香蕉| 亚洲手机中文字幕| 亚洲欧洲国产精品久久| 亚洲色图视频在线观看| 亚洲韩国—中文字幕| 亚洲A∨无码无在线观看| 亚洲成av人片在线观看无码不卡| 亚洲精品乱码久久久久久蜜桃不卡| 国产亚洲精品拍拍拍拍拍| 亚洲一级特黄大片无码毛片| 久久国产成人精品国产成人亚洲 | 亚洲无人区码一二三码区别图片| 亚洲videos| 亚洲中文无码卡通动漫野外| 久久亚洲精品国产亚洲老地址| 中文字幕亚洲情99在线| 亚洲人成网站在线在线观看| 亚洲精华国产精华精华液网站| 亚洲av无码专区在线观看下载| 久久久久亚洲AV无码去区首| www.亚洲一区| 久久精品亚洲乱码伦伦中文| 中文字幕亚洲图片| 亚洲国产精品无码久久久秋霞2| 亚洲av伊人久久综合密臀性色 | 亚洲天堂免费在线视频| 浮力影院亚洲国产第一页| 亚洲精品~无码抽插| 亚洲AV电影院在线观看| 亚洲视频一区网站| 亚洲日本va在线观看| 亚洲av日韩综合一区二区三区| 亚洲国产91精品无码专区|