Frage von dawid2292, 80

Wie lösche ich die ersten drei Zeichen einer Zelle?

Also ich habe eine Tabelle mit mehreren Zeilen. Bei einigen Zeilen müssen die ersten drei Zeichen gelöscht werden, da ansonsten ein anderes Programm nicht funktioniert. Also wie mache ich das mit einem Makro, bzw. einem VBA-Skript dass, wenn eine Zeile drei Zeichen oder weniger hat, dass diese Zeichen sowie diese Zeile gelöscht wird. Eine alternative Lösung wäre es für mich, dass, wenn das erste Zeichen einer Zeile ein Punkt ist, und die Zeile mehr Zeichen als 1 enthält (nach dem Punkt als erstes Zeichen), dass diese Zeile gelöscht wird. Kann mir das jemand erklären?

Antwort
von Herb3472, 80

Als Excel-Formel oder mit VBA?

Kommentar von dawid2292 ,

Am besten mit VBA, denn ich habe es schon mit einer Excel-Formel probiert (im Internet gefunden), und da erhalte ich immer eine 0

Kommentar von Herb3472 ,

Das Einfachste wäre eine Excel-Formel, überprüft wird der Inhalt von Zelle A1:

=WENN(LÄNGE(A1)<3;"";A1)
Kommentar von dawid2292 ,

Also wenn ich deine Formel Eingebe kriege ich folgende Meldung von Excel:

Vorsicht, wir haben mindestens einen Zirkelbezug in der Arbeitsmappe gefunden. Dieser kann dazu führen, dass Ihre Formeln nicht richtig berechnet werden.

Info: Ein Zirkelbezug kann eine Formel sein, die sich direkt auf ihren eigenen Zellwert bezieht oder auf eine andere Zelle, die von ihrem eigenen Zellwert abhängt.

Und dann kommt wieder eine 0 in der ersten Zeile.

Kommentar von Herb3472 ,

Moment! Die Formel darf natürlich nicht in der Zelle stehen, die Du überprüfst!

Kommentar von dawid2292 ,

Wenn ich es in der Bearbeitungsleiste hineinschreibe, kommt das selbe raus.

Kommentar von Herb3472 ,

Wenn ich es in der Bearbeitungsleiste hineinschreibe, kommt das selbe raus.Ich hab nicht von der Bearbeitungsleiste gesprochen!

Ich habe nicht von der Bearbeitunszeile gesprochen.

Du hast z.B. die zwei Zellen A1 und B1. Die Zelle A1 willst Du überprüfen, in der Zelle B1 soll das Ergebnis Deiner Überprüfung stehen.

Daher schreibst Du die Formel in die Zelle B1.


Wenn Du dann in die Zelle A1 irgendwas eingibst, dann erscheint in Zelle B1 das Ergebnis Deiner Operation.

Was nicht funktioniert: Du kannst nicht deine Eingabe in Zelle A1 mit einer Formel verändern.

Kommentar von dawid2292 ,

Okay, ich habe es jetzt verstanden. Danke für die Aufklärung, ich habe Excel viele Jahre nicht mehr verwendet, und mein Wissensstand verblasst mit der Zeit :) Wenn ich deine Formel auf B1 anwende (Die Zelle hat lediglich 3 Zeichen) dann sollte B1 eigentlich leer sein, weil die Zelle A1 3 Zeichen enthält. Sie ist aber nicht leer. D.h. das Ergebnis der Formel wird auf B1 nicht angewendet. Mache ich irgendetwas falsch?

Kommentar von Herb3472 ,

Schreibe die Formel, die ich oben reingestellt habe, 1:1 in die Zelle B1 (am besten mit copy & paste), und dann gib in Zelle A1 irgendwas ein. Ich habe die Formel selbstverständlich in Excel überprüft, bevor ich sie hier hereinkopiert habe. Sie funktoniert - vorausgesetzt, Du machst beim Abschreiben keinen Fehler.

Kommentar von dawid2292 ,

Okay, angewendet auf eine Zeile funktioniert das alles. Und wie mache ich das jetzt das Excel mir diese Formel auf die restlichen Zeilen anwendet?

Kommentar von Herb3472 ,

Du markierst mit der Maus die rechte untere Ecke der Zelle mit der Formel, drückst die linke Maustaste und ziehst die Maus mit gedrückter Maustaste nach unten über alle Felder, welche die Formel enthalten sollen. Damit wird in alle markierten Felder die Formel eingefügt, wobei automatisch die Zeilennummer mit angepasst wird.

Kommentar von dawid2292 ,

