Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro -in Spalte nach Wert suchen und löschen
#1
Guten Tag zusammen,
ich möchte gern ein Makro erstellen, welches in einer Datei -> Spalte einen Wert sucht, diese Spalte dann löscht.


Z.B. in Spalte A soll nach dem Wert "8" gesucht warden.
Alle Zeilen mit dem Wert "8" sollen gelöscht warden.


Vielen Dank !
Antworten Top
#2
Moin,
ich habe den Eindruck, dass du in Sachen VBA absolut unbedarft bist. Das ist zwar nicht schlimm, aber warum soll es denn dann unbedingt ein Makro sein? Das geht schließlich recht passabel mit einfachem filtern und dann löschen.

Du kannst ansonsten ja einfach einmal anfangen, das Ganze mit dem Makrorecorder aufzuzeichnen, dann hast du zumindest eine kleine Basis.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
[-] Folgende(r) 1 Nutzer sagt Danke an GMG-CC für diesen Beitrag:
  • technoente
Antworten Top
#3
Hallo,

Zitat:Du kannst ansonsten ja einfach einmal anfangen, das Ganze mit dem Makrorecorder aufzuzeichnen, dann hast du zumindest eine kleine Basis.

wenn Du das dann aufzeichnest und bearbeitest, solltest Du beachten, daß Du Dich beim Löschen von Zeilen
von unten nach oben vorarbeitest und nicht umgekehrt. Sonst verschluckt Excel sich.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
[-] Folgende(r) 1 Nutzer sagt Danke an Käpt'n Blaubär für diesen Beitrag:
  • technoente
Antworten Top
#4
Das ist natürlich richtig, Peter.
Ich dachte allerdings weniger an die "lahme" Lösung per Schleife als eher an das filtern der zu eliminierenden Zeilen, die dann mit einem Rutsch gelöscht werden.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
[-] Folgende(r) 1 Nutzer sagt Danke an GMG-CC für diesen Beitrag:
  • technoente
Antworten Top
#5
Hallo ihr zwei,
danke für die schnelle Antwort.
Ich versuche mir standing Sachen zusammen zu basteln.
Z.B.

Code:
Sub Löschenrückwärts()

' Löschenrückwärts Makro

   ActiveSheet.Name = "SAPausfuhr"

   Range("AB:AB,AA:AA,V:V,S:S,R:R,Q:Q,P:P,O:O,L:L,I:I").Select 'Spalten welche gelöscht werden von hinten auswählen
   
   Range("I1").Activate                                        'ausgewählten Bereich aktivieren
   
   Selection.Delete shift:=xlToLeft                            'ausgewählten Bereich löschen
   
   Range("K:K,I:I,G:G,C:C,A:A").Select                         'die leeren Spalten löschen, falls var. anderer Befehl
   
   Range("A1").Activate                                        'ausgewählten Bereich aktivieren
   
   Selection.Delete shift:=x1toLeft                            'ausgewählten Bereich löschen
   
   Dim Zeile As Long                                           'Var. festlegen mit Zahlen von  -2.147.483.648 - +2.147.483.647
   
   With Tabelle1                                               'worksheet Name
       
   For Zeile = .UsedRange.Row + .UsedRange.Rows.Count - 1 To 1 Step -1 'Schleife sucht von HINTEN nach Leerzeilen
       
   If Application.CountA(.Rows(Zeile)) = 0 Then .Rows(Zeile).EntireRow.Delete 'wenn eine Leerzeile gefunden wird, diese löschen
   
                 
   Next                                                                'Schleife
           
   End With                                                            'Ende der Schleife
       
   Range("A1,B1,D1").Select                                            'makieren von einzelnen Zellen
   
   Selection.ClearContents                                             'Inhalt makierte Zellen löschen
   
   Range("D2").Select                                                  'D2 auswählen
   
   ActiveCell.FormulaR1C1 = "Verk.Org"                                 'in aktive Zelle reinschreiben
   
   Dim Bereich As Range
   
   Set Bereich = Sheets("SAPausfuhr").cell(B).Find("NU,FS,NRT,FM,NGU,FP,PU", LookAt:=xlWhole)
   

   
   End If


End Sub
die Kommentare habe ich mir slebst, nach bestem Gewissen gemacht.
Ich versuche immer mehr zu lernne und selbstständig Sachen anzueignen.
Nun hackt es aber Z.B. bei dem oben beschriebenen Problem.
Liebe Grüße
Und danke!
Antworten Top
#6
Hallo,

in der Ursprungsfrage stand etwas von "wenn Wert=8 dann löschen". Der gezeigte Code macht aber etwas anderes:


Code:
.Find("NU,FS,NRT,FM,NGU,FP,PU",


Auch wenn es ohne die Daten zu kennen nicht so einfach zu beurteilen ist, der Code funktioniert (vermutlich) nicht.

Ist es möglich, eine kleine, aber in der Struktur richtige Beispiel-Datei hochzuladen und das Ziel noch etwas präziser zu beschreiben?

mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • technoente
Antworten Top
#7
ups, die habe ich vergessen rauszulöschen. das war einer meiner Versuche welcher nicht geklappt haben.
habe anbei eine Datei angehängt.
.xlsx   Testdatei.xlsx (Größe: 11,09 KB / Downloads: 4)
Ich möchte eigentlich nur, dass es sozusagen entweder in Spalte A den Wert "8" sucht, und die komplette Zeile makiert, und diese dann gelöscht wird.
Oder
In Spalte "B" die Werte FM, FP , FS etc. sucht, dann die Zeile makiert und ebenfalls löscht.

Code:
Columns("B:B").Select
   Selection.Find(What:="FM", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
       :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
       False, SearchFormat:=False).Activate

So jetz müsste ich sagen, Ergebnise makieren, auswählen und betroffenne Zeilen anwählen und löschen, von unten nach oben, richtig?
Antworten Top
#8
Hallo,

ohne Makros:

mit Autofilter in Spalte A die 8 auswählen

Das Menü-Icon "nur sichtbare Zellen auswählen" aktivieren.

Per Maus von A3 bis Tabellenende markieren: löschen

Spalte A markieren: F5, Inhalte: leere Zellen

Rechte Maustaste: löschen:ganze Zeile

mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • technoente
Antworten Top
#9
kleiner Nachtrag:

Bis auf die zweite Überschrift geht:


Code:
Sub Fen_()
With ActiveSheet.UsedRange
   .AutoFilter 1, 8
   .EntireRow.Delete
   .AutoFilter
End With
End Sub


mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • technoente
Antworten Top
#10
vielen Dank für deine Antwort!
Aber ware es nicht am Besten, wenn ich es als Makro mache? Ich möchte das ja in mein oben gepostetes Makro mit einfügen.
Liebe Grüße
und vielen Dank für eure Hilfe !!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste