2015-10-19 211 views
0

我期待循環訪問A列。
- 如果下一個數大於前一個數繼續(A:0,1,2,3 ..)。
- 直到下一個數字等於或小於(A:0,1,2,3,4,4 ..)。
- 如果數字小於(A:0,1,2,3,4,3 ..)。或相等,取最高#4減去最低#0,並將結果放在最高數字旁邊的B列中。
- 如果下一個數字與前一個數字相等,則減去並在欄B中放入答案0。
- 如果下一個數字低於前一個數字繼續。做到這一點,直到下一個數字等於或小於。
- 如果數字小於或等於,則取最高的#4減去最低的#0 ...VBA excel。通過條件循環

我不確定如果我很清楚,但我想循環可能適用於這種情況。或者,也許任何其他想法將不勝感激。提前致謝。

 A B 
1 0 
2 1 
3 2 
4 3 
5 4 4 
6 4 0 
7 3 
8 2 
9 1 
10 0 4 
11 1 
12 2 2 
13 2 0 
14 3 
15 4 2 
... ... 
+0

感謝清理我的問題。 –

回答

0

您可以使用字典...添加行號的鍵值,檢查位置...

Sub YourLoop() 

    Dim dic As Scripting.Dictionary 
    Set dic = New Scripting.Dictionary 

    Dim i As Integer 
    Dim n As Integer 

For i = 1 To Rows.Count 

    ''ColumnA values 
    dic.Add i, Cells(i, 1).Value 

Next i 


Dim k1 As Integer 
Dim k2 As Integer 
Dim k3 As Integer 
Dim k4 As Integer 

Dim v1 As Integer 
Dim v2 As Integer 
Dim v3 As Integer 
Dim v4 As Integer 
Dim v As Integer 

Dim c As Integer 
c = 1 

For Each key In dic.Keys 

    v = dic(key) 

    If c = 1 Then 
    ''do nothing 
    ElseIf c = 2 Then 
    k1 = key - 1 
    v1 = dic(k1) 

    If v <= v1 Then 

    End If 

    ElseIf c = 3 Then 
    k2 = key - 2 
    k1 = key - 1 

    v1 = dic(k1) 
    v2 = dic(k2) 


    ElseIf c >= 4 And c < dic.Count Then 

    k4 = key - 4 
    k3 = key - 3 
    k2 = key - 2 
    k1 = key - 1 

    v1 = dic(k1) 
    v2 = dic(k2) 
    v3 = dic(k3) 
    v4 = dic(k4) 

    ElseIf c = dic.Count Then 

    End If 

    c = c + 1 
Next 
+0

我收到一條消息「編譯錯誤:用戶定義...」,它不能識別scripting.dictionary。 –

+0

您必須添加引用來使用字典... '早期綁定:添加引用MS腳本運行時 –

+0

您必須添加引用來使用字典... 在VBA開發菜單>>工具>>添加引用>> Microsoft腳本運行時(選中此複選框以識別vb中的字典對象) –