Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
720to724
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
720to724
720to724
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

@ Sepp (Profi-Rat gesucht)

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit anderen Worten
Amateur
schleicht euch, ihr amateurhaften Laiendarsteller. Es reicht, wenn der Herr des Codes diesen Tread betritt.
Gruß
Laie
AW: mit anderen Worten
20.01.2006 20:17:41
Hübi
Hallo Laie,
das hilft mir natürlich ungemein - danke ;-((
Es reicht, wenn der Herr des Codes diesen Tread betritt.
Nach ihm habe ich ja gerufen - das ist IMHO Sepp. Oder irre ich da?
Ein Kniefall ist leider schlecht möglich.
Gruß Hübi
@Hübi! Bin kein Profi! Guckst du im Thread! o.T
20.01.2006 20:19:13
Josef
Gruß Sepp
AW: @Hübi! Bin kein Profi! Guckst du im Thread! o.T
20.01.2006 20:31:32
Hübi
Hallo Sepp,
danke - habe deinen Code getestet - astrein.
Meine laienhafte Vorgehensweise hast du bestimmt gesehen (aber es geht erst einmal). Mein Anliegen war, die zu löschenden Zeilen-Nr in ein Array zu schreiben, um sie dann in der nächsten Schleife zu löschen.
Auch, wenn das nicht die optimalste Lösung ist, würde mich interessieren, wie ich das Array richtig dimensionieren müsste. Ist für mich für´s Verständnis wichtig und jetzt will ich es wissen :-)
Gruß Hübi
Anzeige
AW: @Hübi! Bin kein Profi! Guckst du im Thread! o
20.01.2006 21:41:29
Josef
Hallo Hübi!
Dann würde ich es so machen!
Sub doppelte_loeschen2()
Dim iCol As Integer, i As Long, n As Integer
Dim Zeile() As Long

Application.ScreenUpdating = False
iCol = Selection.Column

Redim Zeile(1000) 'erstmal tausend vorgeben

For i = 1 To Cells(65536, iCol).End(xlUp).Row
  If WorksheetFunction.CountIf(Columns(iCol), Cells(i, iCol)) > 1 Then
    Zeile(n) = i
    n = n + 1
    If n > 1000 Then Redim Preserve Zeile(UBound(Zeile) + 1000) 'neu Dimensionieren wenn nötig
  End If
Next i

Redim Preserve Zeile(n - 1) 'Dimension zurechtstutzen

For i = UBound(Zeile) To 0 Step -1
  Cells(Zeile(i), iCol).EntireRow.Delete
Next i

Application.ScreenUpdating = True
End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: @Hübi! Bin kein Profi! Guckst du im Thread! o
20.01.2006 21:57:05
Hübi
Hallo Sepp,
danke für deine Info. Da habe ich morgen genügend Brot, mich mit den Details zu befassen.
Vielleicht begreife ich ja die Arrays noch ;-)
Wie machst du das bloß?
Gruß Hübi
Kleine Ergänzung!
20.01.2006 22:07:07
Josef
Hallo Hübi!
Kleine Ergänzugng, sonst läufst du auf einen Fehler, wenn keine Doppelten in der Tabelle sind!
Sub doppelte_loeschen2()
Dim iCol As Integer, i As Long, n As Integer
Dim Zeile() As Long

Application.ScreenUpdating = False
iCol = Selection.Column

Redim Zeile(1000) 'erstmal tausend vorgeben

For i = 1 To Cells(65536, iCol).End(xlUp).Row
  If WorksheetFunction.CountIf(Columns(iCol), Cells(i, iCol)) > 1 Then
    Zeile(n) = i
    n = n + 1
    If n > 1000 Then Redim Preserve Zeile(UBound(Zeile) + 1000) 'neu Dimensionieren wenn nötig
  End If
Next i

If n > 0 Then 'Wenn n=0, dann keine Doppelten!
  Redim Preserve Zeile(n - 1) 'Dimension zurechtstutzen
  
  For i = UBound(Zeile) To 0 Step -1
    Cells(Zeile(i), iCol).EntireRow.Delete
  Next i
End If

Application.ScreenUpdating = True
End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Kleine Ergänzung!
20.01.2006 22:22:19
Hübi
Hallo Sepp,
bin schon voll am Schwitzen und Grübeln.
Eine Frage noch am Rande: Ist es Zufall oder Gesetz, dass Hajo´s Code (ca. 4 Minuten nach dir gepostet) deinem veblüffend ähnlich ist (von den anderen Namen mal abgesehen).
Oder gilt: Zwei Schlaue - ein Gedanke - keine andere Lösung möglich?
Danke und Gruß Hübi
AW: Kleine Ergänzung!
21.01.2006 09:17:21
Hajo_Zi
Hallo Hübi,
stellst Du mich an und rundest mein Gehalt auch immer so auf?
48 Sekunden = ca. 4 Minuten
Gruß Hajo
AW: Kleine Ergänzung!
21.01.2006 09:57:06
Hübi
Hallo Hajo,
habe es jetzt mit Excel berechnen lassen (nicht gerundet)
 
 AB
1Sepp20:16:15
2Hajo20:20:01
3Differenz00:03:46
Formeln der Tabelle
B3 : =B2-B1
 

Ist ja schlussendlich auch egal. Verblüffend ist nur die Ähnlichkeit beider Codes.
Gruß Hübi
Anzeige
AW: @Hübi! Bin kein Profi! Guckst du im Thread! o.T
20.01.2006 20:31:47
Hübi
Hallo Sepp,
danke - habe deinen Code getestet - astrein.
Meine laienhafte Vorgehensweise hast du bestimmt gesehen (aber es geht erst einmal). Mein Anliegen war, die zu löschenden Zeilen-Nr in ein Array zu schreiben, um sie dann in der nächsten Schleife zu löschen.
Auch, wenn das nicht die optimalste Lösung ist, würde mich interessieren, wie ich das Array richtig dimensionieren müsste. Ist für mich für´s Verständnis wichtig und jetzt will ich es wissen :-)
Gruß Hübi
AW: alle Datensätze löschen deren Anzahl größer 1
20.01.2006 20:20:01
Hajo_Zi
Hallo Hübi,
ich würde es wahrscheinlich so lösen da erheblich schneller.
Option Explicit

Sub alledoppelteloeschen()
Dim RaZeile As Range
Dim LoLetzte As Long
Dim LoI As Long
LoLetzte = IIf(IsEmpty(Range("A65536")), Range("A65536").End(xlUp).Row, 65536)
'   für Spalte A
For LoI = 1 To LoLetzte
If WorksheetFunction.CountIf(Columns(1), Cells(LoI, 1)) > 1 Then
If RaZeile Is Nothing Then
Set RaZeile = Rows(LoI)
Else
Set RaZeile = Union(RaZeile, Rows(LoI))
End If
End If
Next LoI
If Not RaZeile Is Nothing Then RaZeile.Delete
Set RaZeile = Nothing
End Sub


Anzeige
AW: alle Datensätze löschen deren Anzahl größer 1
20.01.2006 20:36:14
Hübi
Hallo Hajo,
auch dir danke. War ja eigentlich nicht mein Thread - habe aber was gebastelt - wenn auch umständlich.
Mich würde interessieren, wie ich in meinem Laien-Code das Array richtig dimensionieren müsste.
Gruß Hübi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige