Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Doppelte Daten in Spalten entfernen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Doppelte Daten in Spalten entfernen (11475 mal gelesen)
C. Thiel
Mitglied
 


Sehen Sie sich das Profil von C. Thiel an!   Senden Sie eine Private Message an C. Thiel  Schreiben Sie einen Gästebucheintrag für C. Thiel

Beiträge: 442
Registriert: 15.10.2001

ACAD2k2, MDT6 mit aktuellen SP's,
SE V19 SP9 + PM/KM
WIN-XP/SP2 im Novell-Netz
3,4GHz Pentium, 2GB RAM

erstellt am: 12. Sep. 2007 22:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Beispiel.xls.txt

 
Hallo Zusammen,

ich hätt' da mal gern ein Problem. 

Und zwar habe ich eine (für mich) recht große Exceldatei (ca. 2000 Zeilen, 40 Spalten). In dieser befinden sich in den ersten beiden Spalten jeweils Artikelnummer und Artikelbezeichnung. In den nachfolgenden Spalten befinden sich beschreibende Informationen. Da die aber über einen SVERWEIS in die Tabelle gekommen sind, sind da teilweise viele gleiche Beschreibungen bei. Und genau die möchte ich jetzt entfernen.

Ich habe schon nach Lösungen gegoogelt und hier gesucht, aber leider nichts gefunden. Ich habe immer nur Lösungen gefunden wie ich Duplikate Zeilenweise entfernen kann, aber halt nicht Spaltenweise. 

Jetzt hoffe ich ganz stark auf Euch - sonst bedeutet das für mich nämlich seehr viel Handarbeit ...

Ich arbeite mit Excel 2000. Als Beispiel habe ich eine Datei angehangen die mein Problem verdeutlichen soll. Das ist zwar nur auf die schnelle selbst gestrickt, zeigt aber hoffentlich halbwegs klar wo mein Problem liegt.

Für sachdienliche Hinweise würde ich den Finder natürlich mit Us überschütten.

Danke schon einmal im voraus!

MfG

Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Hajo_Zi
Mitglied
Projektant


Sehen Sie sich das Profil von Hajo_Zi an!   Senden Sie eine Private Message an Hajo_Zi  Schreiben Sie einen Gästebucheintrag für Hajo_Zi

Beiträge: 479
Registriert: 26.03.2003

erstellt am: 12. Sep. 2007 23:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für C. Thiel 10 Unities + Antwort hilfreich

Hallo Chris,

vielleicht hilft dies:
Doppelte Löschen
angenommen Deine Daten stehen in A1 bis A????
Bereich markieren = Spalte A anklicken (evtl. eine Leerzeile vorher einfügen)
Daten / Filter / Spezialfilter
keine Duplikate
jetzt kannst du noch einstellen, ob an gleicher Stelle oder woanders placiert; hier also B1 eingeben
Spalte A anschließend löschen
Bei mehreren Spalten, muss die Liste eine Überschrift haben, am besten fett formatiert, dann erkennt sie auch Excel als Überschrift.

Gruß Hajo

[Diese Nachricht wurde von Hajo_Zi am 13. Sep. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

C. Thiel
Mitglied
 


Sehen Sie sich das Profil von C. Thiel an!   Senden Sie eine Private Message an C. Thiel  Schreiben Sie einen Gästebucheintrag für C. Thiel

Beiträge: 442
Registriert: 15.10.2001

ACAD2k2, MDT6 mit aktuellen SP's,
SE V19 SP9 + PM/KM
WIN-XP/SP2 im Novell-Netz
3,4GHz Pentium, 2GB RAM

erstellt am: 13. Sep. 2007 17:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Hajo,

vielen Dank für Deinen Tipp. Leider hat das auch nicht funktioniert (oder ich bin zu blöd dafür). Auf jeden Fall filtert er mir nichts aus. Ich denke das Problem liegt darin das die Duplikate Spaltenweise vorhanden sind und nicht zeilenweise.
Ich experimentiere im Moment damit, die einzelnen Werte in verschiedene Zeilen zu transponieren / pivotieren (?) und dann die Tools die ich gefunden habe darauf anzusetzen.
Mal schauen ob das klappt.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Moderator
Arbeiter ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 13. Sep. 2007 19:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für C. Thiel 10 Unities + Antwort hilfreich

auf die Schnelle einen Tipp zum Kenntlichmachen der Duplikate:

Die Tabelle mit den Werten beginnt in A2, Zeiger auf A2 stellen, bedingte Formatierung / formel ist:

Code:
=ZÄHLENWENN($A2:$G2;A2)>1

Zellehintergrund rot einfärben,
A2 Format übertragen und auf die restlichen Zellen anwenden,

so sind die zellen gekennzeichnet die Duplikate enthalten.

Wenn es wenige sind - von Hand löschen

Löschen automatisch, nur per VBA oder das ganze mit einer Matrixformel in einem 2 Blatt neu aufbauen...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 14. Sep. 2007 07:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für C. Thiel 10 Unities + Antwort hilfreich

Mal eine Idee das ganze per VBA automatisch löschen zu lassen, sehr ausbaufähig und bei größeren Bereichen schnarchlangsam      (das erfüllt also Deine Anfangsbedingungen (2000 Zeilen, 40 Spalten) nicht wirklich)
Wer mag, bastelt das cells.value da raus, das sollte dann schon etwas helfen...
Code:
Option Explicit
'#####  *SCHNARCH*  Nur bis ca 10 Zeilen/Spalten erträgliche Ausführungszeit #####
Public Sub DuplikateInZeilen()
Dim arTempSpalte()  As String
Dim b As Integer
Dim Z As Integer, SA As Integer, SE As Integer, ZA As Integer, ZE As Integer
Dim i As Integer, j As Integer
Dim flag As Boolean
'###hier gibt es im Forum (Hallo Thomas      ) eine Eingabeaufforderung für
SA = 1          'oder z.B. InputBox("Start-SPALTE:" & Chr(10) & "A=1,B=2,...")
SE = 10          'InputBox("End-SPALTE:" & Chr(10) & "A=1,B=2,...")
ZA = 1          'InputBox("Start-ZEILE:")
ZE = 10          'InputBox("End-ZEILE:")
'###
For Z = ZA To ZE                                'Ablauf zeilenweise
    Erase arTempSpalte                          'array löschen, ist wichtig für Schleifenablauf
    ReDim arTempSpalte(0 To SE - SA) As String  'array neu dimensionieren
    i = 0                                      'arrayindex zurücksetzen
    For b = SA To SE                            'array wird waagerecht gefüllt
        flag = False                            'flag zurücksetzen, wichtig für Schleifenablauf
        For j = LBound(arTempSpalte()) To UBound(arTempSpalte())    'Schleife möglichst automatisiert eingrenzen
            'wenn Tabelleneintrag schon im array vorhanden ist: flag auf true setzen
            If LCase(arTempSpalte(j)) = LCase(Sheets(1).Cells(Z, b).Value) Then flag = True
        Next j
        If flag = False Then                    'wenn Tabelleneintrag erstmalig auftritt, schreib ihn ins array
            arTempSpalte(i) = Sheets(1).Cells(Z, b).Value
            i = i + 1                          'arrayindex erhöhen
        End If
    Next b
    i = 0                                      'arrayindex zurücksetzen
    For b = SA To SE
        Sheets(1).Cells(Z, b).Value = arTempSpalte(i)  'und Array zurück in Tabelle schreiben -> bereinigte Zeile
        i = i + 1
    Next b
Next Z
End Sub

[rredit] so ist die Ausführungszeit auch bei größeren Bereichen erträglich, Prinzip ist dasselbe, nur ohne cells.value, daher hab ich mir auch diesmal die Kommentare gespart. Andere Vorschläge bitte kundtun :-)

Code:
Option Explicit
Public Sub DIS()
Dim arQuell()
Dim arTemp() 'As String
Dim a As Integer, b As Integer, i As Integer, iArCount As Integer
Dim EZA As Integer, ES1 As Integer, LZA As Integer, LS1 As Integer
Dim bolDop As Boolean
EZA = 1    'Erste Zeile
ES1 = 1    'Erste Spalte
LZA = 10    'Letzte Zeile
LS1 = 5    'Letzte Spalte
arQuell = Sheets(1).Range(Cells(EZA, ES1), Cells(LZA, LS1)).Value
For a = LBound(arQuell, 1) To UBound(arQuell, 1)
    ReDim Preserve arTemp(1 To UBound(arQuell, 1), 1 To UBound(arQuell, 2))
    iArCount = 1
    For b = LBound(arQuell, 2) To UBound(arQuell, 2)
        bolDop = False
        For i = LBound(arTemp, 2) To UBound(arTemp, 2)
            If arTemp(a, i) <> "" Then If UCase(arQuell(a, b)) = UCase(arTemp(a, i)) Then bolDop = True
        Next i
        If bolDop = False Then
            arTemp(a, iArCount) = arQuell(a, b)
            iArCount = iArCount + 1
        End If
    Next b
Next a
Sheets(1).Range(Cells(EZA, ES1), Cells(LZA, LS1)) = arTemp
End Sub
[/rredit]
------------------
Gruß,
runkelruebe                        Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

C. Thiel
Mitglied
 


Sehen Sie sich das Profil von C. Thiel an!   Senden Sie eine Private Message an C. Thiel  Schreiben Sie einen Gästebucheintrag für C. Thiel

Beiträge: 442
Registriert: 15.10.2001

ACAD2k2, MDT6 mit aktuellen SP's,
SE V19 SP9 + PM/KM
WIN-XP/SP2 im Novell-Netz
3,4GHz Pentium, 2GB RAM

erstellt am: 14. Sep. 2007 15:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ja, genau das war es! Vielen vielen Dank runkelruebe! Einmal den Zellbereich angepasst und laufen lassen - hat zwar etwas gedauert, aber auch nicht unerträglich lange. Und da ich das ja nicht täglich brauche ist das für mich die ideale Lösung.

Vielen Dank noch einmal und Us folgen.

MfG

Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz