Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1092to1096
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
Inhaltsverzeichnis

Inhalt Zellen löschen wenn Bedingung erfüllt

Inhalt Zellen löschen wenn Bedingung erfüllt
Bene
Hey Leute,
nachdem ihr mir letzes Mal schon super schnell helfen konntet, hätt ich nochmal eine Frage an Euch.
Das Programm ist an sich denke ich kein großer Aufwand. Und zwar bin ich auf der Suche nach einem Makro, welches mir den INHALT (nicht die Zelle selbst) löscht, wenn in der Zelle "....." steht. Das eigentliche Problem ist, dass in den Zellen auch unterschiedlich viele Punkte stehen können.
Habts ihr da einen Vorschlag für mich?!
Danke Euch schon mal!
Rückfrage
06.08.2009 11:05:20
Wolli
Hallo Bene,
heißt das, Du hast ein Tabellenblatt mit vielen, vielen Zellen? Einige davon enthalten nur Punkte (mindestens wie viele?) und diese sollen gelöscht werden? Und Du musst die Aufgabe oft und regelmäßig ausführen?
Bitte werde etwas präziser.
Gruß, Wolli
AW: Inhalt Zellen löschen wenn Bedingung erfüllt
06.08.2009 11:16:16
Erich
Hi Vorname,
probier mal (löscht, wenn in der Zelle nur 1 bis 10 Punkte stehen):

Option Explicit
Sub PunkteLoesch()
Dim rngBer As Range, rngC As Range, aStr(1 To 10), ii As Integer, rngL As Range
Set rngBer = Range("A:B")            ' Wirkungsbereich, anpassen
aStr(1) = "."
For ii = 2 To 10
aStr(ii) = aStr(ii - 1) & "."
Next ii
For Each rngC In Intersect(rngBer, ActiveSheet.UsedRange)
If IsNumeric(Application.Match(rngC.Value, aStr, 0)) Then
If rngL Is Nothing Then
Set rngL = rngC
Else
Set rngL = Union(rngL, rngC)
End If
End If
Next rngC
If Not rngL Is Nothing Then rngL.ClearContents
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Inhalt Zellen löschen wenn Bedingung erfüllt
06.08.2009 11:48:34
Bene
Danke Euch erst mal!
@Erich: Dein Makro funktioniert schon genau so wie ich mir das vorgestellt hatte. Allerdings (habs ausprobiert) werden nur bis zu zwei Punkte in einer Zelle gelöscht. Stehen mehr als zwei Punkte in einer Zelle, wird der Zellinhalt nicht gelöscht. Ich hab zwar rumprobiert, aber irgendwie nicht die richtige 'Stellschraube' in deinem Programm gefunden. Ist ja sicher nur ein Parameter, der zu ändern ist. Sorry, für meine Unwissenheit in VBA ;)
Ich hab auch mal noch meine Beispieltabelle angehängt!
https://www.herber.de/bbs/user/63658.xls
Hinweis: Die Daten aus den Fragebogen werden via einem anderen Makro importiert, deshalb sieht die Fromatierung etwas komisch aus.
Grüße
Anzeige
AW: die Punkte sind keine Punkte sondern 3-Punkte.
06.08.2009 12:08:43
Daniel
Hi
deine "Punkte" sind keine Punkte, sondern das Zeichen mit dem ASCII-Code 133 "…", nämlich 3 Punkte
normale Punkte "." haben den ASCII-Code 46
daß ist der Punkt, in dem du in deinem Makro drehen musst.
so wie diese Zeichen verwendet werden, würde ich sie einfach mit BEARBEITEN - ERSETZEN, bzw im Makro mit
Cells.Replace Chr(133), "" entfernen und für die normalen Punkte halt Cells.Replace ".", ""
Gruß, Daniel
AW: 3-Punkte gehen nicht...
06.08.2009 12:24:10
robert
hi,
ich habs ausprobiert mit 1+2 ..
gehts
mit 3 ...
gehts nicht ?
gruß
robert
AW: 3-Punkte gehen nicht...
06.08.2009 12:29:29
Daniel
Hallo
das ist ein anderes Zeichen !!!!! nicht der gewöhnliche Punkt !
Kopier dir mal aus einer Zeile, in der das Makro nicht funktioniert EIN Zeichen raus in eine andere Zelle.
oder versuch mal, von den 3 Punkten in meinem Beispiel eines zu selektien.
ich hoffe, dann verstehst du, worum es geht.
Gruß, Daniel
Anzeige
sorry-geht nicht...
06.08.2009 12:54:38
robert
hi Daniel,
ich habe es in einem blatt ausprobiert
mit dem punkt auf der tastatur -gewöhnlicher Punt unter dem doppelpunkt .
bsi zu 2 punkte geht es - warum nicht mit 3 ?
gruß
robert
AW: sorry-geht nicht...
06.08.2009 13:16:15
Daniel
Nochmal, ganz langsam für dich:
ich hab mir Erichs Makro nicht angeschaut, aber:
die meisten Punkte in deiner Beispieldatei sind nicht die Punkte, die du auf der Tastatur findest, SONDERN EIN ANDERES ZEICHEN.
Du darfst also nicht nur den "Tastatur-Punkt" verwenden, sondern eben dieses Zeichen.
hier nochmal beide Zeichen gebenübergestellt, in einer nicht-Proprotionalen Schrift, damit du siehst, daß es wirklich ein Zeichen ist:
"." - ASCII-Code 46
"…" - ASCII-Code 133

dh du musst im Makro nicht das Zeichen "." verwenden, sondern das Zeichen "…".
und wie du das am besten wegbekommst, hab ich dir schon erklärt.
so, daß wars jetzt zum 3. und letzten mal.
Gruß, Daniel
Anzeige
@Daniel.. bitte...
06.08.2009 13:26:01
robert
hi,
ich habe keine beispieldatei hochgeladen :-)
ich habe doch geschrieben, was ich gemacht habe.....
..über die tastatur 1 oder 2 punkte eingeben-makro geht, punkte werden gelöscht
3 punkte eingeben-es wird nichts gelöscht
sorry wenn ich dich nerve, aber ich finde den punkt im makro nicht, warum
es bei dere und mehr punkten nicht geht
gruß
robert
was Daniel meint ist
06.08.2009 13:38:19
MichaV
...Du kannst die drei Punkte nicht einfach so eingeben, denn es ist nur ein Zeichen, nicht 3 einzelne Punkte. Und solange Du keine Taste mit 3 Punkten hast, musst Du einen Umweg gehen.
Drück Alt+0133 auf dem Ziffernblock (NumLock muss aktiviert sein)
http://de.wikipedia.org/wiki/...#Tastatur
Gruß- Micha
Anzeige
Danke Micha,Erich hat mir den Weg gezeigt..oT
06.08.2009 17:47:07
robert
AW: @Daniel.. bitte...
06.08.2009 13:41:14
Daniel
Hi
meine Antwort bezieht sich auf die Beispieldatei in diesem Beitrag:
https://www.herber.de/forum/messages/1094003.html
wenn du was anderes hast, solltest du selber deine Beispieldatei mit deinem bisherigen Makro hochladen und auch darauf hinweisen, daß es um ein anderes Problem geht.
und wenn es um das Makro geht, daß du verwendest, es ist von Erich, nicht von mir.
Gruß, Daniel
AW: @Daniel.. bitte...
06.08.2009 13:47:11
Bene
Hi Daniel,
Ich habe deine Vorgehensweise jetzt verstanden und es funktioniert einwandfrei auf mein Beispiel!!!
Sub Punkte_ersetzen()
Cells.Replace Chr(133), ""
Cells.Replace ".", ""
End Sub
Perfekt, danke dir und selbstverständlich auch allen anderen!!!
Super Forum ;)
Gruß, Bene
Anzeige
Danke Daniel,hier die Datei....
06.08.2009 13:52:36
robert
hi,
das makro ist von erich, stimmt, aber könntest du nun einen blick
darauf werfen, warum nur bis zu 2 punkte gelöscht werden-ich finde es nicht :-( ?
danke und
gruß
robert
https://www.herber.de/bbs/user/63668.xls
AW: Danke Daniel,hier die Datei....
06.08.2009 14:23:44
Daniel
sorry, ich hab alles gesagt, was ich dazu sagen kann.
schau dir einfach mal jedes einzelne Zeichen, daß nach Punkt aussieht, in deiner Beispieldatei genau an und vergleiche das mit dem Makro, dann wirst du die Ursache schon finden.
Für Bene als den ursprünglichen Fragesteller ist das Problem ja gelöst.
Gruß, Daniel
Anzeige
Na dann nicht-auch gut
06.08.2009 14:41:40
robert
AW: Es tut mir wirklich leid
06.08.2009 15:29:39
Daniel
aber das Problem, warum das Makro bei deiner Beispieldatei nicht funktioniert, hat die gleichen Ursachen wie in Benes Beispspiel: ES SIND UNTERSCHIEDLICHE ZEICHEN.
aber das habe ich schon mehrfach zu erklären versucht.
wenn du das nicht kapierst, kann ich auch nicht helfen, Bene hat meine Erklärungen verstanden.
Gruß, Daniel
du kannst sagen was du willst, aber..
06.08.2009 16:17:35
robert
es sind NORMALE PUNKTE
dass es auch andere wege gibt, ist mir bewusst, aber du nimmst dir ja nicht die mühe das zu lesen was man dir schreibt-ich gebe ..... ein, sonst nichts
und jetzt schluss
gruß
robert
es WAREN normale Punkte, SIND aber nicht
06.08.2009 16:36:31
Erich
Hi Robert,
WAREN bedeutet: Du hast drei einzelne Punkt eingegeben.
Aber es SIND keine normalen Punkte - denn du hast bei den AutoKorrektur-Optionen
bei "Während der Eingabe ersetzen" einen Haken stehen.
In der darunter stehenden Liste findest du sicher auch die drei Punkte...
Das führt dazu, dass drei eingegebene Punkte automatisch durch ein Zeichen Chr(133) ersetzt werden.
Hier beide Varianten - mal mit, mal ohne Ersetzung:
Tabelle1
 ABC
1  1. Zeichen istAnzahl Zeichen
2...463
3…1331

verwendete Formeln
Zelle Formel
B2 =CODE(A2)
C2 =LÄNGE(A2)
B3 =CODE(A3)
C3 =LÄNGE(A3)

Tabellendarstellung in Foren Version 4.11

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Danke Erich, aber..
06.08.2009 16:54:58
robert
hi,
wie müsste dann dein makro aussehen, dass es funktioniert ?
oder muss ich nur den haken wegnehmen ?
gruß
robert
AW: Danke Erich,Haken raus ;-) owT
06.08.2009 17:02:03
robert
AW: du kannst sagen was du willst, aber..
07.08.2009 00:39:31
Daniel
Sorry in deiner Beispieldatei, die du hochgeladen hast,. sind es aber NICHT normale Punkte (ASCII-CODE 46), sondern eben eine Mischung aus normalen Punkten und den 3er-Punkten, dh das Zeichen mit dem ASCII-Code 133.
Da ich mittlerweile schon ein wenig länger hier im Forum aktiv bin, hat mich halt die Erfahrung gelehrt, daß im Regelfall die Beispieldatei immer die besser Informationsquelle ist als die Beschreibung des Fragestellers,
Dh. wenn ich mich auf die Beispieldatei konzenriere, gelingt es mir in den meisten Fällen eine für den Fragesteller zufriedenstellendere Antwort zu finden, als wenn ich nur auf die Problembeschreibung achte.
Das liegt IMHO daran, daß sich allein mit Worten nicht alle Einflussfaktoren ausreichend beschreiben lassen, die aber in der Beispieldatei normalerweise sofort ersichtlich sind.
Daher hat für mich die Beispieldatei immer Priorität vor irgendwelchen Anmerkungen des Fragestellers.
Klar, die lese und beachte ich zwar auch, aber wenn die Beschreibung von der Beispeildatei abweicht, dann gilt für mich, was in der Beispieldatei steht.
so ist nun mal, Erfahrung aus mehren Jahren aktivität im Forum.
Gruß, Danile
Anzeige
@Daniel zur Abrundung..
07.08.2009 06:44:35
robert
hi Daniel,
das ganze hat so begonnen:
ben will, dass die punkte gelöscht werden, erich schreibt ein makro-ok
im beitext schreibt erich , dass dieses von 1 bis 10 punkte löscht-ok
daraufhin habe ich es probiert und habe 1 bis 10 punkte eingegeben-ok
jetzt muss ich aber zugeben :-) dass ich nicht !!! wusste, dass excel ab 3 punkten
das nicht als 3 punkte sieht, wie der, der vor dem computer sitzt
deshalb war ich so erstaunt, dass du sagst, ich habe keine punkte eingegeben
aber letzendlich hat sich alles aufgeklärt, danke für deine geduld und bitte dich um entschuldigung
und hoffe, dass wir uns wieder ungetrübt im forum begenen können.
gruß
robert
AW: @Daniel zur Abrundung..
07.08.2009 11:19:44
Daniel
HI Robert
kein Problem, schließlich hab ich bei der Diskussion auch was dazugelernt.
nach dem ich jetzt verstanden habe wie die Punkte zustande kommen, kann ich auch Erichs Makro entsprechen anpassen, daß es unabhängig von der Autokorrektur funktioniert.
Sub PunkteLoesch()
Dim rngBer As Range, rngC As Range, rngL As Range
Dim i As Long, ii As Long
Dim aStr(23)
Set rngBer = Range("A:B")            ' Wirkungsbereich, anpassen
For i = 0 To 3
For ii = 0 To 2
aStr((i * 3 + ii) * 2) = WorksheetFunction.Rept("…", i) & WorksheetFunction.Rept(" _
.", ii)
aStr((i * 3 + ii) * 2 + 1) = WorksheetFunction.Rept(".", i * 3 + ii)
Next ii
Next i
For Each rngC In Intersect(rngBer, ActiveSheet.UsedRange).SpecialCells(xlCellTypeConstants,  _
2)
If IsNumeric(Application.Match(rngC.Value, aStr, 0)) Then
If rngL Is Nothing Then
Set rngL = rngC
Else
Set rngL = Union(rngL, rngC)
End If
End If
Next rngC
If Not rngL Is Nothing Then rngL.ClearContents
End Sub
Gruß, Daniel
DANKE Daniel-funkt ;-) owT
07.08.2009 12:38:04
robert
kürzere Variante
07.08.2009 12:59:04
Erich
Hi Daniel,
an einigen Stellen konnte ich das noch vereinfachen/kürzen:

