国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Excel·VBA二維數(shù)組組合函數(shù)、組合求和

這篇具有很好參考價(jià)值的文章主要介紹了Excel·VBA二維數(shù)組組合函數(shù)、組合求和。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

之前的文章《Excel·VBA數(shù)組組合函數(shù)、組合求和》和《Excel·VBA數(shù)組排列函數(shù)》,都是針對一維數(shù)組的組合和排列

  • 二維數(shù)組組合:對一個(gè)m行*n列的二維數(shù)組,每行抽取1個(gè)元素進(jìn)行組合,則共有n ^ m個(gè)組合

1,二維數(shù)組組合函數(shù)

代碼思路,類似之前的文章“VBA排列函數(shù)”尾數(shù)循環(huán)的方式

Function combin_arr2d(arr)
    'arr二維數(shù)組,內(nèi)含m行*n列元素,每行抽取1個(gè)進(jìn)行組合,返回一維嵌套數(shù)組,每行為一個(gè)組合(數(shù)組從1開始計(jì)數(shù))
    Dim i&, j&, m&, n&, kk&, result, k&, x&, r&
    If LBound(arr) = 0 Or LBound(arr, 2) = 0 Then  '轉(zhuǎn)為從1開始計(jì)數(shù)
        arr = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arr))
    End If
    m = UBound(arr): n = UBound(arr, 2): ReDim b&(1 To m - 1)
    kk = n ^ m: ReDim result(1 To kk): ReDim res(1 To m): k = 1
    For i = 1 To m - 1  '非尾數(shù)部分初始值
        b(i) = 1
    Next
    Do
        For i = k To m - 1  '非尾數(shù)部分
            res(i) = arr(i, b(i))
        Next
        For j = 1 To n  '僅修改尾數(shù)
            res(m) = arr(m, j): r = r + 1: result(r) = res
        Next
        x = m - 1: b(x) = b(x) + 1  '尾數(shù)循環(huán)結(jié)束后,m-1位進(jìn)位
        Do While b(x) > n  '循環(huán)進(jìn)位,原位重新為1
            If x > 1 Then b(x) = 1: x = x - 1: b(x) = b(x) + 1 Else Exit Do
        Loop
        k = x  '非尾數(shù)部分,需要重新賦值的開始位置
        If b(1) > n Then Exit Do   '所有組合完成
    Loop Until r = kk
    combin_arr2d = result
End Function

舉例

組合結(jié)果為一維嵌套數(shù)組,寫入表格需轉(zhuǎn)為二維數(shù)組,以下代碼調(diào)用了《Excel·VBA數(shù)組行列轉(zhuǎn)換函數(shù)》TransposeArr函數(shù)(如需使用代碼需復(fù)制)

Sub combin_arr2d組合輸出()
    Dim arr, brr, crr
    arr = [a1].CurrentRegion
    brr = combin_arr2d(arr)  '調(diào)用函數(shù)返回組合,一維嵌套數(shù)組
    crr = TransposeArr(brr, 2)  '轉(zhuǎn)為二維數(shù)組
    Cells(1, "e").Resize(UBound(crr), UBound(crr, 2)) = crr
End Sub

對表格中A1:C5區(qū)域共5行3列,每行抽取每行抽取1個(gè)元素進(jìn)行組合,共有3 ^ 5 = 243個(gè)組合,如圖(部分截圖)
Excel·VBA二維數(shù)組組合函數(shù)、組合求和,excel,vba,算法,excel,vba,排列組合,算法

2,組合求和

Sub combin_arr2d組合求和()
    Dim arr, brr, b, h, h2, i&, temp_sum, write_col$, w&
'--------------------參數(shù)填寫:arr二維數(shù)組,h和值下限,h2和值上限,write_col結(jié)果寫入列號
    arr = [a1:c14]: h = 36: h2 = 43
    write_col = "e": w = 1: Cells(w, write_col).Resize(1, 2) = Array("和值", "組合")
    tm = Timer: brr = combin_arr2d(arr)  '調(diào)用函數(shù)返回組合,一維嵌套數(shù)組
    For Each b In brr
        temp_sum = WorksheetFunction.sum(b)
        If Abs(Round(temp_sum - h, 6)) < (0.1 ^ 6) Or Abs(Round(temp_sum - h2, 6)) < (0.1 ^ 6) _
        Or (temp_sum >= h And temp_sum <= h2) Then
            w = w + 1: Cells(w, write_col).Resize(1, 2) = Array(temp_sum, Join(b, "+"))
        End If
    Next
    Debug.Print "組合求和完成,累計(jì)用時(shí):" & Format(Timer - tm, "0.00")  '耗時(shí)
End Sub

《excel吧-從每一行中選一個(gè)數(shù),最后總和范圍是36~43的所有可能情況列出來怎么弄?》對表格中A1:C14區(qū)域共14行3列,進(jìn)行組合共有3 ^ 14 = 4,782,969個(gè)組合,求和值范圍為36-43的所有組合,共有525,087個(gè)組合符合要求,如圖(部分截圖)
Excel·VBA二維數(shù)組組合函數(shù)、組合求和,excel,vba,算法,excel,vba,排列組合,算法
測試耗時(shí)秒數(shù)
二維數(shù)組組合求和的代碼運(yùn)行速度較《Excel·VBA數(shù)組組合函數(shù)、組合求和》的例子慢了很多文章來源地址http://www.zghlxwxcb.cn/news/detail-678695.html

組合類型 一維數(shù)組組合 二維數(shù)組組合
組合個(gè)數(shù) 5,242,887 4,782,969
耗時(shí)秒數(shù) 2.67 60.61

