Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilen und Spalten einer Tabelle löschen

Zeilen und Spalten einer Tabelle löschen
17.11.2006 14:52:09
Brain
Hallo zusammen!
Ein Makro generiert mir eine Tabelle bei der die Anzahl der Spalten varieren kann. Wenn der Anwender einen Zeitraum vom 01.01 bis 06.01 angibt dann wären das 6 Spalten. Beim nächsten mal gibt er den Zeitraum vom 01.01 bis 08.01 an und somit wären es 8 Spalten.
Da ich als nächsten ein Diagramm einfügen muss würde ich gerne wegen der Übersichtlichkeit innerhalb dieser Tabelle alle "leeren" Spalten und Zeilen löschen lassen.
Ich habe mal ein Beispiel einer generierten Tabelle hochgeladen. In diesem Fall müssten die Spalten C, E und F sowie die Zeilen 5, 8, 9, 10, 11 und 13 gelöscht werden.
https://www.herber.de/bbs/user/38270.xls
Lässt sich so etwas durch eine Logik überhaupt realisieren?

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen und Spalten einer Tabelle löschen
17.11.2006 15:11:37
IngGi
Hallo Brain,
so zum Beispiel:

Sub Tabelle_richten()
Dim intSpalte As Integer
Dim lngZeile As Long
For intSpalte = Range("IV1").End(xlToLeft).Column To 2 Step -1
   If Cells(1, intSpalte).End(xlDown).Offset(0, -(intSpalte - 1)) = "Gesamt" Then
      Cells(1, intSpalte).EntireColumn.Delete
   End If
Next 'intSpalte
For lngZeile = Range("A:A").Find(What:="Gesamt").End(xlUp).Row To 3 Step -1
   If Cells(lngZeile, 1).End(xlToRight).Column = 256 Then
      Cells(lngZeile, 1).EntireRow.Delete
   End If
Next 'lngZeile
End Sub

Gruß Ingolf
Anzeige
AW: Zeilen und Spalten einer Tabelle löschen
17.11.2006 15:19:29
Brain
Das klappt ja hervorragend! :-) Man beachte wie schnell mir geholfen wurde! Könntest du für mich noch kurze Kommentare einfügen damit ich genau verstehe was das Makro macht?
Vielen Dank!!!!
AW: Zeilen und Spalten einer Tabelle löschen
17.11.2006 15:46:30
IngGi
Hallo nochmal,
kommst du damit klar?

Sub Tabelle_richten()
Dim intSpalte As Integer
Dim lngZeile As Long
'Ausgehend von der letzten Spalte (IV) wird mit der Funktion End(xlToLeft)
'die letzte belegte Spalte ermittelt. In der For...Next-Schleife werden dann
'die Spalten von hinten nach vorne abgeklappert, indem der Schleifenzähler
'intSpalte bei jedem Durchlauf um 1 vermindert wird.
For intSpalte = Range("IV1").End(xlToLeft).Column To 2 Step -1
   'Nun wird geprüft, ob die Spalte leer ist. Dies ist der Fall wenn, ausgehend
   'von Zeile 1 der Spalte mit der Funktion End(xlDown) die Zeile erreicht wird,
   'in deren erster Spalte "Gesamt" steht.
   If Cells(1, intSpalte).End(xlDown).Offset(0, -(intSpalte - 1)) = "Gesamt" Then
      'Wenn Spalte leer, diese löschen.
      Cells(1, intSpalte).EntireColumn.Delete
   End If
Next 'intSpalte
'Analog zu den Spalten wird nun die letzte Zeile gesucht. Da hier aber eine
'Summenzeile "im Weg" ist, darf die Funktion End(xlUp) nicht von der letzten Zeile
'ausgehen, sondern muss von der Summenzeile ausgehen. Dann werden auch hier,
'analog zu den Spalten die Zeilen von unten nach oben abgeklappert.
For lngZeile = Range("A:A").Find(What:="Gesamt").End(xlUp).Row To 3 Step -1
   'Analog zu den Spalten prüfen, ob die Zeile leer ist. Dies ist der Fall wenn,
   'ausgehend von der ersten Spalte, mit der Funktion End(xlToRight) die letzte
   'Spalte (Spaltennummer 256) erreicht wird.
   If Cells(lngZeile, 1).End(xlToRight).Column = 256 Then
      'Wenn Zeile leer, diese löschen.
      Cells(lngZeile, 1).EntireRow.Delete
   End If
Next 'lngZeile
End Sub

Gruß Ingolf
Anzeige
AW: Zeilen und Spalten einer Tabelle löschen
17.11.2006 15:35:51
Beate
Hallo, (wenn auch zu spät)
Sub Spalten_Zeilen_löschen() 'Beate
Dim i As Long, iCol As Long
For i = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
    If Application.WorksheetFunction.CountA(Rows(i)) = 1 Then Rows(i).Delete
Next
For iCol = ActiveSheet.Cells.Column + ActiveSheet.Cells.Columns.Count - 1 To 1 Step -1
    If Application.WorksheetFunction.CountA(Columns(iCol)) = 2 Then Columns(iCol).Delete
Next iCol
End Sub


Gruß,
Beate
Anzeige
AW: Zeilen und Spalten einer Tabelle löschen
17.11.2006 16:05:20
Brain
Vielen Dank für die Antworten. Wie kann ich jetzt per Makro aus dieser aufbereiteteten Tabelle ein Säulendiagramm mit gestaplenten Säulen erstellen bei der die X Achse die Tage darstellen und die Säulen sich aus den einzelnen Werten der Namen zusammensetzen? Habe das Diagramm hochgeladen so wie es am Ende ausschauen soll.
https://www.herber.de/bbs/user/38271.xls
AW: Zeilen und Spalten einer Tabelle löschen
17.11.2006 16:44:25
IngGi
Hallo Brain,
mit dem Makrorekorder aufgezeichnet und ein wenig angepasst:

Sub Makro1()
Charts.Add
ActiveChart.ChartType = xlColumnStacked
ActiveChart.SetSourceData Source:=Sheets("Tabelle1").Range("A1:E6"), PlotBy _
    :=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
End Sub

Gruß Ingolf
Anzeige
AW: Zeilen und Spalten einer Tabelle löschen
17.11.2006 17:00:08
Brain
Ja, aber hier ist die Range A1:E6 fest hinterlegt. Im Gegensatz dazu ist meine Tabelle ja höchst dynamisch...
Setz das ein ..
17.11.2006 18:04:29
dem
AW: Setz das ein ..
17.11.2006 21:56:04
Brain
was denn?
AW: Setz das ein ..
18.11.2006 20:17:49
Das
Userbild
AW: Zeilen und Spalten einer Tabelle löschen
20.11.2006 10:24:11
IngGi
Hallo Brain,
... dann machen wir die Zellauswahl ebenso dynamisch

Sub Makro1()
Dim intSpalte As Integer
Dim lngZeile As Long
Charts.Add
ActiveChart.ChartType = xlColumnStacked
With Sheets("Tabelle1")
   intSpalte = .Range("IV1").End(xlToLeft).Column
   lngZeile = .Range("A1").End(xlDown).Row
   ActiveChart.SetSourceData Source:=.Range(Cells(1, 1), _
      Cells(lngrow, intcolumn)), PlotBy:=xlRows
End With
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
End Sub

Gruß Ingolf
Anzeige
AW: Zeilen und Spalten einer Tabelle löschen
20.11.2006 10:53:36
Brain
Hmm... funktioniert nicht ganz. Zuerst dachte ich dass es statt lngrow lngzeile und statt intcolumn intspalte heißen muss. Aber funktioniert trotzdem nicht.
Bevor du dir den Kopf zerbrichst konnte mir am Freitag ingUR in einem anderen Thread helfen:
Option Explicit

Sub SaeulenDiagrammZeichen()
Dim rngDaten As Range
Dim MaxCol As Integer
Dim MaxRow As Long
MaxRow = Cells(Columns("A:A").Find(What:="Gesamt").Row, 1).End(xlUp).Row
MaxCol = Cells(1, 256).End(xlToLeft).Column
Set rngDaten = Range(Cells(1, 1), Cells(MaxRow, MaxCol))
rngDaten.Select
Charts.Add
With ActiveChart
.ChartType = xlColumnStacked
.SetSourceData Source:=rngDaten, PlotBy:=xlRows
.HasAxis(xlCategory, xlPrimary) = True
.HasAxis(xlValue, xlPrimary) = True
.Axes(xlCategory, xlPrimary).CategoryType = xlCategoryScale
End With
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
Range("A1").Select
End Sub

Das funktioniert soweit ganz gut...
Ein Riesendank an dieser Stelle an Beate, IngGi und IngUR!
Grüße
Brain
Anzeige

355 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige