導航:首頁 > 源碼編譯 > vba遞歸演算法循環

vba遞歸演算法循環

發布時間:2022-08-03 15:33:56

1. EXCEL VBA怎麼實現循環判斷

在Excel中實現循環判斷需要看實際的應用環境,大概分以下三種情況:
1、在公式中
在公式中經常用row(1:99)這樣去構造一個數列,然後通過對這個數列即可實現一定次數(如本例99次)的循環應用,在公式中加入if函數即可以實現循環判斷。
2、在VBA中
在VBA中的循環判斷其實就很簡單了,主要是結合for...next...或loop...until等循環語句結合if...then...else等判斷語句來實現。
3、在Excel新功能Power Query中
在Power Query中構造循環有很多方法,比如使用函數List.Transform或List.Accumulate實現轉換或迭代計算,其中可以通過各種方式加入條件。例如List.Transform函數的具體用法如下:
PQ-M及函數:批量處理的利器——列表轉換函數(List.Transform)及A股數據批量抓取方法
原創 大海 Excel到PowerBI在前面多個文章里用到List.Transform這個函數,為避免影響這些文章的主體內容,沒有專門詳細展開講這個函數的具體內容,本篇補上。List.Transform函數的基本功能是實現一個列表到另一個列表的轉換,即輸入一個列表,相應地得到一個經某些規則轉換後的列表。
先來看一下List.Transform函數的基本語法:
List.Transform(列表 , 轉換函數)
語法本身很簡單,但是,其中的兩個參數都非常靈活,因為:
1、第一個參數是列表,但是,列表裡的內容是可以任意的東西,簡單到幾個數字,復雜到一個個的表,甚至可以是表中帶表等任何東西!
2、轉換函數可以簡單到只返回一個字元,卻又可以復雜到引用各種函數寫任何功能強大的函數體!
所以,單純學會這個函數的簡單用法不難,但要做到靈活運用,就需要在日後大量的實際案例中磨練。本文從幾個例子,先讓大家對這個函數有一個比較全面的認識。
例1、給某個列表中的數字都加上1(簡單的對應轉換)
= List.Transform({30,40,21,33},each _+1)
結果:{31,41,22,34}
說明:轉換函數中的下換線「_」表示輸入列表中的每一個(當前計算)元素
例2、生成一個帶10個元素的列表,每個元素的內容均為「A」(生成的內容可以和輸入列表完全沒有關系)
= List.Transform({1..10}, each"A")
結果:{A,A,A,A,A,A,A,A,A,A}
例3、將數字1~26轉換為字母「A」~「Z」
= List.Transform(
{1..26},
each Character.FromNumber(64+_)
)
上面3個例子,簡單體現了List.Transform函數將一個列表轉換成另一個列表的過程,但是,這僅僅是它的基本功能,實際上,List.Transform還給了你一個批量操作的機制,讓你可以批量操作各種內容!
例4、批量抓取A股全部頁面數據
首先回頭看一下《單頁A股實時信息抓取》操作時生成的代碼:

這個代碼里,實際上只需要將頁面進行批量輸入,就可以得到批量的頁面信息,我們先刪除其他步驟代碼,僅保留最關鍵的兩行代碼,然後套上List.Transform函數修改為自定義函數(並將兩行代碼連成一個完整語句)如下:

這樣,當我們在pg_lst參數中輸入頁碼列表時,所有頁碼會被List.Transform函數批量轉換為對應的頁面數據,如取第1~3頁數據:

結果如下:

得到了批量的數據,後續就可以轉換到表,然後進行後續的數據處理了(方法與《單頁篇》一致,不再贅述)。
現在,我們在回頭看《格式化表單數據按可配置映射表轉換匯總》的內容,看是否容易理解?

2. 急急急!!!!!VBA中用遞歸調用

Sub test()
n = 5
For i = 1 To n
sumtest = suntest + (-1) ^ i * i
Next i
MsgBox sumtest
End Sub

3. vba編程中for循環該怎麼用

Sub 試試()

Dim i% '聲明變數i為整數

For i = 2 to 50 Step 1

'中間寫你需要添加的命令,想做什麼事。

Next

End sub


提示:

一般情況下,會聲明變數為整數,不過也不一定,根據你的需要去聲明。

Step是步長,你可以理解為每次的步子邁多大,例如:

Step 1 是步長為1,循環時,i依次變化為2、3、4、5..............

Step 2 是步長為2,循環時,i依次變化為2、4、6、8..............

當步長預設時,默認步為1時,所以當步長為1時可以省略不用寫步長,可直接寫為

For i = 2 to 50

Next

步長也可為負數,即倒序循環,例如

For i = 50 to 2 Step -1

Next

4. VBA如何按條件多次循環

都沒看明白你想干什麼?
你不要說你打算實現的思路,你只說思路不說目的,當你的思路是錯的時候,別人根本就不明白你想把怎麼樣的原表變成什麼樣的目的表。你只說目的就好,思路讓答題者來說。
不要這么說:你比如這里的,看標題「按條件多次循環」?這個說法很籠統,看不明白什麼意思。再看具體的,每循環1152次就復制一次?這句也不明白你講的什麼,循環那麼多次是干什麼用的?VBA的每一次循環都可以做很多事情的了。會不會是你想每隔1152行復制一次?再看你的代碼,看半天也沒看明白....比如你這For循環的前11句都是賦值語句,給測試表的A2:K2填寫數據表中的內容,但是你是填寫了104800次,每一次的內容還不一樣,拿學校里的黑板來說,你拿粉筆寫了10萬多次,寫了又擦掉,擦了又寫上,最後黑板上只留最後一次寫的,前面10萬多次做的都是無意義的擦掉和寫上的動作,你累不累?
你要這么說:你的數據表是一個什麼樣的格式的表,你想復制那些數據表的內容到測試表的那些區域上。這只要這么一說,別人才能明白你想干什麼,才能幫你設計VBA代碼。

5. 如何用VBA編寫一個循環程序

你這個問題屬於優化問題的范疇。用lingo吧,那個寫這方面程序更專業。
給你個求解實例:
x+y<=5
2*x-y>=3
min z=x^2+y

Rows= 4 Vars= 3 No. integer vars= 0
Nonlinear rows= 1 Nonlinear vars= 1 Nonlinear constraints= 1
Nonzeros= 9 Constraint nonz= 7 Density=0.562
No. < : 1 No. =: 1 No. > : 1, Obj=MIN Single cols= 1

Feasible solution found at step: 3

Variable Value
X 2.161523
Y 1.323045
Z 5.995225

Row Slack or Surplus
1 1.515432
2 0.4323045E-06
3 -0.9344361E-06
可以再交流,或者你把參數具體化我幫你求解也可以。

6. Excel中,在vba中計算幾個循環,輸出結果

Sub xx()
For i = 1 To 10
m = 0
n = 1
Do Until n = 5
a = Application.WorksheetFunction.randbetween(1, 30)
b = Application.WorksheetFunction.randbetween(1, 100)
If a > b Then
n = n + 1
Else
n = Application.WorksheetFunction.Max(1, n - 1)
End If
m = m + 1
Loop
avm = (avm * (i - 1) + m) / i
Next i
MsgBox avm
End Sub

7. VBA高手解析這一段遞歸組合演算法看不懂

Subzuhe(x%,z%,sr$,ggAsByte)'x新加的數字序號,z原有的數字總和,sr算式,gg原有個數
Ifz+arr(x,1)=hAndgg=g-1Then'和與個數都符合
k=k+1
arr1(k,1)=sr&arr(x,1)&"="&h
ExitSub
EndIf
Ifx<UBound(arr)Andz<hThen'沒到最後一個數且和還不足
Ifz+arr(x,1)<hThen'和不足'本行疑似有誤,改為Ifgg<g-1Then應省時
zuhex+1,z+arr(x,1),sr&arr(x,1)&"+",gg+1'增加一個數
EndIf
zuhex+1,z,sr,gg'取下一個數
EndIf
EndSub

8. Excel 使用vba做實現遞歸

可以採取這種思路 1。表的名字用數字(日期,比如1號用 1 ),文檔用月,這樣是為了方便引用 2。每個表的第一行用於引用上一張表的匯總數據,第二行保留該表的匯總數據 3。
  先建立從1-31張空白表,保存,復製成1-12個月12個文檔,修改月初的表的引用和月末的引用 4。  備份這12個文檔(可能的話用於下一年) 優點:容易實現,簡單不復雜,不需要太多的技巧 缺點:繁瑣,每天1張表,還有許多引用,可能到年末的時候運行會很慢,(可以通過把引用上月的數據轉成數字而不是公式)

9. VBA excel 修改遞歸問題 循環遞歸造成內存溢出

內存溢出,只能修改演算法來解決。

10. vba中五種循環語句的區別

1、For ……Next 語句,適用於順序操作
例1.在立即窗口輸出1到100
For n=1 to 100 '從1到100 ,執行下行代碼
debug.Print n
next n
2、For……Each……Next語句,適用於集合的操作
例2.輸出指定單元格區域所有單元格的內容
For Each Cell in myRange '遍歷區域內的所有單元格
debug.Print Cell.Value
next Cell
3、Do While 條件 ……Loop 語句。
例3、在立即窗口輸出1到100
n=0
Do While n<=100'當n小於等於100時 ,執行下行代碼,否則退出
n=n 1
Debug.Print n
Loop
4、While 條件…… Wend 語句。
例4、在立即窗口輸出1到100
n=0
While n<=100'當n小於等於100時 ,執行下行代碼,否則退出
n=n 1
Debug.Print n
Wend
5、Do ……Loop Until 條件 語句。
例5、在立即窗口輸出1到100
n=0
Do '執行下行代碼
n=n 1
Debug.Print n
Loop Until n >100 『當n大於100時退出循環
6、Do ……Loop While 語句 ,鬼老的思維真是最詭異,把While放在Loop後面卻不是退出循環的條件,而是繼續執行循環的條件。真令漢語思維費解。
例6、在立即窗口輸出1到100
n=0
Do '執行下行代碼
n=n 1
Debug.Print n
Loop While n <=100 『當n小於等於100時 ,繼續執行循環。

閱讀全文

與vba遞歸演算法循環相關的資料

熱點內容
用什麼工具製作安卓應用 瀏覽:484
單片機數碼管的代碼 瀏覽:775
第一款安卓手機是什麼牌子 瀏覽:394
java非同步web 瀏覽:270
51單片機讀tf卡 瀏覽:936
linux下獲取文件 瀏覽:318
加密文件電腦顯示無屏幕截取許可權 瀏覽:352
虛榮安卓用什麼充值 瀏覽:750
阿里雲沒有伺服器如何備案 瀏覽:706
python用戶特性總結 瀏覽:730
華為門鑰匙加密卡怎麼辦 瀏覽:921
南京解壓車要帶什麼 瀏覽:567
天堂2編譯視頻教程 瀏覽:397
伺服器沒有進程怎麼辦 瀏覽:789
阿里雲發布新物種神龍雲伺服器 瀏覽:64
數據結構遞歸演算法統計二叉樹節點 瀏覽:672
ev3怎麼編程 瀏覽:706
gzip壓縮教程 瀏覽:353
解壓模擬例子 瀏覽:989
流媒體伺服器如何實現視頻轉發 瀏覽:62