Clever-Excel-Forum

Normale Version: Format trennen und in Tabelle einfügen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi zusammen, ich habe über 3000 Zeilen in diesem Format: 
1240: {count: 12345, size: 12345678}
1241: {count: 123, size: 1234567890}
1242: {count: 1234567, size: 123456780}
+1 ..........

soll in folgende Tabelle:
[img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

[attachment=46259]

Das count soll in F und size G.
Wie mache ich das? Danke für die Hilfe!!
Hi Giani,

Menü Daten --> Daten abrufen --> Aus Datei --> JSON
Hallo Ralf, leider wirft er das JSON genau so in eine Column. Wie kann ich die einzelnen Spalten voneinander trennen? Danke für die Hilfe!
B1: =WECHSELN(WECHSELN(WECHSELN(SPALTENWAHL(TEXTTEILEN(A1;" ");{1.3.5});":";);",";);"}";)

Ich konnte nur raten, was Du erhalten möchtest, und werde Dir aufgrund unzureichender Fragevorbereitung weiter NICHT antworten. Die Zumutung beginnt schon mit Deiner Excelversion. Ich informiere mich nicht, was 2201 sein soll.
Ich habe alles beschrieben und einen Screenshot hochgeladen. Ich nutze natürlich die aktuellste Version von Excel. 2201? Das wurde nirgends erwähnt, aber dennoch danke für deine Hilfe, leider hat dies nicht funktioniert.
Hallo,


für F
PHP-Code:
=TEXTVOR(TEXTNACH(A1;":";2);",";1
und G

PHP-Code:
=TEXTVOR(TEXTNACH(A1;":";-1;1;0);"}";1
(15.12.2022, 17:12)Giani schrieb: [ -> ]Ich nutze natürlich die aktuellste Version von Excel. 2201? Das wurde nirgends erwähnt, aber dennoch danke für deine Hilfe, leider hat dies nicht funktioniert.

[attachment=46265]
Den Datenbereich als Tabelle formatieren.

Im PQ Editor diesen Code einfügen:

Code:
let
    Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    Nr = Table.AddColumn(Quelle, "Nummer", each Text.Trim(Text.Split([Spalte1],":"){0} )),  
    Anzahl = Table.AddColumn(Nr, "Count", each Text.Trim(Text.Replace(Text.Split([Spalte1],":"){2},", size","" ))),
    Size = Table.AddColumn(Anzahl, "Size", each Text.Trim(Text.Replace( Text.Split([Spalte1],":"){3},"}","")))
in
    Size
Zitat:2201? Das wurde nirgends erwähnt
...doch doch... schau mal nach rechts oben in Deinen Posts. Da steht "Versionen".... da hast Du Dich in Deinen Einstellungen wohl vertippt...
Hallo,

per VBA ginge auch sowas:

Code:
Sub Aufbereiten()
  Application.DisplayAlerts = False
  With Tabelle1.Range("H:H")
    .Replace What:=" {count: ", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, _
        SearchFormat:=False, ReplaceFormat:=False
    .Replace What:=", size: ", Replacement:=":"
    .Replace What:="}", Replacement:=""
    .TextToColumns Destination:=.Cells(1).Offset(, -2), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:=":"
  End With
  Application.DisplayAlerts = True
End Sub

Gruß Uwe
Moin,

mit Powerquery lässt sich der JSON-String wie bereits erwähnt sehr komfortabel umwandeln. Die Datensatz-ID (oder was immer das ist) kann dabei zunächst in ein zusatzfeld geschrieben werden:
Code:
let
    Quelle = Excel.CurrentWorkbook(){[Name="Tabelle2"]}[Content],
    #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"input", type text}}),
    #"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Geänderter Typ", "input", Splitter.SplitTextByEachDelimiter({":"}, QuoteStyle.Csv, false), {"input.1", "input.2"}),
    #"Geänderter Typ1" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen",{{"input.1", Int64.Type}, {"input.2", type text}}),
    #"Analysierte JSON" = Table.TransformColumns(#"Geänderter Typ1",{{"input.2", Json.Document}}),
    #"Erweiterte input.2" = Table.ExpandRecordColumn(#"Analysierte JSON", "input.2", {"count", "size"}, {"input.2.count", "input.2.size"})
in
    #"Erweiterte input.2"


Vorgehen:
1. Aus den Quelldaten eine Tabelle erstellen (Strg+T)
2. Daten>Abrufen und Transformieren>Aus Tabelle
3. im PQ-Editor die Datenspalte markieren, Rechte Maustaste auf Zeilenkopf -> Spalte teilen -> Nach Trennzeichen -> Doppelpunkt -> Beim äußerst linken Auftreten
4. Spalte mit dem verbleibenden JSON-String markieren, Rechte Maustaste -> Transformieren ->JSON
5. Auf den Doppelpfeil in der Überschrift des ehemaligen JSON-Strings klicken und so alle Records expandieren
6. Schließen & Laden, fertig.

Viele Grüße
derHöpp