Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

8桁の年月データの変換方法について

弊社ではQVD作成時に使用しているデータについて年月日を8桁(YYYYMMDD/例:20150401)で取得しておりますが、

下記2点につきましてQVWのスクリプトを駆使することで実現が可能であるか、また可能である場合、

どのような方法となるかをご教授頂けないでしょうか。

(1)8桁(YYYYMMDD)の年月日を日付型?YYYY/MM//DD(例:2015/4/1)とする方法について

(2)8桁の年月日データを使用して、締日データを作成する方法について

   例)20日締めの場合

     20150401 ⇒ (締日)20140420

     20150811 ⇒ (締日)20150820

   例)10日締めの場合

     20150401 ⇒ (締日)20140410

     20150811 ⇒ (締日)20150910

以上、宜しくお願い致します。

9 Replies
hka
Employee

(1)は

   left(年月日,4) & '/' & mid(年月日,5,2) & '/' & right(年月日,2) as 年月日

      とすることで日付型データに変換できます。

(2)は

  left(年月日,4) & '/' & mid(年月日,5,2) & '/20' as 締日

でいかがでしょうか。

ご質問の回答になっていますでしょうか?

Not applicable
Author

ご返信ありがとうございました。

(1)についてはご教授頂いた方法を試してみます。

しかしながら(2)については、ご教授頂いた方法ですと、

 20日締めの場合 20150821 ⇒ 8/20 となってしまい、本来の締日である9/20にはなりません。

また、1)月末締めの場合

    2)年を跨ぐ場合もご教授頂いた方法ではうまくいかないように思います。

別の方法がわかりましたらご教授頂けると助かります。

hka
Employee

すいません、当月のデータは当月と勘違いしてました。

締日の条件を教えていただけますか。

Not applicable
Author

作成イメージとしては、取引会社ごとの販売実績を締日単位で集計したり昨年対比したりするための項目としたいと思っております。

締日の条件はまちまちなのですが、基本的には一般的な5・10・15・20・25・月末の6つの締日となります。

(現在はそれぞれの締日条件について項目を作成しようと考えております)

桁データの場合、ご教授頂いたleftやmid関数を用いての設定の場合、

(20日締め)20150821 ⇒ 締日9/20

(月末締め)1月 ⇒ 締日1/31、2月 ⇒ 締日2/28(29)、4月 ⇒ 締日4/30

であったり、

年を跨ぐ場合は、

20151221 ⇒(20日締め)2016年1月20日、(月末締め)2015年12月31日

と、日付型データだとできそうな処理がなかなか思うようにできない為、非常に困っております。

宜しくお願い致します。

hka
Employee

条件が色々異なるのであればスクリプトでif文などで条件を直に記述するよりも

締日マスタを作成した方が管理がしやすいと思います。

一番簡単なのは以下のように年月と開始日、締日のマスタを作成することです。

 

年月開始日締日
2015/012014/12/212015/01/20
2015/022015/01/212015/02/28
2015/032015/03/012015/04/20

もう一つは年月と締日のみのマスタを作成するパターンも考えられます。

Masaki_Hamano
Employee

こんにちは、

以下の様な形にすればご要望は満たせるのではないかと思いますので、ご確認ください。

=If(Day(Date#(年月日, 'yyyymmdd'))>20,

  AddMonths(Date(MakeDate(left(年月日,4), mid(年月日,5,2), 20),'YYYY/MM/DD'),1),

  Date(MakeDate(left(年月日,4), mid(年月日,5,2), 20),'YYYY/MM/DD')

)

上記例では締日を20日としていますが、ここを変更すれば締日の切り替えは出来るかと思います。(尚、月末については上記のMakedate()関数ではなく、MonthEnd()関数を利用して月末の日付を算出する形になります。)

Not applicable
Author

ご連絡ありがとうございます。

クリックビューを始めて間もないため上記関数については初めて知りましたが、

クリックビューのスクリプト上で締日データを作成できることに驚いています。

またご教授頂いた20日締めについては、上記の関数を用いることで欲している項目を作成することができました。

しかし、恥ずかしながらIF構文内の意味は現段階で理解できませんでした。

そのため、月末締めのMinthEnd()関数についてもどのような式にすればよいかわかりませんので、

申し訳ございませんがサンプルを作成して頂けないでしょうか。

宜しくお願い致します。

Masaki_Hamano
Employee

月末締めであれば、月・年の跨ぎは発生しないかと思いますので、以下の形で月末の日付を取得する形になるかと思います。

=MonthEnd(Date(MakeDate(left(年月日,4), mid(年月日,5,2), mid(年月日, 7, 2)),'YYYY/MM/DD'))

Not applicable
Author

有難うございます。

ご教授頂いた方法で作成したところ任意のデータを取得することができました。

このデータを用いまして、販売実績等のデータ集計のチャート等を作成してみたいと思います。

また何か不明な点がありましたら、書き込みさせていただきますので何卒宜しくお願い致します。