到了這里,關(guān)于Excel·VBA二維數(shù)組組合函數(shù)、組合求和的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • VBA 二維數(shù)組查找并定位數(shù)據(jù)

    VBA 二維數(shù)組查找并定位數(shù)據(jù)

    數(shù)據(jù)源: ? 將這個(gè)二維數(shù)組導(dǎo)入內(nèi)存后,存儲到一個(gè)二維數(shù)組里,查找其中一個(gè)數(shù)組成員,返回其在表格中的地址. 如找44,返回M20

    2024年02月16日
    瀏覽(24)
  • EXCEL VBA從入門到精通 第一章:VBA入門

    介紹VBA的定義,作用和優(yōu)點(diǎn)。 VBA(Visual Basic for Applications)是一種編程語言,是微軟Office套件中的一個(gè)重要組成部分,主要用于自動化處理Office中的各種操作,包括Excel、Word、PowerPoint、Outlook等。 VBA是一種基于VB(Visual Basic)語言的編程語言,它具有簡單易學(xué)、功能強(qiáng)大、靈

    2024年02月07日
    瀏覽(28)
  • 掌握 Microsoft Excel 宏和 Excel VBA

    掌握 Microsoft Excel 宏和 Excel VBA

    掌握 Microsoft Excel 宏和 Excel VBA 基于項(xiàng)目的 Excel VBA(Visual Basic for Applications)和 Excel 宏課程 課程英文名:Master Microsoft Excel Macros and Excel VBA 此視頻教程共27.0小時(shí),中英雙語字幕,畫質(zhì)清晰無水印,源碼附件全 課程編號:286 百度網(wǎng)盤地址:https://pan.baidu.com/s/1ivLIGKt_3R0wncmCswMTR

    2024年02月05日
    瀏覽(22)
  • Excel VBA 語法基礎(chǔ)

    VBA(Visual Basic for Applications)是一種用于宏編程和自動化任務(wù)的編程語言,廣泛應(yīng)用于 Microsoft Office 套件中的各種應(yīng)用程序,如 Excel、Word 和 PowerPoint。掌握 VBA 基礎(chǔ)語法可以幫助您通過編寫自定義的宏來增強(qiáng)和自動化這些應(yīng)用程序的功能。 本文將介紹 Excel VBA 的基礎(chǔ)語法,幫

    2024年02月09日
    瀏覽(26)
  • Excel+VBA幫助

    ?目錄 一、VBA 入門知識 1、激活工作簿 2、創(chuàng)建新工作簿 3、打開工作簿 4、用編號引用工作表 5、用名稱引用工作表 6、將文檔保存為 Web 頁 7、用 A1 樣式的記號引用單元格和單元格區(qū)域 8、用編號引用單元格 9、引用行或列 10、用快捷記號引用單元格 11、引用命名單元格區(qū)域

    2024年02月05日
    瀏覽(18)
  • 【一】Excel VBA開發(fā) 初探

    【一】Excel VBA開發(fā) 初探

    1、點(diǎn)擊Excel左上角的【文件】,然后點(diǎn)擊文件下方的【選項(xiàng)】 2、【Excel選項(xiàng)】中點(diǎn)擊【自定義功能區(qū)】,右邊勾選【開發(fā)工具】,點(diǎn)擊【確定】 ?3、返回excel sheet 頁面。點(diǎn)擊【開發(fā)工具】,我們將看到三個(gè)我們開發(fā)過程中必用的按鈕,分別是:【Visual Basic】、【宏】、【錄制

    2024年02月11日
    瀏覽(23)
  • VBA技術(shù)資料MF36:VBA_在Excel中排序

    VBA技術(shù)資料MF36:VBA_在Excel中排序

    【分享成果,隨喜正能量】一個(gè)人的氣質(zhì),并不在容顏和身材,而是所經(jīng)歷過的往事,是內(nèi)在留下的印跡,令人深沉而安謐。所以,優(yōu)雅是一種閱歷的凝聚;淡然是一段人生的沉淀。時(shí)間會讓一顆靈魂,變得越來越動人??刂谱约旱钠?,做一個(gè)有修養(yǎng)的人。。 我給VBA的定義

    2024年02月15日
    瀏覽(30)
  • VBA技術(shù)資料MF43:VBA_Excel中自動填充

    VBA技術(shù)資料MF43:VBA_Excel中自動填充

    【分享成果,隨喜正能量】以時(shí)寢息,當(dāng)愿眾生,身得安隱,心無動亂。愿我們都能,夢見幸福!在踉蹌中前進(jìn),在跌倒后躍進(jìn),逐漸強(qiáng)大.。 我給VBA的定義:VBA是個(gè)人小型自動化處理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高數(shù)據(jù)的準(zhǔn)確度。我的

    2024年02月12日
    瀏覽(28)
  • VBA技術(shù)資料MF35:VBA_在Excel中過濾數(shù)據(jù)

    VBA技術(shù)資料MF35:VBA_在Excel中過濾數(shù)據(jù)

    【分享成果,隨喜正能量】好馬好在腿,好人好在嘴。不會燒香得罪神,不會講話得罪人。慢慢的你就會發(fā)現(xiàn),一顆好心,永遠(yuǎn)比不上一張好嘴。。 我給VBA的定義:VBA是個(gè)人小型自動化處理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高數(shù)據(jù)的準(zhǔn)確度。

    2024年02月14日
    瀏覽(26)
  • Excel·VBA合并工作簿2

    Excel·VBA合并工作簿2

    其他合并工作簿的方法,見之前的文章《Excel·VBA合并工作簿》 與之前的文章《Excel·VBA合并工作簿(3,合并文件夾下所有工作簿中所有工作表)》類似,但是按照表頭名稱,將表格數(shù)據(jù)匯總至合并表格,表頭名稱相同的在同一列 舉例 共5個(gè)工作簿13個(gè)工作表,并且改變了C、

    2024年01月21日
    瀏覽(49)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包