Es liegt ein Fehler vor, da ich dies nicht ausführen kann. Kann mir jemand helfen?
// Funktion zum Neuformatieren von Datumsangaben in TT/MM/JJJJ
colName = Column Dialog( "Datumsspalte auswählen" );
reformatDateColumn = Funktion({dt, colName},
dt = Aktuelle Datentabelle();Wenn(Spalte(dt, colName) == Leer(),
Throw( "Die ausgewählte Spalte existiert nicht in der aktuellen Datentabelle." );
);
// Funktion zum Ermitteln und Neuformatieren des Datums
formatDate = Funktion({date},
// Auf unterschiedliche Datumsformate prüfen und in TT/MM/JJJJ konvertieren
Wenn(Enthält(Datum, "/"),
// Überprüfen Sie, ob das Datum im Format TT/MM/JJJJ oder MM/TT/JJJJ vorliegt.
Wenn (Substr (Datum, 3, 1) == "/",
// Nimm das Format TT/MM/JJJJ an
Datum,
// Format mm/tt/jjjj annehmen und in tt/mm/jjjj konvertieren
Verketten(Wort(2, Datum, "/" ), "/", Wort(1, Datum, "/" ), "/", Wort(3, Datum, "/" ) )
),
// Behandelt die Formate mmttjjjj, ttmmjjjj, jjjjmmtt oder jjjjttmm
Wenn (Länge (Datum) == 8,
//Überprüfen Sie, ob die ersten beiden Ziffern einen gültigen Monat oder Tag bilden
Wenn (Num (Substr (Datum, 1, 2)) > 12,
// Nimm das Format TTMMJJJJ an
Concat(Substr(Datum, 1, 2), "/", Substr(Datum, 3, 2), "/", Substr(Datum, 5, 4)),
// Format mmttjjjj annehmen und in tt/mm/jjjj konvertieren
Concat(Substr(Datum, 3, 2), "/", Substr(Datum, 1, 2), "/", Substr(Datum, 5, 4))
),
Wenn (Länge (Datum) == 8,
If( Num( Substr( date, 1, 4 ) ) > 999, // Prüfe, ob die ersten 4 Ziffern ein gültiges Jahr bilden
//Überprüfen Sie, ob die nächsten beiden Ziffern einen gültigen Monat oder Tag bilden
Wenn (Num (Substr (Datum, 5, 2)) > 12,
// Nimm das Format yyyyddmm an
Concat(Substr(Datum, 7, 2), "/", Substr(Datum, 5, 2), "/", Substr(Datum, 1, 4)),
// Nimm das Format yyyymmdd an und konvertiere es in dd/mm/yyyy
Concat(Substr(Datum, 7, 2), "/", Substr(Datum, 5, 2), "/", Substr(Datum, 1, 4))
),
//Wenn kein gültiges Jahr oder Format vorliegt, geben Sie das ursprüngliche Datum zurück
Datum
),
// Wenn die Datumslänge nicht 8 beträgt, gib das ursprüngliche Datum zurück (ungültiges Format)
Datum
)
)
)
);
//Erstellen Sie die Benutzeroberfläche mit Schaltflächen zum Auslösen der Funktionen
Neues Fenster( "Datenverarbeitungstools",
V-Listenfeld (
// Button zum Neuformatieren der Datumsspalte
Button Box( "Datumsspalte neu formatieren",
//Öffnen Sie einen Dialog zum Auswählen der Datumsspalte
colName = Column Dialog( "Datumsspalte auswählen" );
// Rufen Sie die Funktion auf, um die ausgewählte Datumsspalte neu zu formatieren
reformatDateColumn( Aktuelle Datentabelle(), colName );
)
)
);
Könnten Sie erklären, was Sie versuchen, anstatt nur den Code zu schreiben (der Code sieht aus, als hätte LLM ihn erstellt)?
Ich nehme an, Sie haben eine Datentabelle mit einer Zeichenspalte, die wie Datumsangaben aussieht. Und diese kann gemischte Datumsformate enthalten? Und Sie möchten eine Benutzeroberfläche, um diese in ein numerisches Format umzuwandeln? Das Formatmuster von JMP könnte dies möglicherweise leisten, aber es wäre hilfreich, ein Beispiel der Daten zu haben.
Hier ist das Originalskript in einem etwas einfacher zu lesenden Format (hoffentlich habe ich keine Änderungen vorgenommen, die über die Formatierung des Skripts hinausgehen)
Mehr sehen...
colName = Column Dialog("Select Date Column");
reformatDateColumn = Function({dt, colName},
dt = Current Data Table();
If(Column(dt, colName) == Empty(),
Throw("The selected column does not exist in the current data table.")
);
);
formatDate = Function({date},
If(Contains(date, "/"),
If(Substr(date, 3, 1) == "/",
date,
// Assume mm/dd/yyyy format and convert to dd/mm/yyyy
Concat(Word(2, date, "/"), "/", Word(1, date, "/"), "/", Word(3, date, "/"))
)
,
// Handle mmddyyyy, ddmmyyyy, yyyymmdd, or yyyyddmm format
If(Length(date) == 8,
// Check if first two digits form a valid month or day
If(Num(Substr(date, 1, 2)) > 12,
// Assume ddmmyyyy format
Concat(Substr(date, 1, 2), "/", Substr(date, 3, 2), "/", Substr(date, 5, 4))
,
// Assume mmddyyyy format and convert to dd/mm/yyyy
Concat(Substr(date, 3, 2), "/", Substr(date, 1, 2), "/", Substr(date, 5, 4))
)
,
If(Length(date) == 8,
// Check if first 4 digits form a valid year
If(Num(Substr(date, 1, 4)) > 999,
// Check if the next two digits form a valid month or day
If(Num(Substr(date, 5, 2)) > 12,
// Assume yyyyddmm format
Concat(Substr(date, 7, 2), "/", Substr(date, 5, 2), "/", Substr(date, 1, 4))
,
// Assume yyyymmdd format and convert to dd/mm/yyyy
Concat(Substr(date, 7, 2), "/", Substr(date, 5, 2), "/", Substr(date, 1, 4))
)
,
// If not a valid year or format, return the original date
date
)
,
// If the date length is not 8, return the original date (invalid format)
date
)
)
)
);
New Window("Data Processing Tools",
V List Box(
Button Box("Reformat Date Column",
// Open a dialog to select the date column
colName = Column Dialog("Select Date Column");
reformatDateColumn(Current Data Table(), colName);
)
)
);