Board logo

標題: 有關迴圈寫法 [打印本頁]

作者: hero_lin    時間: 2011-6-7 18:10     標題: 有關迴圈寫法

各位高手好:
小弟是EXCEL初學者,公司有一個設計資料計算式會用FOR...... NEXT方式,條件如下:
Tank 內溫度(T1):                30                                               
灑水溫度(TW):                10                                               
灑水量(W)(L/SEC):                12                                               
for T=T1-2 to T1 Step 0.01                                                               
        X1=0.02273-(0.2275*10^-2)*T1+1,352*10^-4*T1^2-2.607*10^-6*T1^3+2.642*10^-8*T1^4                                                       
        IS1=0.24*T1+X1*(597.3+0.44*T1)                                                       
        X=0.02273-(0.2275*10^-2)*T+1,352*10^-4*T^2-2.607*10^-6*T^3+2.642*10^-8*T^4                                                       
        I=0.24*T+X*(597.3+0.44*T)                                                       
        VS1=0.632+1.55*10^-2*T1-3.385*10^-4*T1^2+3.85*10^-6*T1^3                                                       
        Y=V1/VS1*(IS1-I)-W*(T-TW)                                                       
        IF ABS(Y)<5 Then "顯示計算值"                                                       
NEXT T                                                               
計算值:        XXXXX
請教經過FOR NEXT後如何顯示值
我在此網站搜索過,但是初學者看不太懂是否可以依照上述條件,幫忙解決
感謝
作者: Hsieh    時間: 2011-6-7 19:09

V1是如何求得?
顯示方式是如何?用對話方塊?或是寫入工作表?
計算值又是甚麼?
程式設計必須從整體架構來思考
例如:那些常數要如何設計輸入?(室溫、灑水溫、灑水量)
計算過程中所有變數的變化是經由怎樣計算求得?
要的答案有哪些?顯示的方式為何?
作者: hero_lin    時間: 2011-6-8 08:57

回復 2# Hsieh

桶槽體積(V1):                450        (使用者輸入值)
Tank 內溫度(T1):                30        (使用者輸入值)
灑水溫度(TW):                5        (使用者輸入值)
灑水量(W)(L/SEC):                8.33        (使用者輸入值)
計算值(Y):                XXXXX        (經過下列計算後把數值顯示此欄位)
                       
for T=T1-2 to T1 Step 0.01                       
        X1=0.02273-(0.2275*10^-2)*T1+1,352*10^-4*T1^2-2.607*10^-6*T1^3+2.642*10^-8*T1^4               
        IS1=0.24*T1+X1*(597.3+0.44*T1)               
        X=0.02273-(0.2275*10^-2)*T+1,352*10^-4*T^2-2.607*10^-6*T^3+2.642*10^-8*T^4               
        I=0.24*T+X*(597.3+0.44*T)               
        VS1=0.632+1.55*10^-2*T1-3.385*10^-4*T1^2+3.85*10^-6*T1^3               
        Y=V1/VS1*(IS1-I)-W*(T-TW)               
        IF ABS(Y)<5 Then "計算值"               
NEXT T                       
很抱歉謝老師可能未寫清楚,主要是使用者輸入上方的數據,經由FOR...NEXT迴圈後把計算後的值顯示在該欄位上(XXXXX)
謝謝
作者: Hsieh    時間: 2011-6-8 10:14

回復 3# hero_lin
  1. Sub ex()
  2. V1 = InputBox("桶槽體積(V1): ", , 450)           '        (使用者輸入值)
  3. T1 = InputBox("Tank 內溫度(T1):", , 30)            '        (使用者輸入值)
  4. TW = InputBox("灑水溫度(TW): ", , 5)           '        (使用者輸入值)
  5. W = InputBox("灑水量(W)(L/SEC): ", , 8.33)           '        (使用者輸入值)
  6. '計算值 (y):                XXXXX (經過下列計算後把數值顯示此欄位)
  7.                         
  8. For T = T1 - 2 To T1 Step 0.01
  9.         X1 = 0.02273 - (0.2275 * 10 ^ -2) * T1 + 1352 * 10 ^ -4 * T1 ^ 2 - 2.607 * 10 ^ -6 * T1 ^ 3 + 2.642 * 10 ^ -8 * T1 ^ 4
  10.         IS1 = 0.24 * T1 + X1 * (597.3 + 0.44 * T1)
  11.         X = 0.02273 - (0.2275 * 10 ^ -2) * T + 1352 * 10 ^ -4 * T ^ 2 - 2.607 * 10 ^ -6 * T ^ 3 + 2.642 * 10 ^ -8 * T ^ 4
  12.         I = 0.24 * T + X * (597.3 + 0.44 * T)
  13.         VS1 = 0.632 + 1.55 * 10 ^ -2 * T1 - 3.385 * 10 ^ -4 * T1 ^ 2 + 3.85 * 10 ^ -6 * T1 ^ 3
  14.         y = V1 / VS1 * (IS1 - I) - W * (T - TW)
  15.         n = n + 1
  16.         Cells(n, 1) = y
  17. Next T

  18. End Sub
複製代碼

作者: hugh0620    時間: 2011-6-8 10:56

樓主~您的程式碼中有一行~ 覺得蠻奇怪的~
IF ABS(Y)<5 Then "計算值" <===是指最後Y值經過絕對值的轉換要<5,就秀出計算值,那如果>5是不是不要秀出計算值呢???
且看樓主的描述最後的計算值是不是只有一個值??
Hsieh大大的計算值是會將迴圈中所有的計算結果都帶出來唷~ 會有兩百筆數據~
作者: hero_lin    時間: 2011-6-8 12:09

是的,謝老師少一行判斷式IF ABS(Y)<5 Then "計算值,否則會有好幾筆資料,我們人工算過只會有一筆資料出現。
另外輸入數據的數據可以在EXCEL表格內讓同事填入。按一鍵後才計算顯示數據
小弟初學請幫忙感謝
作者: hugh0620    時間: 2011-6-8 13:53

本帖最後由 hugh0620 於 2011-6-8 13:57 編輯

樓主~ 你給的數據若執行Hsieh大大的程式碼+判斷式IF ABS(Y)<5 Then "計算值~
應該不會有值跑出來~ 因為運算出來的值都大於5
依Hsieh大大的程式碼修改成您需要的~

Private Sub CommandButton1_Click()

V1 = Range("B1")          '        (使用者輸入值)
T1 = Range("B2")          '        (使用者輸入值)
TW = Range("B3")          '        (使用者輸入值)
W = Range("B4")           '        (使用者輸入值)

'計算值 (y):                XXXXX (經過下列計算後把數值顯示此欄位)
                        
For T = T1 - 2 To T1 Step 0.01
        X1 = 0.02273 - (0.2275 * 10 ^ -2) * T1 + 1352 * 10 ^ -4 * T1 ^ 2 - 2.607 * 10 ^ -6 * T1 ^ 3 + 2.642 * 10 ^ -8 * T1 ^ 4
        IS1 = 0.24 * T1 + X1 * (597.3 + 0.44 * T1)
        X = 0.02273 - (0.2275 * 10 ^ -2) * T + 1352 * 10 ^ -4 * T ^ 2 - 2.607 * 10 ^ -6 * T ^ 3 + 2.642 * 10 ^ -8 * T ^ 4
        I = 0.24 * T + X * (597.3 + 0.44 * T)
        VS1 = 0.632 + 1.55 * 10 ^ -2 * T1 - 3.385 * 10 ^ -4 * T1 ^ 2 + 3.85 * 10 ^ -6 * T1 ^ 3
        Y = V1 / VS1 * (IS1 - I) - W * (T - TW)
        If VBA.Abs(Y) < 5 Then   '<--將每次運算的y值進行判斷,若符合後將值帶出,並離開程式
            Range("B5")  = Y
            Exit Sub
        End If

Next T
End Sub

[attach]6531[/attach]
作者: hero_lin    時間: 2011-6-9 15:05

感謝【Hubg0620】兄幫忙,因為我權限不夠無法下載是否可以MAIL給我。
郵件地址:[email protected]
感謝




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