返回列表 上一主題 發帖

[發問] 有關巨集中迴圈的問題...

[發問] 有關巨集中迴圈的問題...

我的問題:
(1) 跑出來為什麼會有空白列?(EX:我的D1=5,D2=7,此時若同時滿足D1跟D2時會多一行空排列,當條件設定三個且都滿足時,會多兩行空排列)
(2)最後一列無法被判斷,因此就算條件不符合還是會跑出來,有什麼解決方法嗎?
(3)迴圈很多,跑起來有點慢,有更快速的方法嗎?

附上程式碼:
  1. Sub Lottery()

  2.   Dim B1, B2, B3 As Integer
  3.   Dim BALL As Integer
  4.   Dim Row As Long
  5.   Dim i As Integer
  6.   
  7.   BALL = 49
  8.   Row = 1


  9.         For B1 = 1 To BALL - 2

  10.           For B2 = B1 + 1 To BALL - 1

  11.             For B3 = B2 + 1 To BALL
  12.                
  13.                 ActiveSheet.Cells(Row, 1).Value = B1
  14.                 ActiveSheet.Cells(Row, 2).Value = B2
  15.                 ActiveSheet.Cells(Row, 3).Value = B3
  16.                
  17.                 For i = 1 To 49
  18.                 If B1 = ActiveSheet.Cells(i, 4).Value _
  19.                 Or B2 = ActiveSheet.Cells(i, 4).Value _
  20.                 Or B3 = ActiveSheet.Cells(i, 4).Value Then Row = Row + 1
  21.                 Next i
  22.                

  23.             Next B3

  24.           Next B2

  25.         Next B1

  26. End Sub
複製代碼
附件:
text.rar (93.76 KB)

如果有說明不清楚的地方,再麻煩跟小弟說聲∼感激不盡XD

回復 2# oobird


感謝oobird ^^
修改完後執行速度差超多!想請問這是什麼原理改變他的運行速度呢?
另外,
  1.                 For i = 1 To 49

  2.                 If B1 = ActiveSheet.Cells(i, 4).Value _

  3.                 Or B2 = ActiveSheet.Cells(i, 4).Value _

  4.                 Or B3 = ActiveSheet.Cells(i, 4).Value Then Row = Row + 1

  5.                 Next i
複製代碼
我的判別式如果要加進去,該如何做修正?
這個判別式的目的:(篩選出我需要的數值)
Ex:
當我在D欄輸入:D1=3,D2=5,D3=7時,程式執行結果會是:
A1=1,B1=2,C1=3
A2=1,B2=2,C2=5
A3=1,B3=2,C3=7
.
.
.
A3244=7,B3244=48,C3244=49
也就是說我要如何在全部數值中,篩選出D欄中含有的數值?

再麻煩您了

TOP

回復 3# GBKEE


感謝GBKEE~我瞭解您的意思了∼
可是關於我的問題1,有什麼解決方案嗎?
我的判別式該如何做修正?

再麻煩您囉∼

TOP

回復 6# GBKEE


感謝GBKEE !!
所以是利用矩陣來當暫存,之後一次把資料寫入∼
這就是我要的結果^^

不過如果輸入的數值有可能到49個數值時,我剛試過把D1-D49全key進去可以跑出結果,不過針對這部份,有可能利用迴圈來完成嗎?

修改您的一部份程式如下:
  1.         P = Join(Array(.[D1].Text, .[D2].Text, .[D3].Text, .[D4].Text, .[D5].Text, .[D6].Text, .[D7].Text _
  2.        , .[D8].Text, .[D9].Text, .[D10].Text, .[D11].Text, .[D12].Text, .[D13].Text, .[D14].Text _
  3.        , .[D15].Text, .[D16].Text, .[D17].Text, .[D18].Text, .[D19].Text, .[D20].Text, .[D21].Text _
  4.        , .[D22].Text, .[D23].Text, .[D24].Text, .[D25].Text, .[D26].Text, .[D27].Text, .[D28].Text _
  5.        , .[D29].Text, .[D30].Text, .[D31].Text, .[D32].Text, .[D33].Text, .[D34].Text, .[D35].Text _
  6.        , .[D36].Text, .[D37].Text, .[D38].Text, .[D39].Text, .[D40].Text, .[D41].Text, .[D42].Text _
  7.        , .[D43].Text, .[D44].Text, .[D45].Text, .[D46].Text, .[D47].Text, .[D48].Text, [D49].Text), ",")
複製代碼
再麻煩您囉^^"

TOP

回復 8# GBKEE


原來如此∼感謝您!!:lol

TOP

        靜思自在 : 待人退一步,愛人寬一寸,就會活得很快樂。
返回列表 上一主題