Seite 1 von 1

Buchstaben Zahlen zuordnen

Verfasst: Fr, 03.12.2010 21:13
von erikafuchs
Hallo Ihr Lieben.
wie man Zahlen Buchstaben zuordnet weiß ich. Wie aber macht man das umgekehrt? Ich habe etwa 650 Schüler mit je 11 bis 16 Fächern in einer Tabelle, macht etwa 7000 Zeilen. Die Fächer haben, je nach Jahrgang im Zeugnis, eine andere Reihenfolge. Für den Jahrgang 5 habe ich zB.: ein Array5(D, M, E, MU, GL) fü den Jahrgang 9 das Array9:(D, M, E, PH, CH, W1). Jetzt muss ich den Fächern (D, M, E, MU, GL, PH, CH, W1) je nach Jahrgang eine andere Reihenfolge, also verschiedene Zahlen zuordnen. Ich habe mir nicht anders zu helfen gewusst, als eine select Abfrage einzusetzen:

Code: Alles auswählen

select case n
    case  Array(1)
          m=1
    case Array(2)
          m=2
.....
end select
das erscheint mir unelegant und langsam (bei 7000 Zeile und etwa 15 Fächern). Hat jemand eine bessere Idee wie man Buchstaben Zahlen zuordnen kann?
Grüße
Pit

Re: Buchstaben Zahlen zuordnen

Verfasst: Sa, 04.12.2010 08:48
von turtle47
Hi Pit,
erikafuchs hat geschrieben:Hat jemand eine bessere Idee wie man Buchstaben Zahlen zuordnen kann?
vielleicht so:

Code: Alles auswählen

Sub Main
Const D = 3
Const M = 7
Const E = 5
Const MU = 9
Const GL = 4
Const PH = 6
Const CH = 4
Const W1 = 8
	aConst = ARRAY(D,M,E,MU,GL,PH,CH,W1)
		for i = lBound(aConst) to uBound(aConst)
			iValue = aConst(i)
			Print iValue
		next
End Sub
Die Schleife ist nur zur Verdeutlichung eingebaut. :wink:

Viel Erfolg.

Jürgen

Re: Buchstaben Zahlen zuordnen

Verfasst: Sa, 04.12.2010 12:16
von erikafuchs
Lieber Jürgen,
das sieht doch gut aus, das werde ich ausprobieren.
Vielen Dank
Pit

Re: Buchstaben Zahlen zuordnen

Verfasst: So, 05.12.2010 17:42
von erikafuchs
Lieber Jürgen oder wer auch immer mit dem Befehl "const" umgehen kann,

ich würde ja die Zuordnungen gerne aus einem Tabellenblatt auslesen. Dadurch könnte auch jemand, ohne das Makro ändern zu müssen, die Reihenfolge ändern: Auf dem Tabellenblatt "Zuo" stehen in der Spalte 3 die Buchstaben für die Fächer und in der Spalte 5 die Zahlen für die Reihenfolge im 5. Schuljahr, in der Spalte 6 für das 6. Schuljahr.... Jetzt lese ich die Daten in ein Array:

Code: Alles auswählen

   for n=1 to 15
      TitelArray(zuoSheet.getCellByPosition(5,n).value)=zuoSheet.getCellByPosition(3,n).string   
   next
und dann lege ich die Zuordnungen fest:

Code: Alles auswählen

   for n=1 to 15
      const TitelArray(n) = n
   next  
...na ja, wäre schön gewesen, wenn das so klappen würde...
Vielen Dank für Euer Interesse
Pit

Re: Buchstaben Zahlen zuordnen

Verfasst: So, 05.12.2010 20:23
von turtle47
Hallo Pit,
erikafuchs hat geschrieben:wer auch immer mit dem Befehl "const" umgehen kann,
"Const" ist eine Konstante in einem Programm, welche im Gegensatz zu einer Variablen nicht mehr verändert werden kann.
erikafuchs hat geschrieben:und dann lege ich die Zuordnungen fest:

Code: Alles auswählen
for n=1 to 15
const TitelArray(n) = n
next
Ha, dass hatte ich auch mal versucht und musste mich da eines besseren belehren lassen.
Man kann meines Wissens nach in einem Programm keine neuen Namen für Variablen erzeugen.

Jürgen

Re: Buchstaben Zahlen zuordnen

Verfasst: So, 05.12.2010 21:17
von erikafuchs
Lieber Jürgen
das hatte ich befürchtet. Da aber jeder Jahrgang eine andere Zuordnung benötigt muss ich wohl bei meiner ersten Version bleiben. Trotzdem vielen Dank.
pit

Re: Buchstaben Zahlen zuordnen

Verfasst: So, 05.12.2010 21:47
von Stephan
Man kann meines Wissens nach in einem Programm keine neuen Namen für Variablen erzeugen.
Richtig.
Man kann aber notfalls mit dem Programm zur Laufzeit den Code für eine neue Sub bzw. Modul erzeugen, die dann auch KOnstantenzuweisungen beinhalte kann und anschließend die neu erzeugte Sub starten.

Wie das ERzeugen geht steht hier:
http://www.dannenhoefer.de/faqstarbasic ... chen..html

und was ich oben vorschlage habe ich hier im Forum glaube ich bereits einmal als Beispiel gepostet.


Der Inhalt des Threads hier erschließt sich mir hingegen nicht so ganz, denn:

Code: Alles auswählen

select case n
    case  Array(1)
          m=1
    case Array(2)
          m=2
.....
end select
geht natürlich grundsätzlich auch angelehnt an:

Code: Alles auswählen

For i = 0 To UBOUND(Array1())
   If Aray1(i) = n Then
      m = Array2(i)
      Exit For
   End If 
Next i
falls es nur um das geht was wirklich im Code steht und Array1() die mit n zu vergleichenden Werte enthält und und Array2(), das analog aufgebaut sein muß, die Wertze die m zugewiesen werden sollen.



Gruß
Stephan