2016-08-11 3 views
0

Вот моя текущая формула:комбинат, Группа и переименовывать

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" 

Я беру даты Строки из моей базы данных, отформатированные как 2016-01-05, 2016-01-06 ... 2017-01-01. Я использую их как столбцы.

Я хочу искать год (16), затем месяц (01), затем для следующей колонки искать год (16) снова и месяц (2). Затем я хотел бы интерпретировать месяц как сокращенные месячные имена, такие как Jan или Feb. Наконец, я хотел бы объединить данные вместе. Таким образом, в конце концов, это будет работать так:

  • 16 + 01 становится Jan16
  • 16 + 02 становится Feb16
  • 17 + 01 становится Jan17

Как я могу сделать это без вручную вводить условие if-else за каждый месяц каждого года?

+0

Функция проверки MonthName формулы, я почти забыл это. –

ответ

0

Нет необходимости жесткого кода он - Используйте эту формулу, чтобы получить месяц и год:

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

Я написал нечто подобное. 'if right (left ({Command.NextDueDate}, 7), 2) = '01', затем 'jan' + mid ({Command.NextDueDate}, 1,4) else if right (left ({Command.NextDueDate} , 7), 2) = '02', тогда 'feb'' Как это выглядит? Будет ли это считаться плохим? – PawelBor

+0

@PawelBor Я бы подумал, что ваш код будет намного больше работы, чем нужно. Есть гораздо более простой способ сделать что-то, не используя 'if'' then'' else' или даже' right' и 'left'. – 4444

0

Не следует использовать, если/иначе, когда вы можете получить информацию через умное использование формул. Есть несколько способов, которые вы можете сделать формулу ANKUR даже лучше:

Чтобы получить короткое имя Месяц, использование: MonthName(Month(CDateTime({Command.NextDueDate})),True)
Правда в конце укорачивает название «Ян», «Февраль», «Mar» и так далее.

Чтобы получить год, используйте Year(CDateTime({Command.NextDueDate}))


Объединить две формулы и делает все работа для вас:

MonthName(Month(CDateTime({Command.NextDueDate})),True) + 
    Year(CDateTime({Command.NextDueDate})) 
Смежные вопросы