Savanna Geschrieben 21. Dezember 2001 Teilen Geschrieben 21. Dezember 2001 Hallo Leutz, ich hoffe, ihr seid noch nicht alle im Urlaub und könnt mir noch helfen. Ich habe zwei Spalten, mit unterschiedlich vielen Datensätzen, die eine beispielsweise 300 die andere 400. Die Spalte eins beinhaltet Felder, in denen beispielsweise mal x mal y oder sogar z steht. Die andere Spalte beinhaltet Felder, in denen Axton, System und Zitrone drinsteht. Nun soll geprüft werden, ob und wo die Inhalte der ersten Spalte irgendwo in der zweiten Spalte enthalten sind. Wenn nun Datensätze der ersten Spalte in den Feldbezeichnungen der zweiten Spalte vorkommen, dann sollen diese Datensätze der zweiten Spalte in einer neuen Spalte 3 ausgegeben werden. Mann, ist das schwer zu erklären. Hoffe, es hat irgendwer verstanden!!! Freue mich über jede Hilfe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
*I C Q* Geschrieben 21. Dezember 2001 Teilen Geschrieben 21. Dezember 2001 Hallo Savanna, ich vermute jetzt einfach mal, Du redest über Excel, oder? Prinzipiell funktioniert das ganze unter VB mit einer geschachtelten Schleife. Kann Dir das ganze jetzt aber nur grob skizzieren, weil ich kein Office hier habe zum Testen: maxA = Columns(1).End(xldown).row maxB = Columns(2).End(xldown).row currow = 1 for i = 1 to maxA for j = 1 to maxB if instr(cells(1,i).value, cells(2,j).value) then cells(3,currow).value = cells(2,j).value currow = currow + 1 endif next next maxA & maxB kennzeichnen die letzte Reihe in einer Spalte. So brauchst Du nicht durch alle 65000 theoretisch möglichen Zeilen bügeln. Wie gesagt, es kann sein, dass der Code syntaktisch nicht ganz richtig ist, kann Dir aber evtl. am Donnerstag noch etwas mehr posten. Sonst frag einfach! CU, Red Bull Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Savanna Geschrieben 7. Januar 2002 Autor Teilen Geschrieben 7. Januar 2002 hallo, danke erstmal für deine Antwort, es handelt sich nicht um Excel ( da hätt ich auch schon nen Lösungsansatz) sondern um Access. Hab schon versucht, den Lösungsansatz von Excel auf Access anzupassen, aber das war vermutlich ne blöde Idee. Jetzt dachte ich, dass ich die Feldinhalte der zweier Spalten in jeweils ein Array speicher und dann die zwei Arrays miteinander vergleiche. Wäre das was? Hättest du nen Lösungsvorschlag für Access? Danke im Voraus! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 7. Januar 2002 Teilen Geschrieben 7. Januar 2002 Das passt glaube ich eher zu den Datenbanken, ich schiebs mal da rüber... Ich habe zwei Spalten, mit unterschiedlich vielen Datensätzen, die eine beispielsweise 300 die andere 400. Sind die beiden Spalten in verschiedenen Tabellen?? Vermutlich ja, sonst hättest du ja nicht unterschiedlich viele Datensätze... :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Savanna Geschrieben 9. Januar 2002 Autor Teilen Geschrieben 9. Januar 2002 Original geschrieben von Wolle Hier die gleiche Frage, ist das eine extra Tabelle?? Ich gehe mal davon aus, das es 3 Tabellen sind.... Dann könntest du z.B. 3 Recordsets machen. Mit den ersten 2 Recordsets machst du eine verschachtelte Schleife und vergleichst wie im Excelbeispiel mit der instr-Funktion die Felder. Falls du eine Übereinstimmung hast schreibst du mit dem 3. Recordset dann den Wert in die 3. Tabelle. Ist zwar relativ langsam, aber bei so wenig Datensätzen sollte das gehen.... Es handelt sich hierbei nur um eine Tabelle mit zwei Spalten!!! Ich habe jetzt die Inhalte der Spalten in einem Array abgespeichert und nun werd ich die Daten mit einander vergleichen. Es muss hier eine Funktion geben, wo ich prüfen kann, ob der Inhalt der einzelnen Zeilen aus der einen Spalte in irgendeiner Zeile der anderen Spalte vorhanden ist. Es soll also nicht geprüft werden, ob Zeile1 irgendwo in der andern Spalte vorhanden ist, sondern ob Ähnlichkeiten bestehen zwischen der einen Spalte und der andern. Als Beispiel: In der ersten Spalte Zeile1 steht "Marienkäfer" und und der zweiten Spalte in Zeile 350 steht "Käfer". Hierbei besteht doch eine Ähnlichkeit zwischen den einzelnen Zeilen der verschiedenen Spalten. Das soll nun ermittelt werden und wenn eine Ähnlichkeit besteht, dann soll das in einer dritten Spalte (ebenfalls in der selben Tabelle) ausgegeben werden. Wir gehen beim Vergleichen immer von der ersten Spalte aus. Sprich wir schauen, ob der Inhalt der Spalte 1 irgendwo annäherungsweise in Spalte 2 auftaucht, wenn ja, dann soll das in der dritten Spalte ausgegeben werden. :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 9. Januar 2002 Teilen Geschrieben 9. Januar 2002 Original geschrieben von Savanna Es muss hier eine Funktion geben, wo ich prüfen kann, ob der Inhalt der einzelnen Zeilen aus der einen Spalte in irgendeiner Zeile der anderen Spalte vorhanden ist. Ja, das ist instr(). Ich hab allerdings die Syntax nicht im Kopf, müßte aber in der Hilfe drinstehen (die fackelt mir im Moment dauernd ab, sonst würde ich dir die Syntax posten). Instr vergleicht 2 Strings miteinander und wenn einer im anderen enthalten ist, gibt die Funktion die Stelle zurück an der der erste String steht. Das ganze packst du dann in 2 verschachtelte Schleifen´, wie im Excelbeispiel oben, damit alle Kombinationen durchlaufen werden. Ich hoffe, das hilft dir weiter.... Aber jetzt noch mal ne blöde Frage: An welche Stelle der 3. Spalte stellst du denn das Ergebnis. Du mußt dich doch auf irgendwas beziehen, bzw. dein Ergebnis mit einem Index in Bezug bringen?? :confused: Deswegen auch die Frage ob es verschiedene Tabellen sind. Du kannst doch nicht die 3 Spalten wahllos durcheinanderwürfeln.... :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Savanna Geschrieben 9. Januar 2002 Autor Teilen Geschrieben 9. Januar 2002 Original geschrieben von Wolle Ja, das ist instr(). Ich hab allerdings die Syntax nicht im Kopf, müßte aber in der Hilfe drinstehen (die fackelt mir im Moment dauernd ab, sonst würde ich dir die Syntax posten). Instr vergleicht 2 Strings miteinander und wenn einer im anderen enthalten ist, gibt die Funktion die Stelle zurück an der der erste String steht. Das ganze packst du dann in 2 verschachtelte Schleifen´, wie im Excelbeispiel oben, damit alle Kombinationen durchlaufen werden. Ich hoffe, das hilft dir weiter.... Aber jetzt noch mal ne blöde Frage: An welche Stelle der 3. Spalte stellst du denn das Ergebnis. Du mußt dich doch auf irgendwas beziehen, bzw. dein Ergebnis mit einem Index in Bezug bringen?? :confused: Deswegen auch die Frage ob es verschiedene Tabellen sind. Du kannst doch nicht die 3 Spalten wahllos durcheinanderwürfeln.... :confused: instr...., so weit war ich auch, das Prob ist die Hilfe, ätzender kann sie unter Access 2000 wirklich nicht sein!!! in der Msdn, naja, da muss man echt suchen, bis man was findet. ich weiß echt nicht, wie ich dir das erklären soll. viell. ist das mit der dritten spalte auch einfach nur ne blöde idee, ich hab das einfach nur deswegen so machen wollen, damit ich sehe, welcher datensatz denn nun nem anderen ähnelt u. da dacht ich, das wäre die einfachste lösung. viell. würdest du es anders machen?? könnts mir ja was vorschlagen??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Savanna Geschrieben 9. Januar 2002 Autor Teilen Geschrieben 9. Januar 2002 So hab ich versucht das ganze zu meistern, aber da ist natürlich ein Fehler drin. Aber wirklich weiter komm ich jetzt auch nicht, obwohl ich weiß, dass dort ein Fehler drin ist, bwz. mehrere. :confused: Function Spaltenvergleich() As String Dim arrText As String, sFeld3 As String, sFeld4 As String Dim i%, j% j = 1: i = 1 For i = 1 To 500 For j = 1 To 432 If arrText(0, i) = arrText(1, j) Then GoTo jumpa Next j jumpa: If arrText(0, i) <> arrText(1, j) Then GoTo jumpb sFeld3(i, 3) = "gleich mit Spalt2 Zeile " & j sFeld4(j, 4) = "gleich mit Spalt1 Zeile " & i jumpb: Next i End Function Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 9. Januar 2002 Teilen Geschrieben 9. Januar 2002 Original geschrieben von Savanna instr...., so weit war ich auch, das Prob ist die Hilfe, ätzender kann sie unter Access 2000 wirklich nicht sein!!! in der Msdn, naja, da muss man echt suchen, bis man was findet. Gib doch einfach mal instr im Code ein und drück F1, dann kommt man meistens an die richtige Stelle... Original geschrieben von Savanna ich hab das einfach nur deswegen so machen wollen, damit ich sehe, welcher datensatz denn nun nem anderen ähnelt u. da dacht ich, das wäre die einfachste lösung. Das siehst du doch so auch nicht. Du vergleichst ja nicht nur die 2 Werte innerhalb eines Datensatzes, sondern jeden Wert mit jedem. In welche Zeile schreibst du den Gleichen Wert dann. In die passende Zeile der ersten Spalte, oder in die passende Zeile der 2. Spalte?? Spätestens wenn ein String in mehreren anderen vorkommt wirft es dir alles durcheinander. Ich würde die in eine neue Tabelle machen, evt noch mit angeben, aus welchen Datensätzen der Wert stammt (z.B. mit dem Index aus deiner ersten Tabelle) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 9. Januar 2002 Teilen Geschrieben 9. Januar 2002 Original geschrieben von Savanna So hab ich versucht das ganze zu meistern, aber da ist natürlich ein Fehler drin. Du hast die Schleifen nicht richtig verschachtelt.... Das muß in etwa so aussehen: for i =1 to 500 for j=1 to 432 if instr(arrText(0,i), arrText(1,j),1) <> 0 then Schreibe Datensatz in Tabelle end if next j next i Ich hab gerade auf einem anderem Rechner eine funktionierende Hilfe gefunden. instr(zuDurchsuchenderText, GesuchterText, 1) Heist, du mußt in der Klammer erst den Text angeben, der durchsucht werden soll, dann mit Komma getrennt, der Text, der gesucht werden soll. Die 1 steht für einen Textvergleich. Das ganze gibt dir die Stelle im durchsuchten Text zurück, an der der gesuchte Text anfängt... Ich hoffe das war halbwegs verstandlich formuliert... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Savanna Geschrieben 9. Januar 2002 Autor Teilen Geschrieben 9. Januar 2002 Original geschrieben von Wolle instr(zuDurchsuchenderText, GesuchterText, 1) Heist, du mußt in der Klammer erst den Text angeben, der durchsucht werden soll, dann mit Komma getrennt, der Text, der gesucht werden soll. Die 1 steht für einen Textvergleich. Das ganze gibt dir die Stelle im durchsuchten Text zurück, an der der gesuchte Text anfängt... Ich hoffe das war halbwegs verstandlich formuliert... Ok, bin jetzt dabei, das umzusetzen. Danke erstmal! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.