Die Methode kenn ich, ist aber für meine Tabelle nicht anwendbar da ich 1.000.000 Einträge in der Tabelle habe.

Kommentar von Herb3472 ,

Die Methode kenn ich, ist aber für meine Tabelle nicht anwendbar da ich 1.000.000 Einträge in der Tabelle habe.

Au weia - das wäre dann ja eigentlich eine Datenbankanwendung für Microsoft Access?! In einem Access Formular ließe sich das ganz leicht realsiieren.

Kommentar von dawid2292 ,

Ich verstehe. Und wie mache ich das in Access? Ich habe schon die Tabelle in eine neue Datenbank importiert, was muss ich jetzt machen, damit die Felder verschwinden, deren Anfangszeichen ein "." ist?

Kommentar von Herb3472 ,

Am einfachsten funktioniert das, indem Du in einem Formular beim Ereignis "nach Änderung" des Eingabefeldes für den Text eine kleine VBA-Prozedur hinterlegst.

Ich werde Dir ein kleines Beispiel programmieren und dann hier hereinstellen.

Kommentar von Herb3472 ,

was muss ich jetzt machen, damit die Felder verschwinden, deren Anfangszeichen ein "." ist?

Was soll in diesen Feldern dann drinnen stehen? Der Text ohne Punkt am Anfang, oder die ersten paar Zeichen abgeschnitten, oder ein leeres Feld, oder...?


Sind schon Daten in der Tabelle vorhanden, die bearbeitet werden müssen? Dann muss man eine for- next-Schleife programmieren.

Kommentar von Herb3472 ,

MS Access 2007 bzw. 2010:

Wenn Du über ein Formularfeld "txt_TextString" einen Text bearbeiten oder einen neuen Datensatz anlegen möchtest, wobei der Punkt am Anfang entfernt werden soll, dann hinterlegst Du beim Formularfeld "txt_TextString" folgende VBA-Ereignisprozedur "nach Aktualisierung":

Private Sub txt_TextString_AfterUpdate()    Dim strTruncatedText As String    If Left(Me.txt_TextString, 1) = "." Then        strTruncatedText = Right(Me.txt_TextString, Len(Me.txt_TextString) - 1)        Me.txt_TextString = strTruncatedText    End IfEnd Sub

Wenn Du aus den bereits vorhandenen Datensätze den Punkt am Textanfang herauslöschen möchtest, dann machst Du das am besten mit folgender VBA-Prozedur, die Du mit einem Button "Punkt_Abschneiden" aufrufst:

Public Sub Punkt_Abschneiden()    Dim dbs As DAO.Database    Dim rst As DAO.Recordset    Dim strSQLQuery As String    Dim strOriginalText As String    Dim strTruncatedText As String    strSQLQuery = "SELECT * FROM tbl_Text"        Set dbs = CurrentDb    Set rst = dbs.OpenRecordset(strSQLQuery)        With rst        .MoveFirst        Do While .EOF = False            strOriginalText = .Fields("TextString").Value            If Left(strOriginalText, 1) = "." Then                strTruncatedText = Right(strOriginalText, Len(strOriginalText) - 1)                .Edit                .Fields("TextString").Value = strTruncatedText                .Update            End If            .MoveNext        Loop    End WithEnd Sub

Ich hoffe, dass die Syntax hier fehlerfrei übernommen wurde, und wünsche Dir gutes Gelingen! Wenn Du Fragen hast, stehe ich Dir selbstverständlich gerne zur Verfügung.




Kommentar von dawid2292 ,

Hallo! Also erstmal danke für deine hilfreiche Unterstützung! Welche Syntax von den beiden ist anwendbar, wenn das Feld in dem als erstes Zeichen ein Punkt ist gelöscht werden soll, und dort soll nichts mehr stehen, sodass zwischen dem vorherigen und dem nächsten Eintrag in der Tabelle kein leeres Feld drinnen steht?

Beispiel:

Also bei Zelle 1 der Datenbank steht eine Website "xy.com"

Bei Zelle 2 steht z.B. ".com"

und bei Zelle 3 steht wieder eine volle Website "xy.com"

und die Zelle 2 mit dem Punkt soll gelöscht werden, sodass ein reibungsloser und Abstandsloser Wechsel zwischen Zelle 1 u. 3 (beispielsweise mit den Pfeil-Tasten auf der Tastatur) (nach dem Ausführen des Skriptes wahrscheinlich Zelle 1. u. 2) möglich ist.

Kommentar von Herb3472 ,

HAb' Dir eine Freundschaftsanfrage geschickt, denn hier kommen wir nicht weiter. Ist zu komplex.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten