Office: Innerhalb eine Spalte Teilinhalte Suchen und Ersetzen

Helfe beim Thema Innerhalb eine Spalte Teilinhalte Suchen und Ersetzen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich muß leider des öfteren immer wieder auftretende Fehler in einer Spalte einer Datenbanktabelle korrigieren. Es müssen immer 4-5 (Tendenz... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von wikro, 15. Juni 2009.

  1. wikro Erfahrener User

    Innerhalb eine Spalte Teilinhalte Suchen und Ersetzen


    Hallo,

    ich muß leider des öfteren immer wieder auftretende Fehler in einer Spalte einer Datenbanktabelle korrigieren. Es müssen immer 4-5 (Tendenz steigend :-(( ) Teilinhalte ersetzt bzw. gelöscht werden (z.B. "ABC " soll durch "DEF" oder YXZ durch "" erstezt werden"

    Da diese Tabelle recht groß ist und eben 4-5 Teilinhalte ersetzt werden müssen, ist diese Arbeit nicht sonderlich interessant...
    Meine Überlegung ist diese Arbeit durch eine Abfrage in Access ausführen zu lassen, in der die zu ersetzenden Inhalte gepflegt werden können. Damit würden meine Nerven etwas geschohnt und ich könnte Zeit sparen, die ich besser für interessantere Dinge nutzen könnte. (z.B. Pause machen ;-)) )

    Wenn mir jemand helfen könnte, wäre das super !
     
    wikro, 15. Juni 2009
    #1
  2. Exl121150 Erfahrener User
    Hallo wikro,

    1) es gibt die Möglichkeit mittels 'Suchen und Ersetzen' in einer ganzen Tabellenspalte (Feld) Korrekturen durchzuführen, indem man diese für alle Datensätze durchführen lässt.

    2) oder es gibt die Möglichkeit mittels einer Aktualisierungsabfrage in allen Sätzen ein bestimmtes Feld zu modifizieren/korrigieren/ändern (oder wie man das sonst nennen will).
    In SQL schaut so etwas zB. so aus:
    UPDATE Tabelle1 SET Feld1 = Replace(Feld1,"XYZ","ABC");
    Dabei wird in der Tabelle 'Tabelle1' im Feld 'Feld1' in allen Datensätzen die Zeichenfolge "XYZ" (sofern sie dort vorkommt) durch die Zeichenfolge "ABC" ersetzt.
    Man kann das auch im Abfragedesigner (Abfrage-Entwurfsansicht) entspechend eingeben (bitte in der Access-Hilfe nachlesen).
     
    Exl121150, 17. Juni 2009
    #2
  3. wikro Erfahrener User
    Hallo Exl121150,

    erst einmal vielen Dank für deine Bemühungen.

    zu 1. Genau so habe ich das bisher immer gemacht. Das ist aber da die Tabelle recht groß ist (Die Daten werden immer nur in Blöcke zu ca. 10.000 geändert) und weil mehre Sachen geändert werden müssen, zeitaufwendig und wenig interessant.

    zu 2. Leider komme ich mit sql noch nicht gut genug klar. Ich arbeite daran...
     
    wikro, 18. Juni 2009
    #3
  4. Exl121150 Erfahrener User

    Innerhalb eine Spalte Teilinhalte Suchen und Ersetzen

    Hallo wikro,

    SQL ist nicht notwendig, man kann sich eine Aktualisierungsabfrage in der normalen Abfrage-Entwurfsansicht erstellen (und alternativ kann man sich das Ergebnis dieses Abfrageentwurfes auch als SQL-Anweisung, die dann in etwa so ausssehen müsste wie mein Beispiel, anzeigen lassen). Wie man eine Aktualisierungsabfrage erstellt, müsste in der Access-Hilfe beschrieben sein.

    Da ich nur Access2003 bzw. Access2007 verfügbar habe und nicht Access2000 kann ich Dir nur in groben Zügen helfen:
    1) Du musst Dir im Access-Menü den Aufruf für den Abfrage-Entwurf suchen und aufrufen.
    2) Dann musst Du die betreffende Tabelle auswählen, sodass sie im oberen Teil des Abfrageentwurf-Fensters mit ihrer Felderliste angezeigt wird.
    3) Im unteren Teil des Abfrageentwurf-Fensters wird Dir ein Raster angezeigt, dessen Zeilen links beschriftet sind mit: Feld, Tabelle, Sortierung, etc.
    3a) In diesen Beschriftungsbereich machst Du einen Rechtsklick mit der Maus, sodass das Kontextmenü angezeigt wird: In diesem zeigst Du mit der Maus auf den Eintrag 'Abfragetyp', sodass in der Regel rechts davon eine Liste der Abfragetypen angezeigt wird. Aus dieser Liste wählst Du den Eintrag 'Aktualisierungsabfrage' aus.
    3b) Aufgrund dieser Auswahl stellt sich die Beschriftung des Rasters um, um so die nötigen Parameter für die Aktualisierungsabfrage eingeben zu können.
    3c) In der 1.Zeile mit der Beschriftung 'Feld' wählst Du aus der Combobox-Liste genau das Feld aus, in dem Du vorhast, Deine Ersetzungen durchzuführen
    3d) In der 2.Zeile mit der Beschriftung 'Tabelle' müsste damit bereits der korrekte Tabellenname angezeigt werden.
    3e) In der 3.Zeile mit der Beschriftung 'Aktualisieren' müsstest Du dann Deine Ersetzungsformel einsetzen, was auf 2 verschiedene Arten möglich ist:
    entweder gibt man die Formel direkt ein oder man ruft den Formel-Editor auf (Rechtsklick ins weiße Feld neben 'Aktualisieren', Auswahl von 'Aufbauen...' aus der Liste, etc.)
    Da ich in etwa weiß, was Du möchtest, kannst Du neben 'Aktualisieren' gleich die folgende Formel eingeben:
    Ersetzen([Feld1];"ABC";"XYZ")
    Dabei musst Du aber statt des blauen Textes genau den Feldnamen aus der 1.Zeile (siehe Punkt 3c)) eingeben; statt des roten Textes musst Du die Zeichenfolge eingeben, die Du ersetzen möchtest; statt des orangenen Textes musst Du die Zeichenfolge eingeben, die die korrekten Zeichen enthält.
    3f) In der 4.Zeile mit der Beschriftung 'Kriterien' könntest eine Einschränkung eingeben (falls Du von vornherein nicht in allen Datensätzen die vorgenannte Ersetzung für Feld Feld1 durchführen möchtest - aber das willst Du ohnehin nicht).
    4) Damit ist im Prinzip Deine Aktualiserungsabfrage fertig und Du kannst Dir im Access-Menü die Stelle suchen zum Speichen der Abfrage; dabei musst Du Deiner Abfrage noch einen Namen verpassen.
    5) Über diesen Namen kannst Du dann diese Abfrage aus dem Datenbankfenster heraus durch Doppelklick ausführen, womit die Aktualiesierung des Feldes Feld1 in besageter Tabelle1 durchgeführt wird.
     
    Exl121150, 18. Juni 2009
    #4
  5. wikro Erfahrener User
    Hallo,

    kann es sein, daß ACCESS 2000 diese Funktion nicht unterstützt ?

    Ich versuche es aber weiter ....
     
    wikro, 18. Juni 2009
    #5
  6. Exl121150 Erfahrener User
    Hallo wikro,

    das ist ganz und gar unmöglich, das ist und war zentraler Bestandteil jeder Access-Version.

    In Access2003 ist der Abfrageentwurf folgendermaßen erreichbar (ich nehme an, dass dies auch in Access2000 ähnlich sein wird):
    Access-Menü: Einfügen > Abfragen
    Es erscheint dann das Fenster 'Neue Abfrage', in dem aufgelistet ist, welche Ansichten auswählbar sind:
    An dieser Stelle den Eintrag 'Entwurfsansicht' auswählen, womit Du dann Punkt 1) aus meinem vorigen Posting geschafft hast.

    Um Punkt 2) (Auswahl der Tabelle) aus meinem vorigen Posting zu erreichen:
    Access-Menü: Abfrage > Tabelle anzeigen...
    Es erscheint dann ein Dialogfenster mit 3 Tabulatoren 'Tabellen' (bereits ausgewählt), 'Abfragen', 'Beide'
    Aus der Tabellenliste die gewünschte Tabelle auswählen (in der die Korrekturen durchzuführen sind) und Schalter 'Hinzufügen' betätigen.
    Dadurch müsste dann die Felderliste dieser Tabelle im oberen Teil des Abfrageentwurfs-Fensters zu sehen sein.

    Dann mit Punkt 3) meines vorigen Postings fortfahren.
     
    Exl121150, 18. Juni 2009
    #6
  7. wikro Erfahrener User
    Hallo,

    grundätzlich habe ich das einfache Aktualisierungsabfragen schon gemacht, des wegen bin ich auch etwas ratlos...

    Der Austausch von ganzen Zellinhalten klappt ja auch, aber es geht hier um des Austausch von Teilinhalten. Vielleicht kommen wir deswegen nicht weiter ?!

    z.B. soll das "ABC" des Textes "Das ABC ist wichtig" in "XYZ" und das " " (zwei Leerzeichen vor "wichtig") durch " " (ein Leerzeichen) ersetzt werden.
     
    wikro, 18. Juni 2009
    #7
  8. Exl121150 Erfahrener User

    Innerhalb eine Spalte Teilinhalte Suchen und Ersetzen

    Hallo wikro,

    wenn Du 2 verschiedenartige Ersetzungen in einem Feld "gleichzeitig" machen willst, musst Du nur die Funktion 'Ersetzen(..)' verschachteln:
    Code:
    Ersetzen(Ersetzen([Feld1];"ABC";"XYZ");"  ";" ")
    Alles Weitere funktioniert, wie ich es in meinen vorigen Postings beschrieben habe.
    Genau das macht ja die Ersetzen()-Funktion: sie ruft zwar den ganzen Inhalt eines Feldes in ihrem 1. Parameter ab, sucht jedoch dann die Stelle, an der der 2. Parameter vorkommt (falls er vorkommt) und ersetzt diese Stelle dann durch den Inhalt des 3. Parameters. Diese so modifizierte Zeichenfolge wird wieder ins Feld zurückgespeicht (weil es ja eine Aktualisierungsabfrage ist und keine Auswahlabfrage).
    Angewandt auf vorigen Formelausdruck:
    Datensatz für Datensatz wird Folgendes gemacht in der Aktualisierungsabfrage:
    1) Hole aus dem aktuellen Abfragesatz den Inhalt von Feld 'Feld1';
    2) Suche in dieser Zeichenfolge die 1. Stelle, an der "ABC" steht;
    3) Wurde eine solche Stelle gefunden, ersetze die 3 Zeichen "ABC" durch die 3 Zeichen "XYZ";
    4) Falls es noch weitere Stellen in dieser Zeichenfolge geben sollte, an denen das "ABC" vorkommt, so ersetze auch diese durch "XYZ";
    5) In der so entstandenen Zeichenfolge suche die 1. Stelle, an der "  " (=2 Leerzeichen) vorkommen;
    6) Wurde eine solche Stelle gefunden, ersetze diese 2 Leerzeichen durch 1 Leerzeichen;
    7) Falls es noch weitere Stellen in dieser Zeichenfolge geben sollte, an denen 2 Leerzeichen vorkommen, so ersetze auch diese durch 1 Leerzeichen.
    8) Aufgrund der Aktualisierungsabfrage speichere die sich ergebende Zeichenfolge wieder zurück ins Feld 'Feld1' des gerade bearbeiteten Datensatzes.



    oder in der SQL-Version:
    Code:
    UPDATE Tabelle1 SET Feld1=Replace(Replace(Feld1,"ABC","XYZ"),"  "," ");
    Anmerkung:
    In der deutschsprachigen Variante der Aktualisierungsabfrage ist als Trennzeichen zwischen den Parametern der Strichpunkt zu verwenden, in der englischsprachigen SQL-Version sind außer dem engl. Wort 'Replace' für die Ersetzen-Funktion Kommas (Beistriche) als Trennzeichen zu verwenden.
     
    Exl121150, 18. Juni 2009
    #8
  9. wikro Erfahrener User
    Hallo,

    es hat jetzt geklappt und ich habe es verstanden. DANKE !

    Nur eine Sache noch: Gibt es einen "Zähler", der die Anzahl der Änderungen anzeigt ? Oder kann man die Abfrage erweitern, so daß die Spalte der Tabelle solange von vorne gestartet wird, bis das "ABC" nicht mehr gefunden wird ? Das "ABC" kann auch zwei Leerzeichen ensprechen, wobei in den Feldern durchaus sagen wir 5 Leerzeichen hintereinander geschrieben sein können.. Nach einem Lauf bleiben dann als noch 3 Leerzeichen stehen...
     
    wikro, 18. Juni 2009
    #9
  10. Exl121150 Erfahrener User
    Hallo wikro,

    ich habe Dir in VBA eine benutzerdefinierte Funktion gebastelt, die mehrmalige Ersetzungsläufe durchführt, solange bis keine Änderungen in der zu ändernden Zeichenkette feststellbar sind.

    Code:
    Public Function ErsetzenXmal(S$, Fund$, Ersatz$) As String
      Dim SNeu$, SAlt$
      SNeu$ = S$
      Do
        SAlt$ = SNeu$
        SNeu$ = replace(SAlt$, Fund$, Ersatz$)
      Loop While SNeu$ <> SAlt$
      ErsetzenXmal = SNeu$
    End Function
    Falls Du nicht weißt, wie man eine solche Funktion installtiert, hier das Prozedere:
    1) Markiere obige Funktion mit der Maus und drücke die Tastenkombination Strg+C, um sie in die Zwischenablage zu kopieren
    2) Wechsle in Deine Access-Datenbank, drücke dort die Tastenkombination Alt+F11, umd den VBA-Editor zu öffnen.
    3) Im Menü des VBA-Editors wähle "Einfügen > Modul" aus, sodass sich das große Codemodulfenster öffnet.
    4) In dieses füge aus der Zwischenablage die obige Funktion ein, indem Du die Tastenkombination Strg+V drückst.
    5) Damit ist die Funktion installiert und gehe wieder zurück in die Access-Datenbank.

    Anwendung der Funktion:
    In Deiner Aktualisierungsabfrage hattest Du bisher die Funktion 'Ersetzen(ZFolge;Fund;Ersatz)' verwendet. Du kannst ab sofort statt des Wortes 'Ersetzen' das Wort 'ErsetzenXmal' einsetzen: Überall dort, wo Du das machst, verwendest Du die neue Funktionseigenschaft (wie ich sie am Anfang dieses Postings beschrieben habe).
     
    Exl121150, 18. Juni 2009
    #10
  11. wikro Erfahrener User
    Klasse ! Vielen Dank für deine Hilfe !

    Schönes Wochenende !
     
  12. wikro Erfahrener User
    Hallo !

    Nach dem die Sache beim letzten Mal o schön klappte kommt jetzt nach dem Start der Abfrage die Meldung :


    " Undefinierte Funktion "ErsetzenXmal" in Funktion "

    Was mache ich falsch ?
     
  13. Exl121150 Erfahrener User

    Innerhalb eine Spalte Teilinhalte Suchen und Ersetzen

    Hallo wikro,

    diese Meldung zeigt an, dass Access diese Funktion 'ErsetzenXmal' in der Anwendung (Datenbank-Datei) nicht findet. Die Ursache kann vielfältig sein:
    1) In der Anwendung gibt es gar kein CodeModul, das diese Funktion beinhaltet;
    2) Es existiert zwar eine Funktion dieses Namens in einem Codemodul, die Funktion wurde aber als 'Private Function ErsetzenXmal(...)' deklariert, sodass sie von außerhalb des Moduls, in dem sie steht, unsichtbar ist.
    3) Unter Access2007 kann es sein, dass das Makro beim Start der Anwendung nicht aktiviert wurde, als nachgefragt wurde, ob Makros aktiviert werden sollen - und somit die Funktion deaktiviert bleibt.
    4) Wenn die Funktion zwar vorhanden ist, sie aber im falschen Codemodul steht: zB. wenn sie in einem Codemodul für ein bestimmtes Formular oder bestimmten Bericht steht, sie aber in einem anderen Formular bzw. Bericht benötigt wird. Daher sollten Funktionen, die nicht ausschließlich in einer bestimmten Objektinstanz benötigt werden, in einem allgemeinen Codemodul und zwar als 'Public Function ...' deklariert/definiert werden.
     
    Exl121150, 24. Juni 2009
    #13
  14. wikro Erfahrener User
    Hallo,

    es muß natürlich " Undefinierte Funktion "ErsetzenXmal" in Ausdruck " heißen. Da habe ich mich vertippt...

    Nun den, ich habe die Funktion mit deiner Hilfe am 18.06.09 installiert und daher kann ich 1, 2 und 4 ausschließen. Allerdings arbeite ich noch mit ACCESS 2000: Kann ich da Makros aktivieren ? Zumal hat die Abfrage ja am 18. noch funktioniert.
    Ich habe lediglich die Datenbank repariert und komprimiert.
     
  15. Exl121150 Erfahrener User
    Hallo wikro,

    wenn Du tatsächlich Access2000 hast, kommt natürlich Punkt 3) nicht infrage.
    Wenn Du die Funktion so installiert hast, wie ich es im Posting vom 18.6.2009 um 16:13 Uhr beschrieben habe, bin ich auch momentan total überfragt, woran es liegen kann.
    Man kann eventuell noch eines machen: nachschauen, ob die Funktion noch (korrekt) da ist:
    1) Die Tastenkombination Alt+F11 drücken, um den VBA-Editor aufzurufen
    2) Die Tastenkombination Strg+R drücken, um den Projekt-Explorer aufzurufen (anzuzeigen).
    3) Im Projekt-Explorer muss es unmittelbar unterhalb von 'Module' einen Eintrag geben zB. 'Modul1'. Mit einem Doppelklick auf diesen Eintrag muss sich das dazugehörige Codemodul-Fenster öffnen und dort muss dann die Funktion zu sehen sein, wie ich sie Dir am 18.6.2009 gepostet habe.
    4) Falls die Funktion so nicht mehr zu finden ist, ist das die Ursache des Problems.
    5) Falls Punkt 4) nicht zutrifft, würde ich Dich bitten, wenn Du die Abfrage, die Du erstellt hast und die die Fehlermeldung ausgelöst hat, in der Entwurfsansicht öffnest.
    Es müsste dann irgendwo die Möglichkeit geben, die SQL-Ansicht anzeigen zu lassen (Nachdem ich kein Access2000 zur Verfügung habe, kann ich die Vorgangsweise dafür leider nicht präzise beschreiben). Sobald Dir die SQL-Anweisung angezeigt wird, möchte ich Dich bitten, diese zu kopieren (Markieren, Tasten Strg+C; mit Tasten Strg+V hier im Posting einfügen), damit ich sehen kann, ob bei der Aktualisierungsabfrage etwas schief läuft.
     
    Exl121150, 24. Juni 2009
    #15
Thema:

Innerhalb eine Spalte Teilinhalte Suchen und Ersetzen

Die Seite wird geladen...
  1. Innerhalb eine Spalte Teilinhalte Suchen und Ersetzen - Similar Threads - Spalte Teilinhalte Ersetzen

  2. Eingaben in mehreren Spalten und Zeilen per Knopfdruck löschen

    in Microsoft Excel Hilfe
    Eingaben in mehreren Spalten und Zeilen per Knopfdruck löschen: Hallo zusammen, Ich habe einen Excel Kalkulater gebaut mit welchem man bestimmte Werte (tun hier nichts zur Sache) berechnen kann. Nun ist es so, dass die beiden Tabellenblätter für die...
  3. Adressen in eine Zelle bei Übereinstimmung eindeutiger Werte einer anderen Spalte

    in Microsoft Excel Hilfe
    Adressen in eine Zelle bei Übereinstimmung eindeutiger Werte einer anderen Spalte: Hallo zusammen, wer letzteren Thread kennt, hier eine Neuauflage. Problem: Aus Array-Berechnungen (Variablen von Let) ein weiteres Array zu erzeugen, welches für alle eindeutigen Werte aus G die...
  4. Prozentberechnung auf Angabe einer anderen Spalte

    in Microsoft Excel Hilfe
    Prozentberechnung auf Angabe einer anderen Spalte: Hallo Zusammen, ich brauchte dringend mal wieder Hilfe, bevor ich noch die ganze Nach hier hocke ;-) Ich habe in einer Datei mit der letzten Berechnung Ärger. Ich möchte das in einer Liste unter...
  5. Benutzerdefinierte Spalte anhand von Bedingungen in Powerquery

    in Microsoft Excel Hilfe
    Benutzerdefinierte Spalte anhand von Bedingungen in Powerquery: Hallo zuammen, ich habe eine Beispieldatei angehängt. Ich habe Rohdaten mit mehreren Spalten. Spalte "Text" ist jedoch unvollständig. Die unvollständigen Zellen möchte ich via Powerquery...
  6. Matrix zeilenweise durchlaufen, Vorhandene Daten in eine Spalte schreiben

    in Microsoft Excel Hilfe
    Matrix zeilenweise durchlaufen, Vorhandene Daten in eine Spalte schreiben: Guten Tag, ich habe eine Datei mit einer 12x340 Matrix diese muss für einen weiteren Arbeitsschritt komplett in eine Spalte umgewandelt werden. Google, Youtube und die Suchfunktion hier konnten...
  7. VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.

    in Microsoft Excel Hilfe
    VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.: Hallo zusammen, Eine Tabelle mit 9 Worksheets, Datenblatt, Studien, Studie_1 ...Studie_7. Auf dem Deckblatt werden in Zelle B4-B10 die Namen der Studien eingetragen. Davon abhängig ob ein Name...
  8. Excel VBA Spalten mit Ordnerinhalt vergleichen

    in Microsoft Excel Hilfe
    Excel VBA Spalten mit Ordnerinhalt vergleichen: Hallo, Bin ehr Excel VBA Neuling, Würde aber gerne in einer bestehender Tabelle die Auflistung der Ordner mit dem eigentlichen Stand in den besagten Ordner kontrollieren. Also in der Spalte Q10...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden