Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
864to868
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
864to868
864to868
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Excel-Liste verkürzen (von 40tsd auf 20 Zeilen)
24.04.2007 22:25:21
40tsd
Hallo,
nachdem ich schon mal das Problem geschildert habe und leider keine befriedigende Lösung dabei war, stelle ich nochmals die Frage (Beispiel ist diesmal beigefügt):
Wie kann ich aus einer großen Excelliste (ca. 40.000 Zeilen) die aus ca. 20 verschiedenen unterschiedlichen Positionensblöcken besteht (ca. 30 verschiedene Positionen) nur immer die erste Zeile abgreifen, der Rest kann also eliminiert werden. Aus den 40.000-Zeilen-Liste soll also eine Liste mit nur 20 Zeilen entstehen. Bitte achtet darauf, dass etwaige Lösungsvorschläge auch bei Dateien mit 40.000 Zeilen noch zufriedenstellend funktionen und den Rechner nicht stundenlang beschäftigen sollten.
Viele Grüße
Bernd

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel-Liste verkürzen (von 40tsd auf 20 Zeilen
25.04.2007 08:59:53
40tsd
Hallo Bernd,
schreibe in die Zelle I2 die Formel =WENN(A2A1;"x";"") und kopiere sie ganz nach unten.
Dadurch wird immer in der ersten Zeile nach dem Wertewechsel ein x eingetragen.
Filtere mit dem Autofilter nach x und kopiere das Ganze in eine neue Tabelle oder in einen anderen Bereich derselben Tabelle.
Gruß
Heinz

AW: Excel-Liste verkürzen (von 40tsd auf 20 Zeilen)
24.04.2007 22:47:00
40tsd
Hi,
welche Verarbeitungszeit wäre denn angemessen?
mfg Gerd

AW: Excel-Liste verkürzen (von 40tsd auf 20 Zeilen)
24.04.2007 22:53:00
40tsd
Hallo Bernd,
probier mal.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub Liste()
Dim objSh As Worksheet
Dim vTmp As Variant, rng As Range
Dim lngR As Long

On Error GoTo ErrExit
GMS

With Sheets("Tabelle1") 'Quelltabelle - anpassen
    vTmp = .Range("A1:H" & .Cells(Rows.Count, 1).End(xlUp).Row)
    
    Set rng = .Rows(1)
    
    For lngR = 2 To UBound(vTmp, 1)
        If vTmp(lngR, 1) <> vTmp(lngR - 1, 1) Then
            Set rng = Union(rng, .Rows(lngR))
        End If
    Next
End With

On Error Resume Next
Set objSh = Sheets("Liste")
If objSh Is Nothing Then
    Set objSh = Worksheets.Add
    objSh.Name = "Liste"
    Err.Clear
End If
On Error GoTo ErrExit

objSh.Cells.Clear

rng.Copy objSh.Range("A1")

ErrExit:
GMS True
Set objSh = Nothing
Set rng = Nothing
End Sub

Sub GMS(Optional ByVal Modus As Boolean = False)

With Application
    .ScreenUpdating = Modus
    .EnableEvents = Modus
    .DisplayAlerts = Modus
    .EnableCancelKey = IIf(Modus, 1, 0)
    .Calculation = IIf(Modus, -4105, -4135)
    .Cursor = IIf(Modus, -4143, 2)
End With

End Sub

Gruß Sepp

Anzeige
AW: Excel-Liste verkürzen (von 40tsd auf 20 Zeilen
24.04.2007 22:55:23
40tsd
Hallo,
in eine Hilfsspalte: =zählenwenn(a$1:A1;A1)
runterkopieren, nach 1 filtern und alle Zeilen löschen.
Oder nach 1 filtern und in einen anderen Bereich kopieren.
Gruß aus’m Pott
Udo

noch ein Code
24.04.2007 23:23:00
Uduuh
Hallo,
ohne Rückfrage, Kriterium ist die Spalte der markierten Zelle. Vorsicht also!

Sub doppelte_loeschen2()
Dim iCol As Integer, i As Long
Application.ScreenUpdating = False
iCol = Selection.Column
For i = Cells(65536, iCol).End(xlUp).Row To 1 Step -1
If WorksheetFunction.CountIf(Columns(iCol), Cells(i, iCol)) > 1 Then
Cells(i, iCol).EntireRow.Delete
End If
Next i
Application.ScreenUpdating = True
End Sub


Gruß aus’m Pott
Udo

Anzeige
AW: Excel-Liste verkürzen (von 40tsd auf 20 Zeilen)
24.04.2007 23:01:17
40tsd
Hallo Bernd,
mit diesem Code von Uwe Küstner geht es sehr schnell: Duplikate löschen spezial
musst nur Zeile 1 statt der vorgegebenen Zeile 2 in der InputBox eingeben.
Gruß,
Beate

AW: Excel-Liste verkürzen (von 40tsd auf 20 Zeilen)
25.04.2007 01:38:17
40tsd
Hallo#
das sollte einigermaßen schnell gehen:
(hab ich glaube ich auch schon mehrfach hier gepostet)
Da deine Daten ja schon sortiert sind, würde ich auf ne Löung mit ZählenWenn verzichten, weil das bei großen Datenmengen langsam wird.
Wichtig ist das sortieren bevor gelöscht wird, das bringt Speed.

Sub Duplikate_löschen()
Dim Ende As Long
Ende = Cells(65536, 1).End(xlUp).Row
Columns(1).Insert
With Range("A2:A" & Ende)
.FormulaR1C1 = "=if(r[-1]c[1]=rc[1],true,row())"
.Formula = .Value
.CurrentRegion.Sort Key1:=Cells(2, 1), order1:=xlAscending, header:=xlYes
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Clear
End With
Columns(1).Delete
End Sub


Anzeige
AW: Excel-Liste verkürzen (von 40tsd auf 20 Zeilen
25.04.2007 08:52:43
40tsd
Hallo Daniel,
Dein Makro ist wirklich rasend schnell und funktioniert perfekt!
Danke Dir und auch an den anderen für die Unterstützung. Auch die anderern Lösungen kann man gewinnbringend einsetzen!
Vielleicht noch eine Zusatzfrage: Könnte man das Makro so anpassen, dass bei 2-3 Positionen, der Positionsname ist bekannt, statt der 1. Zeile die 2. Zeile abgegriffen wird?
Viele Grüße
Bernd

AW: Excel-Liste verkürzen (von 40tsd auf 20 Zeilen
25.04.2007 21:24:47
40tsd
Hi
im prinzip ist mit dieser Methode alles Denkbar, was mit einer Formel zu berechnen ist, die in die Zeilen, die gelöscht werden sollen, einen Wahrheitswert reinschreibt und in die Zeilen, die stehenbleiben sollen, irgend was anderes (idealerweise die ZeilenNr, dann bleibt die Sortierung erhalten.
da kannst du auch selber direkt in Excel ein bisschen Rumprobieren, welche Formeln das gewünschte Ergebnis bringen.
wenn du dann dir richtige Formel gefunden hast, selekitierst du die Zelle, wechselst in den Editor ins direktfenster und gibt dort "?selection.formulaR1C1" ein.
Dann hast du den Text, den du an der entsprechenden Stelle ins Makro einfügen musst.
Die das einzige was du beachten musst, wenn die Formel Anführungszeichen enthält, müssen diese im Quellcode verdoppelt werden.
Beispiel: Wenn alle Zeilen gelöscht werden sollen, deren Zellinhalt in der 1. Spalte "XXX" ist, dann muß der Code dazu so aussehen:

.FormulaR1C1 = "=if(RC[-1]=""XXX"",true,row()"


Gruß, Daniel

Anzeige
AW: Excel-Liste verkürzen (von 40tsd auf 20 Zeilen
26.04.2007 23:50:19
40tsd
Hallo Daniel,
nochmal vielen Dank für die Ergänzung.
Gruß
Bernd

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige