2015-09-04 1 views
1

Tous,vba: itérer une gamme et la mise à jour une autre gamme d'une cellule à la fois

Dans la feuille 1, colonne AI a la liste suivante de n nombre

12 
250 
1600 
100 
2000 
: 
: 
34 

J'ai une table qui peut être intégré dans le code

Min Max Grade 
0 100 A 
100 200 B 
300 500 C 
: 
: 
1000 2000 H 
2000 5000 L 
5000+  M 

dans la feuille 2, colonne A, je veux n grades correspondant aux nombres dans la feuille 1 à apparaître, en fonction de la table de consultation. Je voudrais le faire en utilisant VBA seulement et pas des formules excel. Comment puis-je le faire? Merci de votre aide!

+0

Où se trouve la table de correspondance? – MatthewD

+0

Il peut être intégré dans le code VBA en tant que logique "if then else" ou "select case". – Zenvega

Répondre

1

Vous pouvez le faire comme ça.

Private Sub CommandButton1_Click() 

    Dim ws1 As Excel.Worksheet 
    Dim ws2 As Excel.Worksheet 

    Set ws1 = ActiveWorkbook.Sheets("Sheet1") 
    Set ws2 = ActiveWorkbook.Sheets("Sheet2") 

    Dim lRow As Long 
    Dim score As Integer 
    Dim strGrade As String 

    lRow = 1 

    ws1.Activate 
    'Loop through the rows getting the letter grade for the score. 
    Do While lRow <= ws1.UsedRange.Rows.count 

     'Get the score 
     If ws1.Range("A" & lRow).Value = "" Then 
      score = -1 
     Else 
      score = ws1.Range("A" & lRow).Value 
     End If 

     'Get the grade for the score 
     Select Case score 
     Case 0 To 100 
      strGrade = "A" 
     Case 100 To 200 
      strGrade = "B" 
     Case 300 To 500 
      strGrade = "C" 
     Case 1000 To 2000 
      strGrade = "H" 
     Case 2000 To 5000 
      strGrade = "L" 
     Case Is > 5000 
      strGrade = "M" 
     Case Else 
      strGrade = "?" 
     End Select 

     'Write the grade to sheet 2 
     ws2.Range("A" & lRow).Value = strGrade 

     lRow = lRow + 1 
    Loop 

End Sub 
+0

Cela a fonctionné. Merci, Matthew! – Zenvega