Board logo

標題: 顯示數值不跳格 [打印本頁]

作者: fangsc    時間: 2020-10-13 13:24     標題: 顯示數值不跳格

請教, 要如何修改, 輸出的數值才不會跳格顯示.

Sub hw1()
'3-X間的質數.
n = Range("E1")
For i = 3 To n
    For j = 2 To n - 1
    p = i Mod j
    If p = 0 Then Exit For
Next j

Cells(j, "a").Value = j
Next i

End Sub

[attach]32609[/attach]
作者: jcchiang    時間: 2020-10-13 14:30

回復 1# fangsc

Sub hw1()

n = Range("E1")

For i = 3 To n
    For j = 2 To n - 1
    p = i Mod j
    If p = 0 Then Exit For
Next j
If [a1] = "" Then
   [a1] = j
Else
   Cells([a65535].End(3).Row + 1, "a").Value = j
End If
Next i
End Sub
作者: fangsc    時間: 2020-10-13 14:43

回復 2# jcchiang

謝謝你的回覆.
但是run 出來的數字很奇怪
a1: 3
a2: 2
a3: 5
a4: 2
a5: 7
a6: 2
a7: 3
a8: 2
a9: 11
.
.
.
作者: jcchiang    時間: 2020-10-13 15:05

回復 3# fangsc

妳原來的程式用j值當作欄位位置,所以值是亂跳,並不是往下欄位去擺放
EX:當i=3 j=3滿足,是cells(3,"a")=3
當i=4 j=2滿足,是cells(2,"a")=2
第一筆放在第二筆下面
作者: 准提部林    時間: 2020-10-13 15:22

Sub TEST_1()
n = Range("E1")
For i = 3 To n Step 2  '可減一半的迴圈
    For j = 2 To n - 1
        P = i Mod j
        If P = 0 And i <> j Then Exit For
    Next j
    If P > 0 Then r = r + 1: Cells(r, 1) = i
Next i
End Sub

找質數的, 可google, 有更多效能較好的方式
作者: 准提部林    時間: 2020-10-13 15:29

或試試:
Sub TEST_1()
n = Range("E1")
For i = 3 To n Step 2
    For j = 2 To Int(Sqr(i)) + 1
        P = i Mod j
        If P = 0 Then Exit For
    Next j
    If P > 0 Then r = r + 1: Cells(r, 1) = i
Next i
End Sub
作者: fangsc    時間: 2020-10-13 16:13

感謝大家的指導.
作者: fangsc    時間: 2020-10-14 13:41

回復 5# 准提部林
不好意思, 再次提問.
If P > 0 Then r = r + 1: Cells(r, 1) = i
    : 冒號 是何作用? 我有goole, 冒號是用來連接2程式碼, 以簡化程式
但是如果把這一行直接分成2行, 得出的結果是不同的.
如果不用冒號, 請問程式該如何寫?
作者: 准提部林    時間: 2020-10-14 14:36

回復 8# fangsc

If P > 0 Then r = r + 1: Cells(r, 1) = i

等同
If P > 0 Then
r = r + 1
Cells(r, 1) = i
END IF
作者: fangsc    時間: 2020-10-14 17:28

回復 9# 准提部林
謝謝你的指導.




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)