IF nidificate in Excel [Sopra i 7 limite consentito]

Sto cercando di creare un foglio di calcolo che automagicamente dà un grado ad un studente, basato sui risultati hanno ottenuto.

Ho a quanto pare ha colpito di Excel SE nidificata limite che è 7.

Ecco la mia istruzione if:

=IF(O5>0.895,"A+",IF(O5>0.845,"A",IF(O5>0.795,"A-",IF(O5>0.745,"B+",IF(O5>0.695,"B",IF(O5>0.645,"B-",IF(O5>0.595,"C+",IF(O5>0.545,"C","D"))))))))

Ho letto online che ho potuto creare uno script VBA e assegnarlo, ma non so nulla di VBA….quindi, se qualcuno potrebbe aiutarmi a scrivere una VBA per questo, sarebbe fantastico.

Ancora mancante la C – grado e nulla inferiore, deve essere assegnato un marchio D.

Questo è lo schema di classificazione sto cercando di creare…:

Un+ 89.500 – 100.000 Pass with Distinction

Un 84.500 – 89.490 Pass with Distinction

A – 79.500 – 84.490 Pass with Distinction

B+ 74.500 – 79.490 Pass with Merit

B 69.500 – 74.490 Pass with Merit

B – 64.500 – 69.490 Pass with Merit

C+ 59.500 – 64.490 Passare

C 54.500 – 59.490 Passare

C – 49.500 – 54.490 Passare

D 0.000 – 49.490 Specificato Non Riuscire

Non mi dispiacerebbe andare giù per la VBA percorso, però la mia comprensione del linguaggio VB è assolutamente trascurabile (non mi piace)…se questo diventa troppo noioso, stavo pensando di creare una piccola php/mysql applicazione, invece.

  • Qual e ‘ il grado fa qualcuno che ha ottenuto un 89.495 ottenere? E ‘ meglio specificare i limiti inferiori di intervalli in questo caso.
InformationsquelleAutor Alks | 2010-03-17

 

5 Replies
  1. 21

    Si può fare questo molto più elegantemente con il VLOOKUP formula da separati tabella di mapping per il limite inferiore per le lettere. La tabella di mapping deve essere ordinati in base alla qualità numero crescente.

    Per esempio:

    Tabella

    B 
    0 D 
    49.5 C- 
    54 C 
    Il 59,5 C+ 
    ... ... 
    

    Formula:

    =VLOOKUP(SomeCell, $A$1:$B$9, 2, TRUE)

    Dove $A$1:$B$9 è la gamma con il grado di tabella. (Il $ segni di dire a Excel di non spostare il riferimento se si copia la formula).

    Passando TRUE come ultimo argomento sarà causa di Excel per fare una ricerca binaria per trovare il valore, il quale (come i dati vengono ordinati) è esattamente ciò che si vuole fare.

    • In realtà ho testato questo. Funziona.
    • Ho provato anche questo… funziona davvero bene 🙂 grazie per questo. Stavo pensando vlookup tuttavia è fuori di testa di me e fuori in modo che non si è preoccupato di :P. Grazie cumuli.
    • Quindi si deve accettare questa risposta, cliccando il cavo di controllo.
    • questa è la risposta giusta – è necessario fare clic sul segno di spunta per indicare che si accetta la risposta.
  2. 1

    Andare a Visual Basic Editor e inserire questo codice. Non so quale versione di Excel che si sta utilizzando, ma per le versioni prima del 2007, vai su strumenti, Macro, Visual Basic Editor. Per la Versione 2007 e versioni più recenti , è sulla Scheda Sviluppo che non è abilitata per impostazione predefinita.

    A seconda di come si desidera che il collegamento, è possibile aggiungere un pulsante alla pagina o chiamare dal Worksheet_Calculate evento.

    Questo si presuppone che lo studente totale di grado nella cella A2, e mettere i risultati in A2 e B2.

    Sub Calculate
        dim LetterGrade as string
        dim Superlative as string
        Select Case Cells(1,2)
            Case  >= 89.500
                LetterGrade="A+"
                Superlative ="Pass with Distinction"
    
            Case  84.500 to 89.490 
                LetterGrade="A"
                Superlative ="Pass with Distinction"
    
            Case 79.500 to 84.490 
                LetterGrade="A-"
                Superlative ="Pass with Distinction"
    
            Case  74.500 to 79.490 
                LetterGrade="B+"
                Superlative ="Pass with Merit"
    
            Case 69.500 to 74.490
                LetterGrade="B"
                Superlative ="Pass with Merit"
    
            Case 64.500 to 69.490 
                LetterGrade="B-"
                Superlative ="Pass with Merit"
    
           case 59.500 to 64.490 
                LetterGrade="C+"
                Superlative ="Pass"
    
            Case 54.500 to 59.490
                LetterGrade="C"
                Superlative ="Pass"
    
            Case 49.500 to 54.490
                LetterGrade="C-"
                Superlative ="Pass"
            Case <=  49.490 
                LetterGrade="F"
                Superlative ="Specified Fail"
    
     End Select
            Cells(2, 1) = LetterGrade
            Cells(2, 2) = Superlative
    
    
    End Sub
  3. 0

    Una soluzione semplice sarebbe semplicemente dividere la formula in due cellule

    =IF(O5>0.895,"A+",IF(O5>0.845,"A",IF(O5>0.795,"A-",<Other cell ref here>)))

    Altri cell:

    =IF(O5>0.745,"B+",IF(O5>0.695,"B",IF(O5>0.645,"B-",IF(O5>0.595,"C+",IF(O5>0.545,"C","D")))))
    • hmmm, che sarebbe bello…ma mi piacerebbe che tutti in una cella…ma devo dire, io non la penso così :).
    • Idea intelligente, ma si vuole nascondere cellule e ricordare perché sono nascosti, e di non essere in grado di copiare e incollare facilmente…
  4. 0

    Mentre io preferisco il Vlookup metodo (Slaks soluzione) per i parametri numerici per la semplicità e l’eleganza, un’alternativa che diventa prezioso in caso di mancato parametri numerici è concatenato IFs.

    =IF( Case1 , "Label 1", "" ) & 
     IF( Case2 , "Label 2", "" ) & 
     IF( Case3 , "Label 3", "" ) & 

    ….. e così via

    Per esempio, in questo caso:

    = IF( O5 >= 89.5 , "A+" , "" ) & 
      If( AND ( O5 < 89.5 , O5 >= 84.5 ) , "A" , "" ) & 
      If( AND ( O5 < 84.5 , O5 >= 79.5 ) , "B+" , "" ) &

    ….. e così via per gli altri livelli.

  5. -1

    VLOOKUP soluzione sembra la migliore. Per aggiungere uno script VBA, si potrebbe portare la Barra degli strumenti Visual Basic, aggiungere un controllo come un Pulsante e quindi fare doppio clic su di esso. Il codice per l’evento si apre nel VBA di Excel ambiente. Ci si potrebbe aggiungere il codice in VB, forse qualcosa di simile a questo.

    Private Sub CommandButton1_Click()
      Cells(1, 2) = getValue(Cells(1, 1))
    End Sub
    
    
    Private Function getValue(ByVal argMarks As Double)
      If argMarks > 89.5 And argMarks <= 100 Then
        getValue = "A+"
      If argMarks > 84.5 And argMarks <= 89.49 Then
        getValue = "A"
    
      .
      .
      and so on...
    
    End Function
    • Questo non compilare come il codice VBA.

Lascia un commento