1+2+3+4+・・・1000万の計算スピードと正確さ
動画で使用したVBAがこちらです。
Option Explicit
Public Sub 連番合計_処理時間測定()
Dim ws As Worksheet
Dim startNum As Long
Dim endNum As Long
Dim i As Long
Dim total As Currency
Dim t0 As Double
Dim elapsed As Double
Set ws = ActiveSheet
'--- 入力チェック
If Not IsNumeric(ws.Range("C4").Value) Or Not IsNumeric(ws.Range("D4").Value) Then
MsgBox "C4とD4には数値を入力してください。", vbExclamation
Exit Sub
End If
startNum = CLng(ws.Range("C4").Value)
endNum = CLng(ws.Range("D4").Value)
If startNum > endNum Then
MsgBox "C4の開始値は、D4の終了値以下にしてください。", vbExclamation
Exit Sub
End If
'--- 結果欄を初期化
ws.Range("E4:F4").ClearContents
'--- 時間測定開始
t0 = Timer
'--- ここで本当に1つずつ足す
total = 0
For i = startNum To endNum
total = total + i
Next i
'--- 経過時間
elapsed = Timer - t0
'--- 日付をまたいだ場合の保険
If elapsed < 0 Then elapsed = elapsed + 86400
'--- 結果を書き出し
ws.Range("E4").Value = total
ws.Range("E4").NumberFormat = "#,##0"
ws.Range("F4").Value = elapsed
ws.Range("F4").NumberFormat = "0.000000"
MsgBox "計算が完了しました。" & vbCrLf & _
"答え:" & Format(total, "#,##0") & vbCrLf & _
"処理時間:" & Format(elapsed, "0.000000") & " 秒", vbInformation
End Sub
‘— ここで本当に1つずつ足す
total = 0
For i = startNum To endNum
total = total + i
Next i
これが「要」です。たったこの4行の中で1000万回計算したわけです。
よって、この動画においてはガウスに勝るとも劣らない結果なのでPCの勝ちにしときましょうよ。
お好きなシートのC4、D4セルに数値を入れて実行したら計算してくれるmacroですが、大して役に立ちません。
とにかく、PCの計算(演算)能力を証明出来て良かったのですが・・・・
実は、これには続編があります。(次回は少しは役に立つはず)

