Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
664to668
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
664to668
664to668
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Feld in der Mitte erweitern?

Feld in der Mitte erweitern?
14.09.2005 09:07:06
Philipp
Guten Morgen Excel-Gemeinde,
ich hätte da mal wieder ein Problem, für das ich eure Hilfe benötige:
Ich habe 2 Vektoren, die miteinander über den Index verknüft sind.
VektorA ist alphabetisch sortiert.
z.B.:
VektorA(0) = Angela
VektorA(1) = Guido
VektorA(2) = Joschka
VektorB(0) = Merkel
VektorB(1) = Westerwelle
VektorB(2) = Fischer
Nun möchte ich VektorA erweitern und neu (alpabetisch) sortieren.
z.B.
VektorA(0) = Angela
VektorA(1) = Gerhard
VektorA(2) = Guido
VektorA(3) = Joschka
Wie stell ich es an, dass ich VektorB an Position (1) ergänze und alle bisherigen Werte um 1 verschiebe, so dass wieder alles stimmt und ich nicht auf einmal "Gerhard Westerwelle" und "Guido Fischer" habe?
Obwohl das rein politisch sicherlich eine interessante Symbiose wäre. :0)
Vielen Dank schonmal,
Philipp

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Feld in der Mitte erweitern?
14.09.2005 10:36:39
MichaV
Hallo;
Einfügen geht bei Arrays nur mit Umstapeln der Einträge.


      
Option Explicit
Sub EintragEinfügen()
Dim a()
Dim i As Integer
ReDim a(1 To 3)
a(1) = "1"
a(2) = "2"
a(3) = "3"
'Ausgabe
For i = 1 To UBound(a)
 
Debug.Print a(i)
Next i
Debug.Print "++++"
'einen neuen Eintrag in 2. Zeile des Feldes
ReDim Preserve a(1 To UBound(a) + 1)
For i = UBound(a) To 2 + 1 Step -1
  a(i) = a(i - 1)
Next i
a(2) = "eingefügt in Zeile 2"
'Ausgabe
For i = 1 To UBound(a)
 
Debug.Print a(i)
Next i
Debug.Print "++++"
End Sub 
Sortiermethoden guck hier http://www.online-excel.de/fom/fo_read.php?f=1&bzh=1918&h=1596
Da Du aber auch ein zweites Feld in Abhängigkeit des ersten Feldes sortieren willst schlage ich Dir vor mal über die Verwendung von Benutzerdefinierten Datentypen nachzudenken. Siehe Type- Anweisung.
Gruss- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Feld in der Mitte erweitern?
14.09.2005 11:27:25
Philipp
Hallo Micha,
zunächst mal vielen Dank für deine Antwort, ich hatte schon befürchtet, dass sich keiner meldet.
Deine Lösung passt leider nicht ganz genau. Vielleicht habe ich mich da etwas unklar ausgedrückt. Es geht mir nicht darum einen neuen Eintrag in VektorA genau an Stelle 2 reinzuschieben, sondern ich erweitere den VektorA um einen neuen Eintrag (hinten dranhängen) und sortiere ihn danach neu. Der neue Eintrag kann also irgendwo liegen, von Position 0 bis Ubound.
In diesem Fall stimmt aber der VektorA nichtmehr mit dem VektorB überein, von der Position an, an der der neue Eintrag eingeschoben wurde. Mir geht es darum eine Methode zu schreiben, die bei VektorB genau an der Position, an der der neue Eintrag im VektorA eingeschoben wurde, ebenfalls neue Werte einschiebt und die vorhandenen alle eins weiterschiebt, so dass A wieder zu B passt.
Es handelt sich bei den Vektoren übrigens über benutzerdefinierte Datenfelder, allerdings weiß ich nicht, inwieweit sich die Problemstellung dadurch ändert.
Die beiden Vektoren (bzw. Datenfelder) enthalten keine gemeinsamen Werte, ausschließlich der PositionsIndex wird als Primärschlüssel verwendet.
Ich hoffe, dass es jetzt klarer geworden ist.
Ich würde mich freuen, wenn sich da noch eine Lösung zu findet.
Vielen Dank schonmal!
Gruß,
Philipp
Anzeige
AW: Feld in der Mitte erweitern?
14.09.2005 11:50:57
MichaV
Hallo Philipp,
"Es geht mir nicht darum einen neuen Eintrag in VektorA genau an Stelle 2 reinzuschieben, sondern ich erweitere den VektorA um einen neuen Eintrag (hinten dranhängen) und sortiere ihn danach neu. Der neue Eintrag kann also irgendwo liegen, von Position 0 bis Ubound."
Wenn die Liste sortiert vorliegt, warum schiebst Du das neue Element nicht gleich an der richtigen Stelle ein? Dann sparst Du Dir das ständige Sortieren und kennst gleich die Stelle, wo Du das andere Feld verändern musst.
"In diesem Fall stimmt aber der VektorA nichtmehr mit dem VektorB überein, von der Position an, an der der neue Eintrag eingeschoben wurde. Mir geht es darum eine Methode zu schreiben, die bei VektorB genau an der Position, an der der neue Eintrag im VektorA eingeschoben wurde, ebenfalls neue Werte einschiebt und die vorhandenen alle eins weiterschiebt, so dass A wieder zu B passt." ...siehe oben. Gleich an der richtigen Stelle einfügen.
"Es handelt sich bei den Vektoren übrigens über benutzerdefinierte Datenfelder, allerdings weiß ich nicht, inwieweit sich die Problemstellung dadurch ändert.
Die beiden Vektoren (bzw. Datenfelder) enthalten keine gemeinsamen Werte, ausschließlich der PositionsIndex wird als Primärschlüssel verwendet."

