Ich habe an einem VBA-Makro gearbeitet, das die Werte eines Einheitsvektors für jede ausgewählte Linie in der SolidWorks Schnittstelle exportiert, und ich möchte den Wert der Einheit sortieren Vektor, bevor es in Excel geschrieben wird. Ich muss den Excel-Bereich B2 bis D2 sortieren (B2 repräsentiert Teil i des Einheitsvektors, C2 repräsentiert Teil j und D2 repräsentiert Teil k), und der Bereich hängt von der Anzahl der ausgewählten Zeilen ab. Jede ausgewählte Zeile repräsentiert einen Vektor und jeder Vektor repräsentiert eine Zeile in Excel.Sortieren von Daten nach Spaltenwerten mit Excel VBA, absteigend und aufsteigend
Ich möchte sie nach Spalte D sortieren, und dann möchte ich sie mit dem maximalen Wert in Zelle D2, den Mindestwert in Zelle D3, sortieren und es von dort aufsteigend gehen. Es würde zuerst aufsteigen und dann von der zweiten Reihe absteigen.
Also, wenn es vier ausgewählten Linien, würde die D-Säule wie folgt aussehen:
-0,99221 -1 -0,99789 -0,99664
Derzeit sieht es wie folgt aus:
Aber es würde nicht wissen, wie viele Zeilen zuerst sortiert werden mussten. Hier ist der entsprechende Code:
Derzeit gibt mir der Code den Fehler 1004. Ich denke, es ist etwas Kleines, das ist falsch, aber ich bin mir nicht sicher. Wie bestelle ich es in der oben beschriebenen Reihenfolge nach Spalte D?
Private Function WriteToExcel(startRow As Integer, data As Variant, Optional label As String = "") As Boolean
'get the results into excel
With xlWorkbook.ActiveSheet
.Cells(startRow + 2, 2).Value = data(0)
.Cells(startRow + 2, 3).Value = data(1)
.Cells(startRow + 2, 4).Value = data(2)
End With
End Function
Der obige Code ist die Funktion zum Schreiben der Daten in Excel; es ist sehr relevant. Dies geschieht alles in SolidWorks API, so dass die Syntax ein bisschen anders ist.
Hallo Ralph, Die Logik sieht gut aus und ich habe es in meinen Code integriert und auch früher im Text aufgerufen, aber die Excel-Datei wird leer angezeigt, wenn ich sie ausführe. Es ist erwähnenswert, dass ich jeden Vektor 1, 2, 3 in der A-Spalte beschreibe. Ich habe auch die WriteToExcel-Funktion in meinem vorherigen Post bearbeitet, da es sehr relevant ist. Irgendwelche Ideen? Danke, und lassen Sie mich wissen, wenn Sie den gesamten Code benötigen. – nesco88
Der obige Code funktioniert auf Basis der von Ihnen bereitgestellten Beispieldaten wie vorgesehen. Wenn Sie möchten, dass ich andere Daten teste, bitte posten Sie diese zusätzlichen/anderen Testdaten.Wenn Sie den obigen Code in einen anderen Code integriert haben, kann ich nicht sagen, was Sie getan haben oder wie Sie es gemacht haben, und ich kann sicherlich nicht sagen, ob oder warum mein Code nicht mehr wie beabsichtigt in Ihrem Code funktioniert. Wenn Sie möchten, dass wir einen anderen Kontext berücksichtigen, dann veröffentlichen Sie den gesamten Code, den Sie berücksichtigen sollten. Andernfalls testen Sie den obigen Code selbst und Sie werden sehen, dass er mit den gegebenen Testdaten funktioniert. – Ralph
Ich habe es nach ein paar Experimenten zu arbeiten. Ich musste den letzten "Copy" -Befehl in "Cut" ändern, weil eine der Linien zweimal auftauchte, aber ansonsten sieht es gut aus. Ich werde jedoch weiterhin mehr Tests durchführen, danke. – nesco88