返回列表 上一主題 發帖

顯示數值不跳格

顯示數值不跳格

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

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

活頁簿1.zip (11.08 KB)

活頁簿1.zip (11.08 KB)

活頁簿1.zip (11.08 KB)

活頁簿1.zip (11.08 KB)

活頁簿1.zip (11.08 KB)

fangac

回復 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

TOP

回復 2# jcchiang

謝謝你的回覆.
但是run 出來的數字很奇怪
a1: 3
a2: 2
a3: 5
a4: 2
a5: 7
a6: 2
a7: 3
a8: 2
a9: 11
.
.
.
fangac

TOP

回復 3# fangsc

妳原來的程式用j值當作欄位位置,所以值是亂跳,並不是往下欄位去擺放
EX:當i=3 j=3滿足,是cells(3,"a")=3
當i=4 j=2滿足,是cells(2,"a")=2
第一筆放在第二筆下面

TOP

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, 有更多效能較好的方式

TOP

或試試:
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

TOP

感謝大家的指導.
fangac

TOP

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

TOP

回復 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

TOP

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

TOP

        靜思自在 : 小事不做、大事難成。
返回列表 上一主題