Du verstehst mich nicht.
Type vBeideVektoren
Vorname as String
Nachname as String
End Type
Dim Vektoren(1 to x) as vBeideVektoren
So hast Du immer beide Felder mit einem eindeutigen Primärschlüssel zusammen.
Gruss- Micha
PS: Rückmeldung wäre nett.
Anzeige
...kommt der Sache schon näher :0)
14.09.2005 12:03:13
Philipp
Hallo Micha,
so ganz passt es aber leider immernoch nicht.
Zum Sortieren:
Das Hintenanfügen und anschließend Sortieren amch ich einfach aus Bequemlichkeit, weil ich die Sortiermethode schon habe und einen Wert hinten an einen Vektor zu hängen ist wirklich kein Aufwand. Bevor ich mir überlegen muss, an welcher Stelle der neue Wert alphabetisch reinpasst, mach ich das lieber so.
Zu der Type-Struktur:
Das Problem hierdran ist, dass es sich bei den Vektoren jeweils um Type-Datenfelder handelt, die an sich sehr komplex sind. Beide haben mehrere (bis zu 4) Hierarchieebenen und bis zu 40 Attribute auf den Ebenen verteilt. Diese beiden Kolosse in einem Type-Feld zu vereinen ist zwar theoretisch möglich, würde aber so unübersichtlich, dass ich total den Durchblick verlieren würde. Ich habe ja jetzt schon so meine Schwierigkeiten. :0)
Ausserdem müste ich dann meinen gesammten Quellcode von einigen Dutzend Seiten anpassen, das ist dann doch ein bissl viel Aufwand.
Ist also leider nicht ganz so trivial. Hast du noch ein Idee?
Gruß,
Philipp
Anzeige
AW: ...kommt der Sache schon näher :0)
14.09.2005 12:45:52
MichaV
Hallo,

Das Hintenanfügen und anschließend Sortieren amch ich einfach aus Bequemlichkeit, weil ich die Sortiermethode schon habe und einen Wert hinten an einen Vektor zu hängen ist wirklich kein Aufwand. Bevor ich mir überlegen muss, an welcher Stelle der neue Wert alphabetisch reinpasst, mach ich das lieber so.

...dann mußt Du halt damit leben, daß die Abstimmung mit Deinem zweiten Array unendlich schwieriger wird.
Gruss- Micha

169 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige