30.07.2015, 12:07 (Dieser Beitrag wurde zuletzt bearbeitet: 30.07.2015, 12:37 von WergibtmirRat.)
Hallo @all
Das Thema könnte noch hier other Post reinpassen, hat aber mit Autofill nicht viel zutun
Aus Festplatte C ein Auszug von ca. 100000 Dateien nur MD5-Hash's mit Anfangszeichen "B":
[Bild: 6tiw7s.jpg] Das Bild zeigt einige von 6053 Dateien, daraus resultieren 5568 einzelne Dateien. Der Berechnungsvorgang hat ca. 10min mit dem Makro aus "ListeOhneDuplikate2.xlsm" oben gen. Thread gebraucht. Die im Makro liegende Formel:
Hallo! Ich habe mir tatsächlich die 1,74 MB angetan ... Hash aufsteigend sortieren, in B2 die Formel: =WENN(ODER(A2=A1;A3=A2);"mehrfach";"einfach"), Doppelklick aufs Ausfüllkästchen, Spalte B kopieren, Einfügen Werte
Dauer per Makro:
Code:
Sub Quickie() Dim Start As Double Start = Timer With Tabelle1 .Columns(1).Sort Key1:=.Cells(2, 1), Order1:=xlAscending, Header:=xlYes With .Range("B2:B" & .Cells(Rows.Count, 1).End(xlUp).Row) .Formula = "=IF(OR(A2=A1,A3=A2),""mehrfach"",""einfach"")" .Copy: .PasteSpecial xlPasteValues End With End With MsgBox Timer - Start End Sub
1 Sekunde bei meinem schlappen Notebook.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28 • WergibtmirRat
30.07.2015, 17:04 (Dieser Beitrag wurde zuletzt bearbeitet: 30.07.2015, 17:23 von DbSam.)
Hallo Frank,
vielleicht hilft Dir die Lösung weiter:
Spalte A sortieren in Zelle B1: "Anzahl" in Zelle B2 die Formel: =WENN(A2=A1;B1+1;1) Diese Formel nach unten erweitern (B2 selektieren, Doppelklick in die untere rechte Ecke der Markierung,
Dann Pivottabelle erstellen: [ Bild bitte so als Datei hochladen: Klick mich! ] Klick auf den Pfeil bei Anzahl und dort Wertfeldeinstellungen auswählen. Maximum auswählen. Fertsch.
Anbei eine Beispieltabelle...
Gruß Carsten
Folgende(r) 1 Nutzer sagt Danke an DbSam für diesen Beitrag:1 Nutzer sagt Danke an DbSam für diesen Beitrag 28 • WergibtmirRat
Hi Carsten! War ja auch mein erster Gedanke (im verlinkten Thread). Da die MP3s ja physisch auf diversen Festplatten (mehrfach) vorhanden sind, ist dies hier nicht zielführend. (nicht ganz Ernst gemeint: es sei denn, VBA könnte seine Karteileichen löschen :05: )
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
ja, man sollte genauer lesen... Ich habe meinen Beitrag aktualisiert, allein Duplikate entfernen reicht nicht aus.. Du warst aber schneller mit Deinem Hinweis...
Was ich aber immer noch nicht richtig verstehe: Was will Frank nun genau machen?
(30.07.2015, 16:48)RPP63 schrieb: ... habe mir tatsächlich die 1,74 MB angetan ... Hash aufsteigend sortieren, in B2 die Formel: =WENN(ODER(A2=A1;A3=A2);"mehrfach";"einfach"), Doppelklick aufs Ausfüllkästchen, Spalte B kopieren, Einfügen Werte...1 Sekunde bei meinem schlappen Noteb...
Hallo Ralf, habs noch nicht probiert-machs aber noch.
Ich weiss, der Happen war groß sehr groß, trotzde Danke für's reinschauen Alle Dateien in der Tabelle mit alle Tagfelder bringen es auf einen Wert um die 837 MB Ja und Nein Ja: mehrfach ist schon I.O. , aber ich benötige die Häufigkeit eines Track's Nein: Wenn jede Datei bei identischer MD5-Hash nur "mehrfach" in der Spalte stehen hat, wie solch ich erkennen, wer was wo und wieviel hat
(30.07.2015, 17:04)DbSam schrieb: ...die Lösung ... Spalte A sortieren in Zelle B1: "Anzahl" in Zelle B2 die Formel: =WENN(A2=A1;B1+1;1) Diese Formel nach unten erweitern (B2 selektieren, Doppelklick in die untere rechte Ecke der Markierung,
Dann Pivottabelle erstellen: Klick auf den Pfeil bei Anzahl und dort Wertfeldeinstellungen auswählen. Maximum auswählen...
Hallo Carsten Die Häufigkeitszählung mit Wenn addieren, habe ich auch schon durch.
Was ich erreichen will. Alle Dateien werden eingelesen, mittels Exportdatei im Format *csv an Excel übergeben. Da der Pc das Datenvolumen im Ganzen nicht schlucken kann, wird zum einen nach Pfad sortiert immer ein Teil ausgelesen anschließend in die Liste per copy & paste eingefügt (Speichern) Nächster Durchgang sortiere ich die MD5-Hash pro Festplatte, hier wird direkt die doppelt vorkommenden gezählt ("%_total_files%") Auch hier werden alle Teile in ein Tabellenblatt kopiert. Jetzt hab ich die kompletten Daten in Tabelle1 und die Identnummern in Tabelle2 Nachdem die doppelten gelöscht sind Tab2 kann ich mit Sverweis auf Tab1 jeder Datei in der Spalte Anz. die Addition gleicher MD5 wiedergeben.
Um dem ganzen einen Sinn zu geben, anhand der Filter Spalte MD5 (von A n. Z) & Spalte Anz. (Absteigend) kann nun eine*.m3u erstellt in MP3Tag eingelesen werden. Dort sortiere ich das Erstellendatum - markiere die neueren (wenn zuviel) die dann gelöscht werden, bzw. sind Einzelne Dateien/Alben vorhanden die ich dann in die Sicherungspartitionen kopiere.
Danke für Deine weiterführenden Erläuterungen. Jetzt wird die Sachlage und Dein Anliegen so langsam etwas klarer.
So richtig ganz habe ich Dich leider noch nicht verstanden. Das kann zum einen an der Uhrzeit und meinem schläfrigem Geist oder zum anderen auch an den fehlenden Beispieldateien liegen. Oder auch beides zusammen.
Kannst Du mal bitte ein, zwei reduzierte *.csv Dateien mit Beispieldaten(einzelne, doppelte, dreifache, whatever) hochladen. Ebenso das/die dazugehörige Excelsheet, die Ergebnisdatei und Deine *.m3u. Vielleicht verstehe ich dann Dein Anliegen komplett ohne 'ewiglangehinundherfragerei'.
Meiner Meinung nach vergewaltigst Du Excel ganz heftig. Das ist eigentlich eine Aufgabe für eine Datenbank, Excel ist mMn dafür überfordert. Hast Du einen SQL-Server bei der Hand oder kennst Dich damit aus? (Falls nicht, kann man auch Access dafür nutzen.) Ich kann dann am Sonntagabend mal versuchen etwas zu programmieren, wo sofort Deine *.m3u ausgegeben wird, ohne Excel. Wahrscheinlich gleich eine Exe in .Net, das geht am schnellsten...
Wenn jemand noch eine andere/bessere Idee hat, dann gern. :) Für mich scheidet Excel bei dieser Datenmenge und Sachlage aus.
(31.07.2015, 01:57)DbSam schrieb: ...Kannst Du mal bitte ein, zwei reduzierte *.csv Dateien mit Beispieldaten(einzelne, doppelte, dreifache, whatever) hochladen. Ebenso das/die dazugehörige Excelsheet, die Ergebnisdatei und Deine *.m3u. Vielleicht verstehe ich dann Dein Anliegen...
Hallo Carsten, danke für deine Sachkenntnisse - SQL-Server zwar schon von gehört, aber dachte das ist nichts für mich. Mit Access habe ich es mal versucht, war für mich zu hoch. Access naja - müsste mich mal mehr reinknieen
Hab mal mit der sortierten Pivot (zum ersten Mal) experimentiert, nachdem ich die Einstellungen gefunden habe, sieht's garnicht mal schlecht aus.
Ich könnte mal den Wust in meine Dropbox kopieren mit Link an Dich versteht sich.
- die *.csv (alle Tagfelder ca. 150 Spalten) werden 1:1 übernommen, ergänzend kommen noch 2 Spalten in A & B (lfd.Nr & aus dem Pfad =(links;xy;1) als *.xl* gespeichert
für den Anfang reicht es, wenn Du die *.csv auf ein übersichtliches und per Hand nachprüfbares Maß reduzierst und darin soweit möglich alle in der Realität vorkommende Duplikatsmöglichkeiten per Hand erzeugst. Aus dieser Datei erzeugst Du dann Dein Excelsheet und die Ergebnisdatei *.m3u. - Das wäre dann eine Vorlage zum Nachprogrammieren. Danach kann und sollte man noch zum Test Deine Riesendatei 'durchwursteln'.
Fragen noch: Hat Deine *.csv Datei eine Headerzeile? Oder kann man diese dann im Excelsheet erkennen und auslesen? Duplikatserkennung per Hash und welches Verzeichnis hat Priorität, bzw. gibt es da eine Reihenfolge?
Und ...? Und dann noch...? Naja, wir warten erst einmal auf Deine abgespeckten Daten... :)
Gruß Carsten
PS: Wie letztens geschrieben, ich kann mir das frühestens am Sonntagabend mal anschauen...
(31.07.2015, 16:01)DbSam schrieb: ...Deine *.csv Datei eine Headerzeile? Oder kann man diese dann im Excelsheet erkennen und auslesen? Duplikatserkennung per Hash und welches Verzeichnis hat Priorität, bzw. gibt es da eine Reihenfolge?...mal anschauen...
Hallo Carsten zu 1. Ja alle Csvdateien haben Kopfzeile, hier bei Allen einer Partition
$filename(C:\komplette Liste Datei-Pfad mit MD5.csv,utf-16)"Pos."$char(9)"Datei-Pfad"$char(9)"Pfad"$char(9)"MD5"$char(9)"numerische Zeit"$char(9)"Erstellt am" $loop(%_path%;%_folderpath%)"%_counter%"$char(9)"%_folderpath%"$char(9)"%_path%"$char(9)"%MD5-Hash Audio_D%"$char(9)"%_file_create_datetime_raw%"$char(9)"%_file_create_datetime%" $loopend()
Da fängt die Arbeit nun an per Sverweis die Häufigkeit der Datei zuordnen Aber mit deiner Hilfe bin ich schon dabei. - 1. Formel anwenden - 2. Pivot auswerten, soll heißenden Dateien die Werte (Häuf.) zuordnen Beispieldatei folgt, bin schon fast weg - letzter Dienst