Option Explicit
Sub PunkteLoeschN()
Dim rngBer As Range, rngC As Range, rngL As Range, aStr(1 To 18) As String
Dim ii As Long, jj As Long
Set rngBer = Range("A:B")            ' Wirkungsbereich, anpassen
aStr(1) = "."
For ii = 2 To 10
aStr(ii) = aStr(ii - 1) & "."
Next ii
For ii = 0 To 2
For jj = 0 To 2
aStr(10 + 3 * ii + jj) = String(ii + 1, "…") & String(jj, ".")
Next jj
Next ii
For Each rngC In Intersect(rngBer, ActiveSheet.UsedRange) _
.SpecialCells(xlCellTypeConstants, 2)
If IsNumeric(Application.Match(rngC.Value, aStr, 0)) Then
If rngL Is Nothing Then
Set rngL = rngC
Else
Set rngL = Union(rngL, rngC)
End If
End If
Next rngC
If Not rngL Is Nothing Then rngL.ClearContents
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Mit Autofilter
06.08.2009 11:36:48
Daniel
Hi
kannst du die Zellen nicht einfach mit dem Autofilter filtern?
als bedingung "enthält" und dann soviele Punkte einfügen wie mindestens vorkommen, also z.B. "....."?
dann kannst du ja die sichtbaren einfach löschen.
falls du es als Makro brauchst, nimm den Recorder.
Gruß, Daniel

119 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige