Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
912to916
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
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Prozente kleiner 2 löschen

Prozente kleiner 2 löschen
08.10.2007 10:48:00
Stefanie
Hallo,
ich arbeite gerade eine Kostenumlagestruktur aus.
Der Bereich um den es sich handelt: G42:EQ450
Die Zeilen sehen wie folgt aus (kleiner Auszug):
905020 33,00% 942014 50,00% 943010 17,00%
930113 4,61% 930130 1,10% 930326 5,51% 931012 6,61% 931020 0,83%
931209 6,06% 932019 6,13% 932027 0,96% 932310 2,55%
930113 6,33% 930121 0,66% 930130 1,51% 930326 7,56% 931012 9,07%
Nun möchte ich, dass alle Zellen mit weniger als 2% gelöscht werden.
Damit ich dann aber keinen Schweizer Käse habe, möchte ich, dass die leeren Zellen gelöscht werden und die nächste aktive Zelle nach links verschoben wird.
So nun hoffe ich, dass sich jemand findet, der nicht nur mein Rätsel lesen, sondern auch lösen kann!!!!
Ich danke allen im Voraus!
Gruß
Steffi

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prozente kleiner 2 löschen
08.10.2007 11:10:00
Rene
Hi Steffi,
im Makro könnte das so aussehen:
if activecell.value <= 2 then
activecell.delete
end if
Gruß
René

Daten kleiner 2% per VBA löschen
08.10.2007 11:21:00
NoNet
Hallo Steffi,
das folgende Makro sollte Deinen Wunsch erfüllen :
Im angegebenen Bereich werden alle Daten (also die Nr. und der %-Satz) gelöscht, die kleiner als 2% sind.
Die nachfolgenden Daten der Zeile werden nach links verschoben (allerdings nicht nach oben !)
Sub Raetsel_Nicht_nur_lesen_sondern_auch_lOesen()
    'Löscht alle Daten <2 % im angegebenen Bereich (jeweils 2 Zellen)
    Dim Bereich, Zeile, Spalte
    Set Bereich = [G42:EQ450]
    For Each ber In Bereich.SpecialCells(xlCellTypeConstants, 23).Areas
        For Zeile = ber.Row To ber.Rows.Count + ber.Row - 1
            For Spalte = ber.Column + 1 To ber.Columns.Count + ber.Column Step 2
                If Cells(Zeile, Spalte).Value < 0.02 And Cells(Zeile, Spalte).Value <> "" Then
                    Cells(Zeile, Spalte).Offset(0, -1).Resize(, 2).Delete shift:=xlToLeft
                    Spalte = Spalte - 2
                End If
            Next
        Next
    Next
End Sub
Teste das Makro bitte zunächst an einer Kopie Deiner Tabelle !!
Gruß, NoNet

Anzeige
AW: klappt nicht
08.10.2007 11:33:00
Stefanie
Hallo NoNet,
gleich zu Beginn: JA, genau so ist das angedachte Prinzip.
Leider lässt sich das Makro nicht ausführen.
Es kommt keine Fehlermeldung ... es passiert einfach gar nichts :-((
Hast du dafür auch eine Lösung?
Trotz allem schon mal vielen Dank!

Stehen auch WIRKLICH %-Werte in den Zellen ?
08.10.2007 11:40:00
NoNet
Hallo Steffi,
das Makro führt einen numerischen Vergleich druch, d.h. es müssen auch wirklich ZAHLEN in den Zellen stehen.
Hier mein Testergebnis (probiere es bitte auch mal damit) :
Tabelleninhalt VORHER :
Tabelleninhalt NACHHER :
Gruß, NoNet

AW: Stehen auch WIRKLICH %-Werte in den Zellen ?
08.10.2007 13:01:00
Stefanie
Hallo,
also ich habe es nochmal überprüft, es sind alles %-Werte.
Als ich es erneut versucht habe kam folgende Fehlermeldung:
Laufzeitfehler '1004'
Keine Zellen gefunden.
Und nachfolgende Zeile wird dann markiert:
For Each ber In Bereich.SpecialCells(xlCellTypeConstants, 23).Areas

Anzeige
OK, dann sind das wohl BERECHNETE Werte ?
08.10.2007 13:08:00
NoNet
Hallo Steffi,
aus Performancegründen durchsucht mein Makro nur die gefüllten Zellen (Konstante Werte), aber keine LEERZELLEN und auch keine berechneten Zellen (also keine Formelergebnisse).
Wenn das Makro keine Zellen findet, dann vermute ich mal, dass es sich bei den %-Werten um Formelergebnisse handelt ?
Dann empfehle ich Dir folgende Änderung im Code :
For Each ber In Union(Bereich.SpecialCells(xlCellTypeConstants, 23), _
    Bereich.SpecialCells(xlCellTypeFormulas, 23)).Areas

Gruß, NoNet

Anzeige
AW: OK, dann sind das wohl BERECHNETE Werte ?
08.10.2007 13:52:08
Stefanie
Leider kommt auch hier der gleiche Fehler.
Das Problem ist, dass ich die Datei zur Weiterbearbeitung erhalten habe und nicht mehr in Erfahrung bringen kann, was im Vorfeld damit gemacht worden ist.
Ich kann nur sagen, was ich bis dato gemacht habe:
Am Anfang waren es als Text gespeicherte Zahlen, das habe ich geändert.
Dann habe ich die Zahlen erneut als Prozent ausgewiesen; Format - Zellen - Prozent
Ich habe das Makro sowohl mit und ohne Prozent probiert.
Hat es damit was zu zun?

Dann musst Du die Zellen als ZAHL umwandeln
08.10.2007 14:00:00
NoNet
Hallo Steffi,
die Info, dass diese Zellen zunächst als Textformatiert waren, könnte die Lösung bringen :
Markiere mal eine einzelne Spalte (mit %-Werten), wähle Menüpunkt "Daten - Text in Spalten - Getrennt - Fertigstellen" und teste das Makro dann. Falls das dann klappt, musst Du das für jede %-Spalte einzeln wiederholen.
Gruß, NoNet

Anzeige
AW: leider nicht
08.10.2007 14:20:13
Stefanie
Vorab vielen Dank für die Mühe...!
Leider funktioniert auch dieser Schritt nicht.
Nun kommt auch keine Fehlermeldung mehr, es passiert lediglich gar nichts!
Übrigens funktionieren die beiden anderen Makros auch nicht!!!

Dann lade die Datei bitte mal hoch...
08.10.2007 14:34:00
NoNet
Hallo Steffi,
das wird ja immer dubioser ! Wenn Du nun weitere Vorschläge erwartest, solltest Du die Mappe mal bei herber hochladen und den Link hier posten (natürlich nur dann, wenn diese keine datenschutzrelevanten Daten enthält, aber diese kannst Du ja zuvor löschen !).
Gruß, NoNet

AW: Dann lade die Datei bitte mal hoch...
08.10.2007 14:59:08
Stefanie

Die Datei https://www.herber.de/bbs/user/46609.xls wurde aus Datenschutzgründen gelöscht


Ich habe die entsprechenden Daten kopieren und in eine neue Tabelle einfügen müssen, da die Datei zu groß war.
Ich hoffe es funktioniert trotz allem.

Anzeige
AW: Dann lade die Datei bitte mal hoch...
08.10.2007 15:41:00
Rene
Hi Steffi,
hast du sowas wie in der angehängte Mappe gemeint?
Starte mal das Makro.
Das löscht dir die Zelle mit weniger als 2 Prozent und schiebt die Zellen nach links.

Die Datei https://www.herber.de/bbs/user/46614.xls wurde aus Datenschutzgründen gelöscht


Gruß
René

"Typen unverträglich"
08.10.2007 15:54:12
Stefanie
Man man man so langsam wird es mir echt peinlich, erneut die selbe Antwort zu geben!!!
Es klappt leider nicht.
Es ist zwar das erste Mal, dass man das typische "Rattern" in der Tabelle sieht, bricht aber nach ca. 15sek
ab mit der Meldung:
"Typen unverträglich"
Was ist eigentlich, wenn derjenige der die Datei zuerst bearbeitet hat, ein Makro geschrieben hat, z.B. um an die Prozentsätze zu kommen?
Ist das damit gemeint?
Ich weiß halt leider echt nicht, was die Person gemacht hat.

Anzeige
Hmm... - klappt bei mir auch nicht :-(
08.10.2007 16:17:42
NoNet
Hallo Stefanie,
die Datei scheint wirklich sehr verworren zu sein :
Mein Makro klappt hier auch nicht ! Es scheint tatsächlich an den Formaten der Zelle zu liegen :
Manche werden als ZAHL erkannt, manche nicht.
Ich habe schon versucht, manuell und auch per VBA die Daten per "Text in Spalten" zu formatieren : ohne Erfolg. Auch ein Kopieren der reinen Werte (ohne Formatierungen !) in eine neue Mappe bringt keine Besserung ! Manche Zellen werden als %-Wert kopiert, manche als ZAHL - eine Systematik ist nicht zu erkennen :-( Selbst das Multiplizieren mit 1 (= eine Standard-Methode bei unstimmigen Formatierungen) klappt nicht !
Also irgendwie ist das Format der Tabelle total korrupt ! Ich bin auch nicht sicher, ob man das reparieren kann (und ich habe schon sehr viele Mappen repariert !!). Ich experimentiere noch ein Wenig damit...
Gruß, NoNet

Anzeige
AW: Hmm... - klappt bei mir auch nicht :-(
08.10.2007 16:45:10
Rene
Hi Steffi,
ich glaub ich habs.
Schau es dir mal an.
Einach das Makro starten und warten bis der Fortschrittsbalken verschwunden ist,.
https://www.herber.de/bbs/user/46619.xls
Gruß
René

AW: "Typen unverträglich"
08.10.2007 17:04:00
Beverly
Hi Stefanie,

Sub umwandeln_loeschen()
Dim raZelle As Range
Dim raZellen As Range
For Each raZelle In ActiveSheet.UsedRange
If Right(raZelle, 1) = "%" Then
Cells(raZelle.Row, raZelle.Column) = CDbl(Left(raZelle, Len(raZelle) - 1)) / 100
Cells(raZelle.Row, raZelle.Column).NumberFormat = "0.00%"
End If
Next raZelle
For Each raZelle In ActiveSheet.UsedRange
If raZelle  0 Then
If raZellen Is Nothing Then
Set raZellen = Union(raZelle, raZelle.Offset(0, -1))
Else
Set raZellen = Union(raZellen, raZelle, raZelle.Offset(0, -1))
End If
End If
Next raZelle
If Not raZellen Is Nothing Then raZellen.Delete shift:=xlShiftToLeft
Set raZellen = Nothing
End Sub


Bis später,
Karin

Anzeige
AW: Prozente kleiner 2 löschen
08.10.2007 11:37:00
Beverly
Hi Steffi,
eine andere Möglichkeit

Sub loeschen()
Dim raZelle As Range
Dim raZellen As Range
For Each raZelle In ActiveSheet.UsedRange
If raZelle  0 Then
If raZellen Is Nothing Then
Set raZellen = Union(raZelle, raZelle.Offset(0, -1))
Else
Set raZellen = Union(raZellen, raZelle, raZelle.Offset(0, -1))
End If
End If
Next raZelle
If Not raZellen Is Nothing Then raZellen.Delete shift:=xlShiftToLeft  ' hier werden alle  _
Zellen auf einmal gelöscht und verschoben
Set raZellen = Nothing
End Sub


________________________________________

Anzeige
AW: Prozente kleiner 2 löschen
08.10.2007 23:48:00
Daniel
Hallo Steffi
scheint ja ein schwieriger Fall zu sein.
Leider kann ich deine Origingal-Datei nicht mehr hochladen, aber ich hoffe, das Beispiel von NoNet entspricht noch dieser.
ich hab mal was gebastelt, mit der Datei funktionierts es auch recht zügig, hoffentlich dann auch im Original.
Anzumerken ist, daß die Originaldaten nicht verändert werden, sondern die Werte in Tabelle2 übertragen und dort bearbeitet werden. Dadurch kann ich mit Formeln arbeiten und spare mir die Schleifen, dh. das Makro ist kurz und sollte recht flott sein.
Hier der Code:

Sub Test()
With Sheets("tabelle2").Range(Sheets("Tabelle1").UsedRange.Address)
.FormulaR1C1 = "=IF(Tabelle1!RC="""","""",IF(ISERROR(VALUE(Tabelle1!RC)),Tabelle1!RC,IF( _
VALUE(Tabelle1!RC)


und hier die Datei:
https://www.herber.de/bbs/user/46622.xls
Gruß, Daniel

DANKE DANKE DANKE
09.10.2007 09:04:00
Stefanie
Ich war gestern nicht mehr am Platz, so dass ich es jetzt erst testen konnte.
Sowohl das Makro von Rene als auch das von Beverly klappt.
1000x DANKE
Ich glaube wenn ich das manuell hätte machen müssen, würde ich nächste Woche noch sitzen!
Gruß
Steffi

39 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige