2016-04-18 5 views
0

Ich bin neu bei der Codierung und ich muss an einem Excel-Dokument arbeiten, das etwa 40.000 Zeilen und 50 Spalten hat. Ich habe ungefähr 35 Spalten gelöscht, die Spezifikationen haben, die für mich keine Rolle spielen.Excel: Vergleichen Sie mehrere Spalten (etwa 10) Werte und markieren Sie nur die erste, die anders ist

In den ersten 14 Spalten gibt es Werte, die verschiedene Produkte definieren. Diese Definitionen können Zahlen als Spezifikation für die Leistungs- oder Seriennummer eines Produkts oder Buchstaben als Spezifikation für den Namen oder die Herkunft des Produkts sein. Ich habe alle meine Spalten mit einem personalisierten Filter sortiert, zuerst sortiert nach Spalte 1, dann Spalte 2 und so weiter ... In der 15. Spalte gibt es Daten, die für das Datum stehen, an dem das Produkt war zuerst gestartet.

Was ich versuche zu tun ist, um alle ersten 14 Spalten in jeder Zeile zu vergleichen und nur die eine, die zuerst gestartet wurde. Da ich 35 Spalten gelöscht habe, sind viele der Produkte identisch (sie unterscheiden sich durch Spezifikationen in anderen Spalten). Ich habe versucht, ein Makro aufzuzeichnen oder Formeln in der 16. Spalte zu verwenden, um einen Wert zurückzugeben, wenn die Werte in den Spalten nicht übereinstimmen, aber es immer mit dem ersten Wert vergleicht (erste Zeile) und ich nirgends zu kommen.

Würde es mir etwas ausmachen, mir ein paar Tipps zu geben, wie ich dahin komme?

Vielen Dank viel für Ihre Hilfe (und sorry, wenn es irgendwelche englischen Fehler waren)

+0

Wenn ich richtig verstehe, ist die Bedingung, die entscheidet, welches Produkt in die gleiche "Kategorie" fällt, die Werte in den ersten 14 Spalten. Ich würde dann ein Makro vorschlagen, das die Liste Schritt für Schritt nach jeder möglichen Kombination der 14 Spalten filtert, nach dem Datum sortiert (aufsteigend) und dann das oberste Datum auswählt. Aber Sie werden ein solches Makro schreiben müssen. Es gibt keine Möglichkeit, es aufzuzeichnen. Die Aufzeichnung könnte Ihnen jedoch bei den grundlegenden Operationen helfen. –

+0

Ja, das ist es, wenn die Werte in den ersten 14 Kategorien gleich sind, dann vergleiche ich die Daten und wähle nur die ältesten aus. OK Ich werde ein Makro versuchen, indem ich ein Beispiel aufnehme und zuerst filterig versuche und dann das älteste Datum auswähle. Danke – lillinoa

+0

Ich habe eine Mischung aus VBA und Formeln mit dem IF (AND (...)) und Rendering-Werte von 1 oder 0 je nachdem, ob die Spalten übereinstimmten oder nicht. Ich denke, es funktioniert jetzt thks :) – lillinoa

Antwort

1

Am Ende habe ich eine Lösung gefunden, die (wie ich diese Excel-Dateien in mehrere wiederholen müssen) wäre: Bilanz ein Makro für die Filterung, etwa so:

ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _ 
     Clear 
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _ 
     Add Key:=Range(_ 
     "Tableau1[Car]") _ 
     , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _ 
     Add Key:=Range("Tableau1[Model]"), SortOn:= _ 
     xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _ 
     Add Key:=Range("Tableau1[Motor]"), SortOn:= _ 
     xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _ 
     Add Key:=Range("Tableau1[Carburant]"), SortOn:= _ 
     xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _ 
     Add Key:=Range(_ 
     "Tableau1[Techno]"), SortOn:= _ 
     xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 

... und so weiter!

Dann habe ich eine neue Spalte erstellt, so dass es entweder 1 oder 0 aussagen würde, ob alle Zeilen identisch mit einer Formel IF(AND(C2=C3;D2=D3; ... ; O2=03);1;0) waren und schließlich habe ich in einer letzten Spalte eine Formel eingegeben, die besagt, dass es eine 0 gab das linke, das Datum dieser Zeile sollte berücksichtigt werden, wenn nicht das Datum 01.01.1900 erscheinen würde. Dann, indem ich diese Reihe filterte und das 1900 Datum herausnahm, erhielt ich, was ich wollte.

Ich hoffe, es ist klar.