Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1888to1892
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

CNC-Programm in Spalten sortieren

CNC-Programm in Spalten sortieren
18.07.2022 07:38:20
Urs
Hallo,
ich möchte CNC-Programme ins EXCEL einlesen und dann die einzelnen Werte (G-Codes, XYZ-Achswerte, etc) in einzelnen Spalten sortieren.
Also alle G-Codes, X-Werte, Y-Werte, Z-Werte etc, untereinander in derselben Spalte
Vorher:
G98 G1 X-1.329 F250.
X-1.286 Y3.026 Z-1.766 C27.254
X-1.179 Y3.584 Z-1.06 C28.453
X-1.019 Y4.198 Z-0.324 C29.998
X-0.806 Y4.82 Z0.443 C31.964
...
Nachher:
G98 G1 X-1.329 F250.
X-1.286 Y3.026 Z-1.766 C27.254
X-1.179 Y3.584 Z-1.06 C28.453
X-1.019 Y4.198 Z-0.324 C29.998
X-0.806 Y4.82 Z0.443 C31.964
...
So könnte ich dann die Spalten einzeln verändern. (z.B. alle Werte der X-Achse verdoppeln, halbieren, Werte dazu rechnen, Vorzeichen umkehren, etc.)
Habt ihr mir da ein Ansatz, wie ich da am besten vorgehe?
Besten Dank im Voraus.
Beste Grüsse
Urs

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CNC-Programm in Spalten sortieren
18.07.2022 07:43:29
Oberschlumpf
Hi Urs,
wo is denn zwischen vor- und nachher der Unterschied?
Warum zeigst du vor- und nachher nicht mal per Upload in einer Bsp-Datei?
Ciao
Thorsten
AW: CNC-Programm in Spalten sortieren
18.07.2022 08:24:27
Oberschlumpf
haha
sorry, dass ich lache - aber DAS (in Datei) sieht doch GANZ ANDERS aus, als deine vorherigen Darstellungsversuche.
So, hab mir deine Dateien angeschaut, und hab mir natürlich auch darüber Gedanken gemacht - dabei sind Fragen entstanden:
1. muss dein "Nachher" genau so aussehen?
Diese Frage ist nicht ironisch gemeint!
Oder könnte man die Werte auch so verteilen, wie in meiner Bsp-Datei?
https://www.herber.de/bbs/user/154221.xlsx
In Tabelle 1 = dein vorher + dein nachher
In Tabelle 2 = meine Idee
jeder Wert beginnt ja mit einem Buchstaben.
Also hab ich alle Werte mit A in Spalte A gelegt
...alle Werte mit B in Spalte B gelegt
...
...alle Werte mit G in Spalte G gelegt
...
...alle Werte mit Z in Spalte Z gelegt
Somit hättest du auch alles geordnet.
Klar, einige Spalten sind jetzt leer - aber die Spalten könntest du ja ausblenden
Wenn das so ok wäre, gib Antwort - ich kann das dann so programmieren, dass du mit nur 1 Klick alles so geordnet bekommst.
2. Wenn aber "dein nachher" genau so aussehen muss, wie du es zeigst, dann verrat mir/uns bitte dein Vorgehen, oder Muster, oder Grund, wieso es so aussehen muss?
mit deinem jetzigen "Nachher" wüsste ich nur, dass ich nach deiner Vorgabe jeweils eine bestimmte Anzahl an Spalten dazwischen schieben muss.
Aber was ist, wenn in einer neuen CNC-Werteliste ganz andere Buchstaben enthalten sind? WO müssen DIE dann platziert werden?
Anzeige
AW: CNC-Programm in Spalten sortieren
18.07.2022 08:52:17
Urs
Ich akzeptiere deine Lacher....hab ja nicht bemerkt, dass es meine Leerzeichen zur provisorischen Formatierung gelöscht hat.
Danke für deinen ersten Input. befriedigt mich aber nicht so ganz.
Die Reihenfolge sollte eingehalten werden. Also zuerst 3 Spalten mit den möglichen G-Codes, dann X, dann Y, dann Z,....
Ich stelle mir das so vor:
Abfrage in jeder Zeile, Spalte um Spalte, zur Ermittlung des ersten Zeichens.
Wenn G, dann verschiebe in Spalte AA
Wenn (nochmals) G, verschiebe in Spalte AB (bis 3x möglich)
Wenn X, verschiebe in Spalte AD
Wenn Y, verschiebe in Spalte AE
....
Am Schluss kann ich die Spalten A bis Z löschen, so hab ich dann nur noch das neu gegliederte Programm
Natürlich können je nach Programm noch einige Werte mehr dazu kommen (informativ eine Auflistung, nicht komplett):
N (Satznummerierung)
G (Wegbedingungen, bis 3)
X,Y,Z (Lineare Koordinaten)
A,B,C (Schwenkachsen)
I,J,K (inkrementale Achsen, Kreiszentrumkoordinaten)
R (Radius, Sicherheitsebene Bohren)
U,V,W (Hilfsachsen)
D,H (Werkzeugkorrektur-Register)
K (Hilfswerte)
Q (Parameterwerte)
F (Vorschub)
S (Spindeldrehzahl)
M (Steuercodes)
Besten Dank für deine Tipps.
Beste Grüsse
Urs
Anzeige
AW: warum immer nur "häppchenweise" Infos ...
18.07.2022 09:44:13
neopa
Hallo Urs,
... stelle doch einfach mal eine Datei auf, in dem Du in einen Tabellenblatt "nachher" alle möglichen Spalten mit deren eineindeutigen Kennbuchstaben und der Reihenfolge nach listest und nach welchen Kriterien welcher G-Wert in "vorher" welcher G-Spalte in "nachher" zugeordnet werden muss bzw. kann.
Gruß Werner
.. , - ...
AW: warum immer nur "häppchenweise" Infos ...
18.07.2022 10:09:05
Urs
Hallo Werner,
Bei CNC-Programmen ist eine gewisse Reihenfolge der Parameter vorgegeben.
Anbei noch ein generelles Beispiel.
https://www.herber.de/bbs/user/154223.xlsx
Besten Dank für deine Inputs.
Beste Grüsse
Urs
Anzeige
AW: CNC-Programm in Spalten sortieren
18.07.2022 09:48:18
Oberschlumpf
so, ich war (mit VBA :-) ) nicht ganz untätig, guckst du...
https://www.herber.de/bbs/user/154222.xlsm
nun ist alles nach "Spaltenwunsch" aufgeteilt
aber ich befürchte, dass wirklich alles SO aussehen MUSS, wie von dir in deinem nachher gezeigt - das heißt, wo im "nachher" Leerzeilen/Zellen sind, müssten auch in meiner neuen Datei leere Zeilen/Zellen sein, oder? - und eben besonders die G-Werte = wenn vorher in der selben Zeile, dann auch im nachher in der selben Zeile, oder?
na ja, zumindest werden schon mal deine Spaltenwünsche berücksichtigt.
Oder reicht das vielleicht doch schon so, wie in neuer Datei?
Anzeige
AW: CNC-Programm in Spalten sortieren
18.07.2022 10:31:51
Urs
Ok, habs getestet.
Die Sortierung auf die Spalten klappt wunderbar. Aber wie du befürchtet hast, muss auch die "Zeilenlogik" beibehalten werden.
Jetzt wird der Wert einfach in die nächste freie Zeile der entsprechenden Spalte geschrieben, und das ist falsch.
Der Wert muss in derselben Zeile geschrieben werden. Die ggf. leeren Zellen oberhalb müssen bestehen bleiben.
Jede Zeile ist ein NC-Satz, der als Ganzes abgearbeitet wird.
Beste Grüsse
Urs
AW: CNC-Programm in Spalten sortieren
18.07.2022 11:05:20
Urs
Ich habe mal selber in der Formel die Ausgabezeile angepasst.
Cells(lloRow.... statt lloRNext
Dann scheint zu klappen. :-)
teste mal ein bisschen weiter.
Besten Dank!!!
Beste Grüsse
Urs
Anzeige
AW: auch nachgefragt ...
18.07.2022 09:08:19
neopa
Hallo Urs,
... vor allem Dein Datenwert in vorher!B10 "tanzt völlig aus der aus der Reihe". Ohne diesen sowie mit einer etwas anderen Spaltenanordnung in "nachher" könnte ich Dir eine relativ einfache Lösung ganz ohne VBA und ohne Formel aufzeigen. Mit meiner momentanen Lösung würde der Wert: vorher!B10 ("G1")
in "nachher" fehlen. Würde Dir eine solche "Lösung" (Spalten aufsteigend sortiert) schon reichen?
Diese sieht momentan so aus:
Arbeitsblatt mit dem Namen '1000_nachher'
 ABCDEFGHI
1CFGMSTXYZ
2  G0     Z-1.
3     T0801   
4   M80S3=1000    
5C26.358 G0      
6  G19   X25.618Y2.604 
7        Z-2.412
8      X8.558  
9 F250.G98   X-1.329  
10C27.254     X-1.286Y3.026Z-1.766
11C28.453     X-1.179Y3.584Z-1.06
12C29.998     X-1.019Y4.198Z-0.324
13C31.964     X-0.806Y4.82Z0.443
14C34.511     X-0.539Y5.405Z1.255
15C107.222     X1.168Y11.06Z29.409
16      X4.168  
17  G0   X29.74  
18   M82     
19C0.000 G0      
20   M2     
21   M99     
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Gruß Werner
.. , - ...

Anzeige
AW: auch nachgefragt ...
18.07.2022 09:23:10
Urs
Hallo Werner, vielen Dank für deinen Input.
Leider nicht ganz befriedigend. Siehe Antwort an "Oberschlumpf" vor paar Minuten.
Beim CNC-Code sollte die Reihenfolge der Parameter beibehalten werden. Zudem sind pro Zeile bis 3 G-Codes möglich. (Alle anderen kommen in der Regel nur einmal vor)
Beste Grüsse
Urs
AW: Deine hier noch getroffene Aussage, ...
18.07.2022 09:46:56
neopa
Hallo Urs,
... wonach "Alle anderen kommen in der Regel nur einmal vor" macht aber eine geregelte Auswertung von vornherein unmöglich.
Gruß Werner
.. , - ...
AW: eine VBA-freie Lösung ...
18.07.2022 17:42:07
neopa
Hallo Urs,
... die auch relativ einfach anpassbar ist, wäre folgende Power Query (PQ) - Lösung.
Der einfacheren Wiedergabe hier im Forum wegen, hab ich die Datentabellen für "vorher", Zielvorgabe" und "Ergebnis" in der nachfolgenden Datei lediglich in verschiedenen Tabellenblättern bereitgestellt bzw. ermittelt. Siehe: https://www.herber.de/bbs/user/154237.xlsx
Bei zusätzlichen oder neuen Daten müssen diese lediglich in "vorher" ergänzt werden (Beachte: Sämtliche Daten müssen in Bestandteil von tab_vorher sein. Wenn das gewährleistet ist, bedarf es lediglich einer Tastenkombination oder der Betätigung eines Aktualisierungsbuttons, um die entsprechende Ergebnistabelle zu erhalten.
Natürlich kann die Ergebnsitabelle auch in einer eigenständigen Datei erstellt werden. Mehr zu PQ sieh z.B. mal hier: https://excelhero.de/power-query/power-query-ganz-einfach-erklaert/
Gruß Werner
.. , - ...
Anzeige
AW: eine VBA-freie Lösung ...
19.07.2022 12:06:00
Urs
Vielen Dank für deine Inputs. Die Power Query-Möglichkeiten kenne ich noch nicht. Werde mich aber anhand deines Beispiels mal damit befassen.
AW: gerne, lohnt sich mit PQ bekannt zu machen owT
19.07.2022 13:21:58
neopa
Gruß Werner
.. , - ...
AW: CNC-Programm in Spalten sortieren
18.07.2022 07:47:32
Urs
Sorry, die Formatierung im "Nachher"-Bereich wurde ignoriert.
ich versuchs nochmal: ( / = Spaltenunterteilung)
G98/G1/X-1.329 / / / F250.
/ / X-1.286 / Y3.026 / Z-1.766 / C27.254
/ / X-1.179 / Y3.584/ Z-1.06 / C28.453
/ / X-1.019 / Y4.198 / Z-0.324 / C29.998
/ / X-0.806 / Y4.82 /Z0.443 /C31.964
Anzeige
AW: CNC-Programm in Spalten sortieren
18.07.2022 14:42:13
Daniel
Hi
hier mal ein VBA-Code.
die Rohdaten müssen im Blatt "CNC-Rohdaten" liegen.
eingefügt werden sie in das Blatt "Tabelle1".
im Blatt Tabelle1 müssen die beiden Überschriftenszeilen mit den Buchstaben in Zeile 1 vorhanden sein.
das Makro bricht ab, wenn der Code mit einem Buchstaben beginnt, der nicht in Zeile 1 definiert ist.

Sub CNC_Rohdaten_umwandeln()
Dim arrRoh
Dim arrÜB
Dim arrErg
Dim z As Long
Dim s As Long
Dim spErg As Variant
arrRoh = Sheets("CNC-Rohdaten").UsedRange.Value
arrÜB = Sheets("Tabelle1").UsedRange.Rows(1).Value
ReDim arrErg(1 To UBound(arrRoh, 1), 1 To UBound(arrÜB, 2))
For z = 1 To UBound(arrRoh, 1)
For s = 1 To UBound(arrRoh, 2)
If arrRoh(z, s)  "" Then
spErg = Application.Match(Left(arrRoh(z, s), 1), arrÜB, 0)
If IsError(spErg) Then
MsgBox "für den Befehl " & arrRoh(z, s) & " konnte keine Spalte gefunden werden!"
Exit Sub
ElseIf Left(arrRoh(z, s), 1) = "G" Then
For spErg = spErg To spErg + 2
If arrErg(z, spErg) = "" Then Exit For
Next
If arrÜB(1, spErg)  "G" Then
MsgBox "zu viele G-Befehle in Zeile " & z
Exit Sub
End If
End If
arrErg(z, spErg) = arrRoh(z, s)
End If
Next
Next
Sheets("Tabelle1").Range("A3").Resize(UBound(arrErg, 1), UBound(arrErg, 2)) = arrErg
End Sub

Anzeige
AW: CNC-Programm in Spalten sortieren
18.07.2022 15:22:24
Urs
Hallo Daniel,
auch ein guter Ansatz. Funktioniert auch gut.
Übersichtlicher Code, da kann ich noch etwas weiter werkeln.
z.B. Sonderbehandlung der Textzeilen, welche in Klammen sind.etc.
Vielen Dank
Beste Grüsse
Urs
AW: CNC-Programm in Spalten sortieren
18.07.2022 15:28:30
Daniel
Hi
für testszwecke kannst du das arrErg auch weglassen und die Daten einzeln ins Tabellenblatt schreiben:
ersetze dazu arrErg(z, spErg) = arrRoh(z, s)
durch Sheets("Tabelle1").Cells(z + 2, s).value = arrRoh(z, s)
alle übrigen Zeilen, die arrErg enthalten, kannst du dann löschen oder auskommentieren.
Allerdings ist das dann deutlich langsamer, als erstmal das Array zu erstellen und dann das Array als ganzes ins Blatt zu schreiben.
aber fürs testen kann es hilfreich sein, wenn man die Ergebnisse sofort sieht und nicht erst am Ende.
Gruß Daniel
AW: und nun noch meine einfache Formellösung ...
19.07.2022 09:54:25
neopa
Hallo Urs,
.... die ich auf Basis Deiner eingestellten "Zielvorgabe" in https://www.herber.de/bbs/user/154223.xlsx bereits entwickelt hatte, wobei ich die CNC-Daten aus https://www.herber.de/bbs/user/154220.xlsx zuvor in die Ergebnisdatei als Tabellenblatt "vorher" kopiert hatte.
Im Ergebnistabellenblatt in A3 dann folgende Formel:
=WENNFEHLER(INDEX(vorher!2:2;AGGREGAT(15;6;SPALTE($A3:$Z3)/(LINKS(vorher!$A2:$Z2;1)=A$1);ZÄHLENWENN($A$1:A$1;A$1)))&"";"")
und diese Formel bis Z3 und dann komplett weit genug nach unten kopieren.
Wenn jedoch tausende Datensätze auszuwerten sind, würde ich meine gestern hier eingestellte PQ-Lösung bevorzugen, zumal die CNC-Daten auch direkt mit PQ eingelesen werden können.
Gruß Werner
.. , - ...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige