2016-08-11 4 views
0

Umbenennen Hier ist meine aktuelle Formel:Kombinieren, Gruppe und

if left ({Command.NextDueDate},7) = "2016-01" then "January'16" 
else if left ({Command.NextDueDate},7) = "2016-02" then "February'16" 
... 
else if left ({Command.NextDueDate},7) = "2017-01" then "January'17" 

nehme ich Datum Strings aus meiner Datenbank wie 2016-01-05, formatiert 2016-01-06 ... 2017-01-01. Ich benutze diese als Spalten.

Ich möchte nach dem Jahr suchen (16), dann Monat (01), dann für nächste Spalte Jahr (16) wieder und Monat (2) suchen. Dann möchte ich den Monat als verkürzte Monatsnamen wie Jan oder Feb interpretieren. Endlich möchte ich die Daten wieder zusammenfügen. Also am Ende wird es wie folgt funktionieren:

  • 16 + 01 wird Jan16
  • 16 + 02 wird Feb16
  • 17 + 01 wird Jan17

Wie kann ich dies tun, ohne manuell Eingabe einer if-else-Klausel für jeden Monat eines jeden Jahres?

+0

prüfen MONTH Funktion der Formel i dies fast vergessen. –

Antwort

0

Keine Notwendigkeit, hart Code es - diese Formel den Monat und das Jahr zu erhalten:

MonthName(Month(CDateTime({Command.NextDueDate}))) + 
    Right(Left({Command.NextDueDate},4),2); 
+0

Ich schrieb etwas ähnliches. 'if right (links ({Command.NextDueDate}, 7), 2) = '01', dann 'jan' + mid ({Command.NextDueDate}, 1,4) sonst wenn rechts (links ({Command.NextDueDate} , 7), 2) = '02' dann 'feb' Wie sieht das aus? Würde es als schlecht angesehen werden? – PawelBor

+0

@PawelBor Ich würde meinen Code viel mehr Arbeit als es sein muss. Es gibt eine viel einfachere Möglichkeit, Dinge zu tun, ohne "if", dann "else" oder sogar "right" und "left" zu verwenden. – 4444

0

nicht, wenn/else-Anweisungen verwenden, wenn Sie die Informationen durch geschickten Einsatz von Formeln zu bekommen. Es gibt ein paar Möglichkeiten, wie Sie noch besser Ankur Formel machen können:

Um die kurzen Monatsnamen, Nutzung zu erhalten: MonthName(Month(CDateTime({Command.NextDueDate})),True)
Die Wahren am Ende verkürzt den Name „Jan“, „Februar“, „Mar“ und so weiter.

Um das Jahr zu erhalten, verwenden Year(CDateTime({Command.NextDueDate}))


die beiden Formeln kombinieren und es tut alle die Arbeit für Sie:

MonthName(Month(CDateTime({Command.NextDueDate})),True) + 
    Year(CDateTime({Command.NextDueDate}))