Wie kann man bei Excel Zeilen löschen, wo ein bestimmter Wert in einer Zelle drin steht?

3 Antworten

Excel selber kann nur Formeln beinhalten. eine Formel ist was sie ist, sie zeigt Ergebnisse auf Grund von Variablen und Berechnungen an.

Alles was mit tatsächlichem verschieben, löschen, kopieren und dergleichen zu tun hat, ist lediglich mit VBA also Makros möglich.

Willst du eine Zeile nicht anzeigen kannst du in jede Zelle der betreffenden Zeile eine Formel reinschreiben, welche die Zelle bei diesen Bedingungen leer anzeigt, aber löschen würde nur mit Makros (VBA) gehen.

Bsp. :Zelle A1: =Wenn(B1="Eintrag fehlt";"";B1)

In diesem Fall zeigt A1 nur dann das Ergebnis aus B1 an, wenn in B1 nicht "Eintrag fehlt" steht, ansonst wird die Zelle leer gelassen.


Paddy2506 
Fragesteller
 08.07.2014, 13:16

Ich möchte die Zeile löschen. Kannst du mir da Tipps geben, wie das mit VBA geht? Ich habe darin null Erfahrung :/

0
IrgendwoimNetz  08.07.2014, 14:29
@Paddy2506

Ja, kann ich, jedoch gibt es da ein paar Dinge zu beachten.

Die Arbeitsmappe muss als Makromappe abgelegt werden.

  • "Speichern unter" wählen
  • Dateityp ".xlsm" wählen
  • Datei speichern

Dann sollte erstmal ein Makro erstellt werden in dem nichts gemacht wird.

  • Im Menü Ansicht auf "Makros" klicken
  • "Makro aufzeichnen" anklicken
  • Makroname: "Zeileloeschen"; Tastenkombination: Strg+i ; Makro speichern in: "Diese Arbeitsmappe"
  • ok klicken
  • Nochmal den Makros" Button anklicken
  • "Aufzeichnung beenden" anklicken.

Dann müsste ich wissen ab welcher Zeile nach "Eintrag fehlt gesucht werden soll. Zudem müsste ich wissen in welcher Spalte der Text "Eintrag fehlt" steht und die genaue Schreibweise (Gross- / Kleinschreibung)

Zu guter Letzt weise ich noch darauf hin das Änderungen mit Makros nicht mit dem Zurückbutton rückgängig gemacht werden können und beim starten der Mappe eine Warnung erscheint, dass die Mappe Makros enthält und ob man diese deaktiviern möchte.

0
IrgendwoimNetz  08.07.2014, 16:23
@IrgendwoimNetz

Hier ein Beispiel das man in die Arbeitsmappe integrieren kann um die Zeilen auszublenden vor dem verschicken. Dazu mit:

  • alt+F11 den VBA Editor öffnen
  • links im Verzeichnisbaum "DieseArbeitsmappe" öffnen
  • mein Codebeispiel einfügen
  • Dateiname für PDF und Bereich in dem "Eintrag fehlt" gesucht werden soll anpassen

Das Makro wird dann beim schliessen des Dokuments ausgeführt und in einen Mailanhang gesteckt.

Option Explicit
Dim rng As Range
Dim row As Range
Dim cell As Range
Dim PDFPfadName As Variant

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Set rng = Range("D2:D50000")                            ' Bereich in dem ausgeblendet wird
    PDFPfadName = ActiveWorkbook.Path & "\" & "MyPdF.pdf"   ' Pfad und Name des PDF
    Application.ScreenUpdating = False
    For Each row In rng.Rows
        For Each cell In row.Cells
            If cell.Value = "Eintrag fehlt" Then
                cell.EntireRow.Hidden = True
                ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                PDFPfadName, Quality:= _
                xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
                OpenAfterPublish:=False
            End If
        Next cell
    Next row
    Application.ScreenUpdating = True
    Application.Dialogs(xlDialogSendMail).Show
End Sub
1
Paddy2506 
Fragesteller
 10.07.2014, 13:30
@IrgendwoimNetz

Danke für deine Antwort.

Hast mir sogar sehr weitergeholfen. Das mit der pdf und dann per Mail schicken habe ich gar nicht gefragt, dass würde Ich aber auch gern in meiner Excel Tabelle einbauen.

0

Sub ZeilenBedingtEliminieren_3_Alternativen() '

if range("B42") = "Eintrag fehlt" or range("D42") = "Eintrag fehlt" or range("F42") = "Eintrag fehlt" or range("G42") = "Eintrag fehlt" then
ActiveSheet.Range("G42").EntireRow.Hidden = True 'verbirgt Zeile 42

'Alternativen (in Lang-Schreibweise und nur für B42):
'If ActiveSheet.Range("B42").Value = "Eintrag fehlt" Then ActiveSheet.Range("B42").EntireRow.Delete 'löscht Zeile als solche
'If ActiveSheet.Range("B42").Value = "Eintrag fehlt" Then ActiveSheet.Range("B42").EntireRow.Cells.Value = "" 'eliminiert nur Einträge in der Zeile!
End Sub

Anders als i'wo... würde ich im Kontextmenü des Blattnamens Code anzeigen wählen, dann im Menü einfügen MODUL wählen und in das neue Modul obigen Code einfügen.
Ins Arbeitsblatt dann i'eine Autoform (mit Beschriftungsmöglichkeit, kann auch Textfeld sein) bringen, sie beschriften und ihr das Makro zuweisen.
Die Autoform im Kreuz von eigens deswegen als Titel fixierten Zeilen und Spalten platzieren.
Ein Klick auf diese Autoform löst dann das Makro aus. Andernfalls verschwindet Dir die Zeile auch schon, wenn das Blatt noch nicht ausreichend ausgefüllt ist!

wie du schon richtig festgestellt hast geht das nur über Makros. was soll passieren wenn die Zelle B42 gelöscht wurde? Woher soll sie dann ihren Wert bekommen? Dein Aufbau bzw. was mit dieser Tabelle geschehen soll ist mir noch nicht ganz klar.

willst du die Tabelle nachdem das Makro gelaufen ist verschicken?

Du könntest den Filter beim öffnen der Tabelle über ein Makro starten dann fällt das manuelle auslösen weg.


Paddy2506 
Fragesteller
 08.07.2014, 13:14

Danke für die schneller Antwort.

In der Zelle B42 steht der Eintrag drin: "Eintrag fehlt". Dieser Eintrag ändert sich nur, wenn in einer anderen Tabelle ein Wert eingetragen wird.

Solange aber der Wert "Eintrag fehlt" in den 4 Zellen steht(B42,D42,F42 und G42) soll am besten die ganze Zeile nicht angezeigt werden.

Die Tabelle ist meistens den ganzen Tag offen, genauso wie die anderen Tabellen, wo der Wert herkommt. Am Ende des Tages wird die Tabelle geschlossen und per Mail(als pdf Format) verschickt. In den Pdf Format soll es aber nicht die ganzen leeren Zeilen geben. Das soll dann am besten alles recht gut zusammengefasst sein.

Weißt du es nun, wie Ich es meine?

0
augsburgchris  08.07.2014, 14:15
@Paddy2506

Dann löse doch über ein Makro die Ausblendung der Zellen und gleichzeitig den PDF Versand aus.

schau dir hierzu mal entirerow.hidden=true an.

0