Supportnet Computer Supportnet Games Supportnet Kochen Explipedia
Login: guestBesucher online: 348
Supportnet Computerforum
SUPPORT
Home
Forum
Tipps & Infos
Blitz Angebote
Members
Hilfe
Video

TOP THEMEN
SSD Test
Alles über SSDs

Android Tipps
iPad Tipps
Google Tipps
Windows 8 FAQ
Windows 7 FAQ
E-Mail FAQ
Netzwerk FAQ
Festplatten FAQ
Datenrettung FAQ
Bildbearbeitung FAQ

Top iPhone Apps
Computer Einsteiger
Die 5 besten...
Explipedia
Themen
Direktlinks

Neue Einträge
News einsenden News einschicken
Tipps einsenden Tipp einschicken

SN-LINKS

Suche
Befreundete Seiten
Top Seiten

Supportnet/Forum/Tabellenkalkulation



Supportnet/Forum/Tabellenkalkulation
von Sunnykind vom 18.04.2017, 13:24 Diese Seite den Supportnet Favoriten hinzufügen  Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden


Duplikate mit Bedingung durch Makro entfernen

 (313 Hits)

Ich habe eine Tabelle in der die Werte der Spalte A durch eine Formel von einer anderen Tabelle übernommen werden, sobald dort ein Wert hinterlegt wird.
Wenn ich nun in meiner Tabelle Duplikate der Spalte A entfernen will um doppelte Werte zu löschen, sind auch die hinterlegten Formeln weg.
Wie kann ich in ein Makro einbauen, dass die Werte nur gelöscht werden, wenn dort ein Wert (in dem Fall eine 4 stellige ID-Nummer) hinterlegt ist.


Antwort schreiben 50 Bonuspunkte

Antworten...
Antwort 1 von Nighty__ vom 18.04.2017, 14:24 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Sunnykind .-)

Formeln sind nicht so sehr mein gebiet .-)
Ich kann dir daher nur das anbieten!
Vielleicht reicht es Ja ^^
Daten ohne Doppelte/Nullwerte

Gruss Nighty

Quelle
6 Zeile Worksheetname anpassen
Spalte A wirde erfasst,gegebenenfalls anpassen

Ziel
10 Zeile Worksheetname anpassen
Ausgabe Spalte B,gegebenenfalls anpassen

Sub KeineDoppelten()
    Call EventsOff
    Dim DeinArr As Variant
    Dim objDic As Object
    Dim ZeilenIndex As Long
    Set objDic = CreateObject("scripting.dictionary")
    DeinArr = Worksheets("Tabelle1").Range("A2:A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row)
    For ZeilenIndex = 1 To UBound(DeinArr)
        If DeinArr(ZeilenIndex, 1) > 0 Then objDic(DeinArr(ZeilenIndex, 1)) = 1
    Next
    Worksheets("Tabelle1").Range("B2").Resize(objDic.Count) = WorksheetFunction.Transpose(objDic.keys)
    Set objDic = Nothing
    Call EventsOn
End Sub

Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub

Public Sub EventsOn()
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With
End Sub


Antwort noch nicht bewertet
Antwort 2 von Nighty__ vom 18.04.2017, 14:31 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Community .-)

Der Spezialfilter(Kopie nur sichtbare Zellen) ist natürlich um längen schneller,doch er behandelt keine Nullwerte!

Gruss Nighty


Antwort noch nicht bewertet
Antwort 3 von Nighty__ vom 18.04.2017, 14:36 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Sunnykind .-)

Hab da noch andere Ideen!
Sind die Formeln alle gleich?
Poste mal 2 aufeinanderfolgende Formeln
Vielleicht können wir auch die Formeln zurückkopieren

Gruss Nighty


Antwort noch nicht bewertet
Antwort 4 von Sunnykind vom 18.04.2017, 14:58 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Nighty,
danke für deine Antwort. Leider ist es nicht das was ich brauche.

Ich versuche es mal anders zu erklären.

Tabelle 1

A B C D
ID Datum Abschluss Vertrag Anzahl Besuche
1001 09.01.2017 ja 2
1002 12.02.2017 nein 1
1001 13.05.2017 ja 2
Formel Formel Formel Formel


In Tabelle 2 liegen die Werte für die Formeln. Dort will ich nichts ändern.

Ich möchte nun per Makro in Tabelle (Spalte A) alle Zeilen auf doppelte Werte durchsuchen und die entsprechende Zeile löschen.
Mein Problem ist, dass in den noch nicht gefüllten Zeilen Formeln hinterlegt sind. Diese werden bei mir auch als doppelte Werte erkannt und die Zeilen werden auch gelöscht.

Die Formeln in Spalte A: ='Daten Besuche'!A9
D: = =SUMMENPRODUKT(('Daten Besuche'!A:A=A23)*('Daten Besuche'!D:D="Besuch"))


Antwort noch nicht bewertet
Antwort 5 von Nighty__ vom 18.04.2017, 17:15 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Sunnykind .-)

Muss ich mir Gedanken darüber machen,sollte ja auch schnell sein!

Gruss Nighty


Antwort noch nicht bewertet
Antwort 6 von Nighty__ vom 19.04.2017, 09:49 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Sunnykind .-)

Über Cells zugriffe einfach, aber zu langsam!

Ich glaub ich hab da schon einige Ideen,gib mir noch bisl zeit

Gruss Nighty


Antwort noch nicht bewertet
Antwort 7 von Nighty__ vom 20.04.2017, 14:30 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Sunnykind .-)

Die Dic Object Idee scheiterte an meiner alten Excel Version!
Dann eine andere Idee .-)

Gruss Nighty

Probier mal!

Vorraussetzung
Keine Nullwerte,keine leeren Zellen
Formeln ohne Werte müssen 0 zurückgeben,somit können die Formeln schnell lokalisiert werden

Wenn es so machbar ist für Dich .-)

Sub KeineDoppelten()
    Dim Afilter As Object, Sfilter As Object, Delfilter As Object
    Worksheets("Tabelle1").Range("A1").AutoFilter Field:=1, Criteria1:="<1"
    Worksheets("Tabelle1").Rows(1).Hidden = True
    Set Afilter = Worksheets("Tabelle1").AutoFilter.Range.SpecialCells(xlCellTypeVisible)
    Worksheets("Tabelle1").Range("A1").AutoFilter
    Afilter.EntireRow.Hidden = True
    Worksheets("Tabelle1").Columns("A:A").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    Set Sfilter = Worksheets(1).Cells.SpecialCells(xlCellTypeVisible)
    Worksheets("Tabelle1").Columns("A:A").AdvancedFilter Action:=xlFilterInPlace, Unique:=False
    Afilter.Rows.Hidden = True
    Sfilter.Rows.Hidden = True
    Set Delfilter = Worksheets("Tabelle1").Cells.SpecialCells(xlCellTypeVisible)
    Afilter.Rows.Hidden = False
    Sfilter.Rows.Hidden = False
    Delfilter.Delete Shift:=xlUp
    Set Afilter = Nothing
    Set Sfilter = Nothing
    Set Delfilter = Nothing
End Sub


Antwort noch nicht bewertet
Antwort 8 von Nighty__ vom 20.04.2017, 15:07 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Sunnykind .-)
Statt Rückgabewert einer Formel=0
Ginge auch Rückgabewert einer Formel=False
Falls es dir besser passen würde .-)

Ersetze die dritte Zeile
Worksheets("Tabelle1").Range("A1").AutoFilter Field:=1, Criteria1:="<1"

Durch
 Worksheets("Tabelle1").Range("A1").AutoFilter Field:=1, Criteria1:=False


Gruss Nighty


Antwort noch nicht bewertet




Hinweis
Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum.

MACHEN SIE IHRE WEBSITE ATTRAKTIVER
Sie haben eine eigene Website und wollen Ihre Besucher auf den Supportnet-Service aufmerksam machen? Kopieren Sie einfach den Quellcode in Ihre Seite und jeder Besucher Ihrer Seite kann direkt auf die Supportnet-Datenbank zugreifen.

My Supportnet


SUCHE

Gruppen im Forum
Betriebsysteme
Software
Hardware
Netzwerk
Programmierung
Sonstiges

Impressum © 1997-2015 SupportNet
Version: supportware 1.8.230E / 18.10.2010, Startzeit:Tue Oct 17 18:17:53 2017