# Exceltabelle nach absoluten DB-Adressen sortieren



## ducati (4 November 2021)

kennt jemand ne einfache Möglichkeit, eine Exceltabelle nach absoluten DB-Adressen zu sortieren? Im ersten Schritt erstmal nur BOOL (DBX) als Bonus wärs nicht schlecht, wenn auch DBB, DBW, DBD gehn würden 


```
DB1.DBX0.0;Text awner
DB1.DBX0.1;Text awner
DB1.DBX13.6;Text erdhtr
DB1.DBX13.7;Text srtjns
DB1.DBX8.0;Text srtjns
DB1.DBX8.1;Text srtjns
DB11.DBX0.0;Text snf
DB11.DBX0.1;Text sfghjtr
DB11.DBX13.6;Text trjsr
DB11.DBX13.7;Text kjuz
DB11.DBX8.0;Text drtjh
DB11.DBX8.1;Text srtz
DB8.DBX0.0;Text hfgfh
DB8.DBX0.1;Text sthztr
DB8.DBX13.6;Text strh
DB8.DBX13.7;Text rth
DB8.DBX8.0;Text teawtg
DB8.DBX8.1;Text aerger
```

Aktuell mach ich das über TIA in ner Variablentabelle von nem Panel... Muss doch auch in Excel gehn?


----------



## MFreiberger (4 November 2021)

Moin Ducati,

ne einfaceh Möglichkeit fällt mir ad hoc nicht ein.

Aber Du kannst ja den Code in Spalten aufteilen, in denen die Sortierkriterien dann so enthalten sind, dass Du die Sortierfunktionen von Excel nutzen kannst.

zB. 'DBX' suchen, dann den Punkt danach und anhand dieser Position die ByteAdresse in eine separate Spalte eintragen.
Genauso mit dem ersten vorkommen eines Punktes (dann könntest Du die DB-Nummer ausschneiden) usw.

Bleibt die Frage nach Aufwand/Nutzen.

VG

MFreiberger


----------



## ducati (4 November 2021)

ist ja schon so, das Excel 8.0 und 13.6 falsch sortiert... 

hmm, bräuchte man dann 3 Spalten mit den Ziffern, nach denen dann sortiert wird... und das DBX, DBB, DBW, DBD? das wär nichtmal alphabetisch...

also vermutlich müsste man nen (aufwändiges) Makro schreiben? 

Bei größeren Listen ist das Hinundherkopieren zwischen TIA-Variablentabelle und Excel halt auch bissl fehleranfällig, wenn ich da mal verrutsche...


----------



## MFreiberger (4 November 2021)

Moin Ducati,

vielleicht kannst Du hiermit was anfangen:

VG

Mario


----------



## ducati (4 November 2021)

super danke, daraus bau ich mir etwas...

solange das alles DBX ist, bräuchte man nur eine Spalte:

DB11.DBX13.7 -> 001100137

dann sortieren...


----------



## ducati (4 November 2021)

so sollte das gehn für DB1.DBX0.0 DB1.DBB0 DB1.DBW0 DB1.DBD0


```
=WENN(
TEIL(A2;FINDEN(".";A2);4)=".DBX";
VERKETTEN(TEXT(TEIL(A2;FINDEN("D";A2)+2;FINDEN(".";A2)-FINDEN("D";A2)-2);"000000");TEXT(TEIL(A2;FINDEN(".";A2)+4;FINDEN(".";A2;FINDEN(".";A2)+1)-(FINDEN(".";A2)+4));"000000");TEIL(A2;FINDEN(".";A2;FINDEN(".";A2)+1)+1;1));
VERKETTEN(TEXT(TEIL(A2;FINDEN("D";A2)+2;FINDEN(".";A2)-FINDEN("D";A2)-2);"000000");TEXT(TEIL(A2;FINDEN(".";A2)+4;5);"000000");"8")
)
```

dis kommt dann raus:

```
DB1.DBX0.0;Text awner
DB1.DBX0.1;Text awner
DB1.DBX8.0;Text srtjns
DB1.DBX8.1;Text srtjns
DB1.DBX13.6;Text erdhtr
DB1.DBX13.7;Text srtjns
DB8.DBX0.0;Text hfgfh
DB8.DBX0.1;Text sthztr
DB8.DBX8.0;Text teawtg
DB8.DBX8.1;Text aerger
DB8.DBX13.6;Text strh
DB8.DBX13.7;Text rth
DB11.DBX0.0;Text snf
DB11.DBX0.1;Text sfghjtr
DB11.DBX8.0;Text drtjh
DB11.DBX8.1;Text srtz
DB11.DBX13.6;Text trjsr
DB11.DBX13.7;Text kjuz
```


----------



## ducati (4 November 2021)

Hintergrund des ganzen:
ich hab hier so Listen mit 5000 Adressen die wild durcheinander sind. Versuche rauszufinden, welche Adressen noch unbenutzt, also Reserve sind


----------



## JSEngineering (4 November 2021)

Moin Ducati,

Du kannst in Excel über "Text in Spalten" das Trennzeichen angeben: In Deinem Fall den Punkt.
Damit hast Du dann 


```
DB11   |   DBX21   |   3
```

Und dann kannst Du Dir die mittlere Spalte über Formeln noch aufdröseln...

Hab mir die Tabelle aus #4 nicht angesehen.... vielleicht macht die ja Ähnliches.


----------



## ducati (4 November 2021)

naja, eigentlich brauch ich ja die verschiedenen Spalten nicht.

ich mach jetzt einfach aus DB11.DBX13.7 -> 0000110000137 
bzw. bei                             DB11.DBB13    -> 0000110000138

in ner separaten Spalte und sortiere dann nach dieser.


----------



## JSEngineering (4 November 2021)

und wie unterscheidest Du dann DBX / DBW / DBB? über verschiedene Zahlen anstatt 0000?


----------



## ducati (4 November 2021)

JSEngineering schrieb:


> und wie unterscheidest Du dann DBX / DBW / DBB? über verschiedene Zahlen anstatt 0000?




```
=WENN(TEIL(A2;FINDEN(".";A2);4)=".DBX";VERKETTEN(...);VERKETTEN(...;"8"))
```

also das BIT wird 8 bei DBB, DBW, DBD...


----------



## ducati (4 November 2021)

hier mal als fertiges xlsx


----------

