2017-01-11 4 views
-1

Ich bin ein Lehrer und versuche, ein Mark Blatt zu erstellen, das Problem, das ich habe, ist, dass Zuweisungen mit verschiedenen Schemata (zB% [1 - 100], Level [1 -4], Brief Grad markiert) [F - A]). Das Problem, das ich habe, ist, dass ich nur unter Verwendung eines Markierungsschemas berichten möchte und die anderen Markierungsschemata basierend auf dem Schema, in dem es markiert ist, umwandeln oder berechnen muss.Excel - Multiple Cell Berechnung

Ich habe ein Excel-Arbeitsblatt gemacht, das einen Schülernamen und Zuweisungen enthält. Das Blatt hat dann 3 andere Spalten, von denen die eine jedes Schema "Buchstabe", "Ebene", Prozent eine Spalte für jedes Schema darstellt. Jetzt wird zu jeder Zeit ein Wert in einer der "Schema" -Spalten sein - ich brauche Excel, um automatisch oder durch Makro den geeigneten Wert in die anderen Zellen zu berechnen.

Zum Beispiel gibt es drei Zuweisungen, die jeweils mit einem anderen Schema auf demselben Blatt markiert sind.

Assignment 1 - % 
Assignment 2 - Level 
Assignment 3 - Letter Grade 

Wie kann ich Excel überprüfen, welche Marke Wert vorhanden ist und dann die beiden anderen die entsprechenden Werte bevölkern/berechnen.

Mike hat 80% (%) auf Aufgabe 1, aber ich möchte Excel füllen die Ebene Spalte und Brief Spalte mit den entsprechenden Werten gleichzeitig Level 3 auf Aufgabe 2 Excel, um entsprechende Prozent und Buchstaben zu berechnen und bei der Gleichzeitig für einen Buchstaben A in Aufgabe 3 sollte der entsprechende% und Level berechnet werden.

Ich weiß nicht, ob das möglich ist oder Sinn ergibt, aber ich habe versucht SVERWEIS und war nicht erfolgreich, weil ich alles manuell tun muss - ich ziele auf einen automatisierten Prozess.

Tut mir leid, wenn es nicht klar oder verwirrend ist ... aber ich bin seit zwei Tagen ohne Glück dabei und nicht einmal sicher, ob das, was ich mache, möglich ist.

Antwort

0

natürlich sollte zunächst bewertet werden die Übersetzung eines Rating-System zum anderen und dann diese Algorithmen annehmen zwischen Ratingklassen Typen

eine der möglichen Ansätze verschieben könnten folgende sein:

Option Explicit 

Sub main() 
    Dim grades As Variant, levels As Variant 
    Dim cell As Range 
    Dim index As Double 

    grades = Array("F", "E", "D", "C", "B", "A") 
    levels = Array(1, 2, 3, 4) 

    For Each cell In Intersect(Range("A:C"), ActiveSheet.UsedRange).Offset(1).SpecialCells(xlCellTypeConstants) 
     Select Case cell.Column 
      Case 1 '% 
       index = cell.value/100 
       cell.Offset(, 1).value = GetRate(index, levels) 
       cell.Offset(, 2).value = GetRate(index, grades) 
      Case 2 ' Level 
       index = InStr(Join(levels, ""), cell.value)/Len(Join(levels, "")) 
       cell.Offset(, -1).value = index * 100 
       cell.Offset(, 1).value = GetRate(index, grades) 
      Case 3 
       index = InStr(Join(grades, ""), cell.value)/Len(Join(grades, "")) 
       cell.Offset(, -2).value = index * 100 
       cell.Offset(, -1).value = GetRate(index, levels) 
     End Select 
    Next 
End Sub 

Function GetRate(index As Double, rates As Variant) 
    GetRate = rates(WorksheetFunction.Max(Round(index * (UBound(rates) - LBound(rates) + 1), 0) - 1, 0)) 
End Function 

aufgrund der Einfachheit des Übersetzungsalgorithmus macht es keinen bijektive Beziehung zwischen Sortiersysteme mit unterschiedlichen Spannweiten bieten, aber es kann Sie näher an Ihr Ziel bekommen

+0

[hier] (http://stackoverflow.com/questions/41612730/why-variable-is-not-accessed-inside-a-case-statement-in-excel-vba/41613112#41613112) Sie können nehmen Inspiration für "Übersetzungsalgorithmen" – user3598756

+0

Vielen Dank für die Richtung, ich werde versuchen zu sehen, was ich mir vorstellen kann. – Syngh

+0

Sie sind willkommen – user3598756

0

Erstellen Sie eine Tabelle wie diese (Sie können weitere Zeilen hinzufügen, wenn Sie +/- Werte wie "B +" usw. definieren müssen). Der Schlüssel hier ist Sortieren der Tabelle aufsteigend von%, wobei jede Zeile der Minimum Score für die entsprechende Level/Letter Note benötigt wird.

enter image description here

Dann können Sie VLOOKUP Formel gegen diese Tabelle verwenden, wie so das Niveau zu erhalten:

=VLOOKUP(F2,$A$1:$C$7,2,TRUE) 

Und wie so den Brief Grade zu erhalten:

=VLOOKUP(F2,$A$1:$C$7,3,TRUE) 

enter image description here

Dies geschieht adva ntage des True Parameter in der VLOOKUP Funktion, die eine ungefähre Übereinstimmung zurückkehren wird (und nimmt Daten aufsteigend sortiert). Also, wenn Sie einen Wert wie „81%“ eingeben, gibt es die nächste Zeile, die ist nicht größer als 81%, so dass es Ebenso 5. Daten aus Zeile zurück, 12% kehrt Daten aus Zeile 2, 75% von Zeile 4 usw.

Und Ihre Ergebnisse:

enter image description here

Sie müssen möglicherweise zwei Tabellen verwenden, wenn Sie können nicht 1: 1 Karte der Stufe/Letter Grade auf eine Reihe Prozent , aber die Idee wäre dieselbe.

+0

Vielen Dank für die Antwort, ich suche weiterhin nach Antworten auf Google und versuche verschiedene Dinge. Ich weiß, dass es einen Weg gibt, dies in Excel zu tun, und bin entschlossen, es zu ermöglichen. Irgendwann denke ich, dass dies die Route einer Zugangsdatenbank sein kann, aber ich möchte die Dinge für den Moment einfach halten, da meine Programmierkenntnisse nicht die größten sind. – Syngh

+0

@Syngh funktioniert der obige Ansatz * nicht funktionieren * für Sie? Wenn nicht, können Sie bitte Ihre ursprüngliche Frage mit neuen/relevanten Informationen überarbeiten? Das sollte funktionieren und erfordert * keine * VBA-Programmierung ... –

+0

danke für den Code David, mein erstes Problem, das ich versuche zu lösen, ist dies (und es tut mir wieder leid, wenn ich es nicht artikuliere sehr gut). Ich brauche Excel, um Zellen in 3 verschiedenen Spalten automatisch zu betrachten - sobald es eine Markierung in einer dieser Zellen sieht, muss ich den entsprechenden Wert automatisch in die anderen beiden Zellen eintragen. VLookup funktioniert, aber ich muss die Formel in die richtigen Zeilen einfügen, ich hoffe, es auf einer höheren Ebene zu tun, wo ich den VLookup nicht als fx in der Zelle brauche und nur ein Skript ausführen lassen muss Ergebnisse. – Syngh