3.8k Aufrufe
Gefragt in Tabellenkalkulation von deathfun Mitglied (177 Punkte)
Hallo

ich lade aus einer Textdatei Variablen welche ich in Excel bearbeiten möchte.

Einer der Spalten beginnt eigentlich immer mit einem Gleichheitszeichen.

=VariablenNameUndSonstWas


Das funktioniert auch wunderbar solange ich die Zellen vorher als Text formatiere.

.Columns("O").NumberFormat = "@"


Nun kann es aber sein, das ein paar der Variablen mit einem Anführungszeichen beginnen.

"=VariablenNameUndSonstWas"


Dieses muss entfernt werden. Eigentlich wollte ich es mit replace machen, scheitere aber daran das es nur funktioniert wenn ich als replacement irgendetwas einfüge. Etwa ein Leerzeichen.

.Columns("O").Replace What:="""", Replacement:=""
.Columns("O").Replace What:="""", Replacement:=" " <---geht




Wie bekomme ich die Zeichen nun wirklich weg? Ein Leerzeichen anstatt eines Anführungszeichens hilft mir leider auch nicht viel.

Gruß
Deathfun

11 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,

das Problem bei der ganzen Sache ist, dass Excel ein = am Beginn einer Zeile immer als Formelbeginn interpretiert und wenn diese Formel nicht Excel-konform ist, löst das einen Fehler aus.

Bis später,
Karin
0 Punkte
Beantwortet von deathfun Mitglied (177 Punkte)
Hallo Karin,

genau das ist das Problem. Beginnt die Variable in einer als Text Formatierten Zelle mit einem "=" ist es kein Problem. Excel vermutet hier offensichtlich keine Formel und gibt auch bei keiner der ~7000 Variablen Fehler aus.

Ist aber im gleichen Ausgangszustand ein Anführungszeichen davor " welches mit replace entfernt wird, somit habe ich ja Theoretisch wieder denselben Zustand wie die ~7000 male davor, geht es nicht bzw. Excel bekommt einen internen Fehler. Intern da ich keine Meldung bekomme.


Bedeutet: (in einer als Text formatierten Spalte)
=WasAuchImmer <-- Kein Problem/Formel
"=WasAuchImmer <-- Kein Problem/Formel

Replace """" mit " "

_=WasAuchImmer <-- Kein Problem/Formel _=Leerzeichen

Replace """" mit "" (nichts)

=WasAuchImmer <-- Offensichtlich ein Problem


Die Zelle ist nach dem replace immer noch als Text formatiert. Scheinbar scheint es irgendein internes Problem zu sein.


Nur wie kann ich es umgehen?


Gruß
Deathfun
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,

was ich schon mit meinem vorhergehenden Beitrag angedeutet habe - gar nicht.
Das ist kein internes "Problem". So ist das in Excel nun mal definiert, dass ein = zu Beginn eines Zellinhaltes eine Formel signalisiert - irgendein Unterscheidungsmerkmal zum "normalen" Zellinhalt muss es ja geben.

Bis später,
Karin
0 Punkte
Beantwortet von deathfun Mitglied (177 Punkte)
Hallo,

dann kann ich aber nicht nachvollziehen wieso es die Tausende male vor dem ersten Anführungszeichen funktioniert.


Wie beschrieben, schaut die Spalte nachdem sie in Excel ist wie folgt aus:

=Var1
=Var2
=Var...
=Var7000
"=Var7001"
"=Var7002"
=Var7003
=Var...
=Var9999

Die geladenen Variablen haben nichts mit Excel zu tun und werden nicht als Formeln behandelt obwohl sie mit einem = anfangen und kein vorrangehendes Hochkommata haben.
Ebenso kann ich diese Zellen wie jede andere Zelle behandeln also zB. Nach unten "ziehen" und Durchnummerieren, mit anderen Funktionen bearbeiten, etwa Verketten usw.

Offensichtlich wird also nicht jede Zelle mit einem = als Formel behandelt. Schreibe ich eine nicht Excel konforme Formel in eine Spalte weißt Excel mich darauf hin. Die Zellen hier kann ich aber nach Gusto bearbeiten, auch wenn "=Tank56
E7 40Q3 Abgang Reserve" (ohne die Anführungszeichen) sicherlich keine Excel konforme Formel ist.


Möchte ich nun aber die Anführungszeichen bei den Vars7000 und 7001 entfernen (damit sie wie alle anderen ausschauen) gehts das nicht?


Gruß
Deathfun
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,

also wenn ich in Excel2010 =Var1 in eine Zelle schreibe, macht Excel daraus =VAR1 (Großbuchstaben!!) bzw. aus =Var7001 wird =VAR7001 und es steht jeweils 0 in der Zelle. VAR in verschiedenen Ausführungen ist Teil einer Excelfunktionalität (Varianz) und anscheinend stört sich Excel an den Zahlenendungen nicht sondern interpretiert es ganz einfach als VAR. Bei =VarHallo oder =WasAuchImmer dagegen erscheint in der Zelle der Fehler #NAME? weil es diese Funktionen nicht einmal ansatzweise gibt und Excel keine Möglichkeit findet, sie irgendwie zu interpretieren.

Bis später,
Karin
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

wie gewuenscht ^^

gruss nighty

Sub SonderzeichenLoeschen()
Dim zaehler As Long
ReDim Sarray(1, Azeile) As Variant
Sarray() = Range("A1:A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row)
For zaehler = 1 To UBound(Sarray())
Sarray(zaehler, 1) = Sumtext("" & Sarray(zaehler, 1))
Next zaehler
Range("A1:A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row) = Sarray()
End Sub


Function Sumtext(Zellen As String) As String
Dim Zelle As String
Dim zeich1 As Integer
Dim schalter As Boolean
Dim zaehler3 As Integer
ReDim zaehler2(Len(Zellen)) As String
zaehler3 = 1
For zeich1 = 1 To Len(Zellen)
If Mid(Zellen, zeich1, 1) Like "[0-9,.A-Za-z,=+-üöäÜÖÄ]" = True Then
Sumtext = Sumtext & zaehler2(zaehler3) & Mid(Zellen, zeich1, 1)
schalter = True
End If
If schalter = True And Mid(Zellen, zeich1, 1) Like "[0-9,.A-Za-z,=+-üöäÜÖÄ]" = False Then
zaehler3 = zaehler3 + 1
schalter = False
End If
Next zeich1
End Function
0 Punkte
Beantwortet von deathfun Mitglied (177 Punkte)
Hallo Karin,

wenn du aber die Zelle in die du =WasAuchImmer eingibst vorher als Text definierst (Excel2010) bietet er dir zwar bei Tippen Funktionen an, schreibst du aber einfach etwas anderes ist das für den Interpreter scheinbar ok da Text.

Habe es gerade mit =Testenbalbla und Enter versucht.


Hallo nighty,

perfekt. Danke!
Funktionierte auf Anhieb zu 95%! Auf die 100% kommen wir wenn es eine Möglichkeit gibt die Leerzeichen auch noch stehen zu lassen.
Ich denke das hierzu der Bereich um "[0-9,.A-Za-z,=+-üöäÜÖÄ]" angepasst werden möchte, bekomme das Leerzeichen dort aber nicht untergebracht. Hast du hierzu auch noch einen heißen Tipp?



Gruß
Deathfun
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,

wenn du aber die Zelle in die du =WasAuchImmer eingibst vorher als Text definierst (Excel2010) bietet er dir zwar bei Tippen Funktionen an, schreibst du aber einfach etwas anderes ist das für den Interpreter scheinbar ok da Text.


Aber es ging doch gerade darum, dass du die Zellen vorher nicht als Text formatieren willst...

Da wir uns hier anscheinend im Kreis drehen verabschiede ich mich aus diesem Thread.

Bis später,
Karin
0 Punkte
Beantwortet von deathfun Mitglied (177 Punkte)
Hallo Karin,

eigentlich ging es nie darum das es keine Text Formatierung sein darf, sondern nur darum das es Inhalte beginnend mit = und "= gibt welche ich bearbeiten muss und bei denen ich mit meinem eingangs beschriebenen Vorgehen:

Zellen als Text formatieren und " mit Replace entfernen:
.Columns("O").NumberFormat = "@"
Replace """" mit ""

nicht zum Ziel gekommen bin. Ich verstand nicht wieso bei gleicher Voraussetzung Inhalte verschieden interpretiert werden. Die Text Formatierung allein ist hier schon eine Grundvoraussetzung damit ich all die Variablen, die bereits korrekt mit = beginnen, überhaupt einfügen und bearbeiten konnte.

Bei einer durchgehend als Text formatierten Spalte:
Einfaches einfügen von =xxxyyy oder "=xxxyyy kein Problem.
Sobald aber eine Funktion (replace) das " entfernen sollte ging Garnichts mehr. Teste ich wiederrum replace auf einen Inhalt ohne = (etwa "Hallo) funktionierte alles wieder.


Deshalb erwähnte ich die Text Formatierung auch möglichst häufig. Sollte ich mich dennoch undeutlich ausgedrückt haben sollte entschuldige ich mich natürlich.
Nighty's Beitrag zeigt ja dass es scheinbar doch nicht trivial ist.



Gruß
Deathfun
0 Punkte
Beantwortet von deathfun Mitglied (177 Punkte)
Hallo,


ich habe gerade ganz vergessen zu schreiben, dass das Problem inzwischen mit Nighty's Vorschlag gelöst ist und wunderbar funktioniert. Dafür nochmal ein Danke.




Gruß
Deathfun



----closed----
...