個位與十位之和除以10得到的餘數等於其百位數的VBA算法實例

2021-01-07 VBA語言專家

有讀者反饋一個問題:如何用VBA求出1000以內個位數與十位數之和,除以10,所得餘數剛好等於其百位數的數字。這道題看似很費解,但如果利用了VBA真的不是問題了,今日來詳細的講解一下。

先上代碼:

Sub kk()

2 Sheets("sheet4").Select

3 n = 1

4 For t = 100 To 1000

5 yy = (--Right(t, 1)) + (--Left(Right(t, 2), 1))

6 If yy Mod 10 = (--Left(Right(t, 3), 1)) Then

7 Cells(n, 1) = t

8 n = n + 1

9 End If

10 Next

11 End Sub

代碼講解:

第一:上面是一個簡單的VBA程序,此程序命名為kk,操作是在sheet4工作表中進行。

第二:首先選擇的是從100到1000的FOR ,NEXT的循環,用來依次產生100到1000的數字,因為涉及到百位數字,所以兩位數字不再考慮。這裡利用了FOR,NEXT,它是一個循環語句,格式是FOR後跟變量,同時用等號賦值變量的起始和終止數字。有時候要跟上步長step,即每次增長的幅度,默認為1.當語句運行到NEXT後,變量會自動增加步長值,判斷是否到了最大值,如果沒有到最大值,指針回調到FOR語句後的循環體語句,再次執行,如果超過了最大值就退出循環。

第三:取出個位和百位數,用的語句分別是--Right(t, 1)和 --Left(Right(t, 2), 1),它們前面的「--」是減負運算,關於減負運算的知識我在之前的文章中講過,這裡不再講了,有不清楚的可以去查查我之前的文章,把這個知識點補上。這裡利用LEFT和right函數,就是左截取函數和右截取函數的組合,來實現提取出十位數的數值。注意因為LEFT函數和RIGHT函數是字符串截取函數,出來的數值也是字符串的格式。最後用變量yy來存儲上面兩個數值的和。

第四:求餘數運算,在VBA中求餘數的運算也是MOD,MOD函數是一個求餘函數,其格式為: mod(nExp1,nExp2),即是兩個數值表達式作除法運算後的餘數。特別注意:在EXCEL中,MOD函數是用於返回兩數相除的餘數,返回結果的符號與除數(divisor)的符號相同。yy與10的餘數就是yy MOD 10 .百位數就是--Left(Right(t, 3), 1),兩者是否相等,要進行判斷。

第五:如果相等,那麼第N行的第1個單元格的VALUE就等於這個數值,同時要把要填充的單元格n的指針向下調1,來存儲下一個將產生的數。這裡的變量N其實就是一個行數的變量,當有值填充時就向下調指針,

好了看看代碼的截圖:

在sheet4的工作表中,畫個按鈕,連接上上述代碼,點擊按鈕,運行宏,就會得到結果,看下面的結果截圖:

好了,所有的結果已經出來了,一共有91個數字符合要求。

今日VBA內容技巧提升:

其一:減負運算的目的和使用方法,不清楚的趕快去查啊。

其二:如何用LEFT().RIGHT(),組合,求一個數的十位和百位數字,

其三:VBA中的FOR,NEXT語的作用是什麼,如何使用。

其四:文章中的代碼公布中第一行為什麼沒有行號?

如果上述四個問題都清楚了,好OK,你可以順利的過關了,如果還有個別的知識點不是很清楚,要跟緊我的進度。努力啊。

分享成果,隨喜正能量

相關焦點

  • 這個超大的100位整數除以7,餘數是多少?怎麼求?
    如果有人問:一個自然數除以另外一個正整數,餘數是多少,你會怎樣求呢?相信大多數人會說,我們直接用除法算式,把它算出來不就得了嗎?比如說23除以5它的餘數是多少?比如說下圖中的這個100位自然數,而且每一位數上的數字都是8,求這個數除以7的餘數是多少?如果說一個整數,在數位比較少的時候可以死算的話,那麼這題連死算的機會都沒有。這張圖片來自網絡,圖中的題目屬於奧數題,有人說這題也太變態了,讓人看了就出一頭的冷汗。
  • 大樂透前區數,如何用除以5的餘數選擇、判斷哪些數字會空出
    對於喜歡大樂透遊戲的朋友來說,可能常用的方法,是將前區的35個數字按除以3的餘數歸類,而忽視了將前區35個數字按除以5的餘數分類,其實按除以5的餘數分類後,有幾個好處,一是可根據每期前區開出數字按除以5分類看有幾組,二是有利於殺組,觀察空出哪些組數。今天就聊聊前區數字按除以5分類的作用及如何判斷。
  • Cortex―M0單片機二-十進位整數轉換的快速算法
    2 快速算法概述 本快速算法採用除十求餘數法來實現。設需要轉換的數據也就是被除數為W,除數為10,整數除法的商為S,除法運算的餘數為R,根據數學運算規則有: S=W/10 (1) R=W-S×10=W-(W/10)×10 (2) 經過上述的運算,所得餘數R就是從被除數中分離出來的個位數字,也就是首先得到了被除數的最低位的BCD碼。
  • 以SSQ數據例:如何製作除以12到33的餘數最大值圖,方便組號用
    輸入X軸Y軸的名稱 圖2第五步:生成除以12的餘數最大值圖,按圖中的說明照做。圖中除以12的餘數最大值代表的數字說明如下(請看最下面的圖4中的說明):11代表11、23有最少1個。在圖上顯示最大值圖3第六步:根據除以N(N可以為9-33你可任意選擇做成圖)的最大值走勢判斷範圍一般如何判斷最大值的範圍:當有一定期數內形成"V"、"U"、"M"等字母的形狀時,找能形成這樣結構的對稱範圍點
  • 小學數學~說課~《除數是兩位數的除法》
    在算法探索、分析比較環節中,在學生獨立思考的基礎上,小組合作討論:把除數看作哪個數試商? 學生在討論中交流各自的想法,掌握靈活試商的方法,從而達到算法多樣化和優化的目的,並在後面的練習中進行實踐應用。因為根據除法的計算法則,除到被除數的哪一位,就要對著那一位寫商;如果不夠商 1,就要在那一位上商 0,所以商的個位上就寫 0。b. 被除數十位上的商雖然是 3 已經沒有餘數了,但個位上的 0 除以 31 仍然得 0,所以商的個位應寫 0。c.
  • 公共基礎知識:天幹地支的算法
    天幹:甲4、乙5、丙6、丁7、戊8、己9、庚10、辛1、壬2、癸3地支:子4、醜5、寅6、卯7、辰8、巳9、午10、未11、申12、酉1、戌2、亥3以公元年的尾數在天幹中找出對應該尾數的天幹,再將公元紀年除以12,用除不盡的餘數在地支中查出對應該餘數的地支,這樣就得到了公元紀年的幹支紀年。
  • 梅花易數常見幾種起卦方
    第一,年月日時起卦法把年月日三數相加,得的和再除以八,餘數作上卦,若除盡餘數為零,則上卦為坤卦。年月日時四數之和除以八,餘數為下卦,若除盡,下卦也為坤卦。又以年月日時之總和除以六,餘數取動爻,餘幾為幾爻動。若除盡,則上爻為動爻。年是以地支為單位,如子年為1數,丑年為2數,寅年為3數,依次類推,亥年為12數。