🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
BI

BI(ビジネスインテリジェンス)とは、これまでの業務で蓄積された膨大なデータを、分析・加工して企業の意思決定に活用する手法のこと。誰でも手軽に情報を閲覧できることが特徴です。

Power BI

Power BIは、マイクロソフト社が提供しているBIツールです。レポートの作成・共有、エクセルや会計システムなどさまざまなソフトウエアのデータをグラフやチャートに変換。データの分析・解析などにも利用できます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

2回答

12408閲覧

WEEKNUM関数を使って〇〇月n週目を表示させる方法を教えて下さい

wwwwwww

総合スコア4

BI

BI(ビジネスインテリジェンス)とは、これまでの業務で蓄積された膨大なデータを、分析・加工して企業の意思決定に活用する手法のこと。誰でも手軽に情報を閲覧できることが特徴です。

Power BI

Power BIは、マイクロソフト社が提供しているBIツールです。レポートの作成・共有、エクセルや会計システムなどさまざまなソフトウエアのデータをグラフやチャートに変換。データの分析・解析などにも利用できます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

1クリップ

投稿2021/03/21 09:47

編集2021/03/24 19:04

前提・実現したいこと

PowerBIというBIツールを使ってグラフを生成したいのですが、PowerBI上の棒グラフのX軸(時間)をタイトルの〇〇月n週目という表示をしたいと考えています
qiitaなどを見てカレンダーテーブルのコードをコピペしたうえで、データリソースのdateカラムと紐付けまではできたのですが、コピーしたコードに元から用意されている年単位で見た何周目という項目だとわかりづらいためタイトルの表示方法を実現したいと、自分でweeknum関数について調べ

"年月何週目_yy年MM月00週目", FORMAT ( WEEKNUM ( [Date], 1 )-WEEKNUM( [Date] , 1 )+1, "YY年MM月第00週"),

こちらの行を追加しました

ただ、実際にグラフ下のラベルに表示されたのは

99年12月第00週

と表示されてしまい、諸々理解がしっかりとできてないなかだったのでここで詰まっています
※実際のデータは、2021年2月、3月のデータをサンプルで少数入れています

こちらについて、正しく1月1日を基準にタイトルの〇〇月n週目と正しく表示するにはどのようにすればいいでしょうか?

発生している問題・エラーメッセージ

なし

該当のソースコード

日付テーブル = VAR StartDate="2016/04/01" VAR EndDate="2025/3/31" VAR Today=UTCTODAY()+9/24 VAR ThisFY=if(MONTH(Today)>3,YEAR(Today),YEAR(Today)-1) VAR BaseCalendar =CALENDAR (StartDate,EndDate) RETURN ADDCOLUMNS( BaseCalendar, "年_数値", YEAR ( [Date] ), "年_yyyy年",FORMAT([Date],"yyyy年"), "月_数値", MONTH ([Date]), "月_MM月", FORMAT ([Date], "MM月" ), "日_数値", DAY ([Date]), "日_DD日", FORMAT([Date],"DD日"), "年月_数値", VALUE(FORMAT([Date], "yyyyMM" )), "年月_yy年MM月", FORMAT ( [Date], "yy年MM月" ), "年月日_数値", VALUE(FORMAT([Date], "yyyyMMDD" )), "年月日_yy年MM月DD日", FORMAT ( [Date], "yyyy年MM月DD日" ), "年度_数値",if(MONTH([Date])>3,YEAR([Date]),YEAR([Date])-1), "年度_0年度",FORMAT(if(MONTH([Date])>3,YEAR([Date]),YEAR([Date])-1),"0年度"), "年度四半期_数値", if(MONTH([Date])<4,4,if(MONTH([Date])<7,1,if(MONTH([Date])<10,2,3))), "年度四半期_0Q", if(MONTH([Date])<4,"4Q",if(MONTH([Date])<7,"1Q",if(MONTH([Date])<10,"2Q","3Q"))), "週_数値", WEEKNUM ( [Date], 1 ), "週_第00週", FORMAT ( WEEKNUM ( [Date], 1 ), "第00週" ), "年月何週目_yy年MM月00週目", FORMAT ( WEEKNUM ( [Date], 1 )-WEEKNUM( [Date] , 1 )+1, "YY年MM月第00週"), "曜日番号月曜から_数値", WEEKDAY ( [Date], 2 ), "曜日_aaa", FORMAT([Date],"aaa"), "日と曜日", FORMAT ( [Date], "DDaaa" ), "相対日付",DATEDIFF(Today,[Date],DAY), "相対月",DATEDIFF(Today,[Date],MONTH), "相対年度",if(MONTH([Date])>3,YEAR([Date])-ThisFY,YEAR([Date])-1-ThisFY) )

コードとテーブル

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こういうことでいいのかな?(VBAで書いたけどたぶん基本同じだよね?)

VBA

1Format(wDate, "YY年MM月") & Format(WorksheetFunction.WeekNum(wDate) - WorksheetFunction.WeekNum(wDate - Day(wDate) + 1) + 1, "00週") 2Format(wDate - Day(wDate) + WorksheetFunction.WeekNum(wDate) - WorksheetFunction.WeekNum(wDate - Day(wDate) + 1) + 1, "YY年MM月DD週")

投稿2021/03/21 23:32

jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wwwwwww

2021/03/24 19:03

ご連絡遅くなり大変失礼しました PowerBIだとDAX関数になるためいただいたコードだと正しく反映しないようです… ※自分のチカラ不足が大きな原因だと思います。 改めて該当箇所のスクリーンショットを質問に追記させていただきますので、もしお気づきの点があればご教授いただければ幸いです
xail2222

2021/03/24 22:28 編集

日付の変換(YY月MM月の部分)と、数値の変換(第00週の部分)を分けて処理し後でつなげる。 というのがjinojiさんの回答なので、それをDAX関数で書くと CONCATENATE(FORMAT ( [Date],"YY年MM月"),FORMAT ( WEEKNUM ( [Date], 1 )-( WEEKNUM (DATE(YEAR( [Date]), MONTH( [Date]),1), 1)+1),"第00週")) ということいいんじゃないでしょうか。確かめる環境無いので確かめてませんが。 wwwwwwwさん記述の処理のようにYY月MM月第00週として一つで書くと日付の変換としか解釈されないので YY月MM月の部分だけ変換されていて 引数が日付ではない数値なのでおかしな結果、99年12月となり 第00週の部分はただの文字列として解釈されるのでしょう。
jinoji

2021/03/24 23:00 編集

xail2222さんがフォローしてくれたとおりでして、 1つめに書いたものは「日付の変換(YY月MM月の部分)と、数値の変換(第00週の部分)を分けて処理し後でつなげる」というアプローチ、 2つめのものは「まず○月第△週の△を求め、それを使って『○月△日』という日付を作り(3/25であれば第4週なので3/4とする)、それを『MM月DD"週"』という形にフォーマットする」という変則的なアプローチで考えました。 PowerBIに合わせて書き直すと "年月何週目_yy年MM月00週目", FORMAT ( [Date] - DAY[Date] + WEEKNUM([Date], 1) - WEEKNUM([Date] - DAY[Date] + 1), 1) + 1 ),"YY年MM月第DD週"), となるのでしょうか。
guest

0

当日のWEEKNUMを求め、そこから、その月の1日のWEEKNUMを引く、でいいのでは

投稿2021/03/21 11:02

y_waiwai

総合スコア88040

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wwwwwww

2021/03/21 11:36

ご回答誠にありがとうございます >当日のWEEKNUMを求め、そこから、その月の1日のWEEKNUMを引く、でいいのでは こちらを踏まえて ``` "年月何週目_yy年MM月00週目", FORMAT ( WEEKNUM ( [Date], 1 )-WEEKNUM( [Date] , 1 )+1, "YY年MM月第00週"), ``` を記述追加してみたのですがうまく表示されず質問させていただいた次第です もしお気づきの点などございましたらお手すきの際でも構いませんのでご教授いただけますと幸いです
y_waiwai

2021/03/21 11:46

Dateというのはなんでしょうか
wwwwwww

2021/03/21 12:12

大変失礼しました Dateはデータリソースの日付データのカラムの値となります こちらをただの数字や文字列ではなく、カレンダーのように年月日や週として扱えるように、カレンダーテーブル(該当のソース)と紐付けた次第です https://qiita.com/y-komuro/items/de3e2cb3dea129260079 こちらの記事のおかげで、年や月、日にちについては正常に表示されているのですが、タイトルの〇〇月n週という表示がうまくいかず質問させていただいた次第です
y_waiwai

2021/03/21 12:24

なんかいまいち意味不明ですが、 WEEKNUM ( [Date], 1 ) ってどういう数値となるんでしょうか。 まあ、どういう数値になろうと、 WEEKNUM ( [Date], 1 )-WEEKNUM( [Date] , 1 )+1 の式の結果は、 1 にしかならないと思いますが。
jinoji

2021/03/21 14:12

たとえば今月で言えば、何日から何日までが3月1週なんですか?
wwwwwww

2021/03/21 14:22

>y_waiwaiさま ご返信ありがとうございます >WEEKNUM ( [Date], 1 ) は、例えば[date]が2021年3月3日のデータであれば、10と表示され、10週目の表す表示となります >WEEKNUM ( [Date], 1 )-WEEKNUM( [Date] , 1 )+1 http://office-qa.com/Excel/ex318.htm#:~:text=WEEKNUM%E9%96%A2%E6%95%B0%E3%81%AF%E3%81%9D%E3%81%AE%E5%B9%B4,2%E9%80%B1%E3%81%8C%E5%87%BA%E3%81%9B%E3%81%BE%E3%81%99%E3%80%82 こちらを見てみると2つ目のdateが間違ってそうでした。。。 ググりながらもう一度式の見直しをさせていただきます
wwwwwww

2021/03/21 14:25

jinojiさま ご質問ありがとうございます >たとえば今月で言えば、何日から何日までが3月1週なんですか? (2/28)1~6になる認識です `WEEKNUM ( [Date], 1 )` こちらの末の1の値で日曜日を週初めとする定義をしているものと認識してました もし何かお気づきの点があればお手すきの際にもご教授いただけますと幸いです
jinoji

2021/03/21 14:43

(その日が年の第何週目か)- (その月の初日が年の第何週目か) + 1 ?
wwwwwww

2021/03/21 15:08

jinoji様 おっしゃるとおりです そちらを前提にPowerBI用のカレンダーテーブルのコードを改変し、質問最初のコードないし下記のコードを試ては見たのですが、、、うまく表示されず、ラベルは「99年12月第00週」のままでした ``` 日付テーブル = VAR StartDate="2016/04/01" VAR EndDate="2025/3/31" VAR Today=UTCTODAY()+9/24 VAR ThisFY=if(MONTH(Today)>3,YEAR(Today),YEAR(Today)-1) VAR BaseCalendar =CALENDAR (StartDate,EndDate) RETURN ADDCOLUMNS( BaseCalendar, "年_数値", YEAR ( [Date] ), "年_yyyy年",FORMAT([Date],"yyyy年"), "月_数値", MONTH ([Date]), "月_MM月", FORMAT ([Date], "MM月" ), "日_数値", DAY ([Date]), "日_DD日", FORMAT([Date],"DD日"), "年月_数値", VALUE(FORMAT([Date], "yyyyMM" )), "年月_yy年MM月", FORMAT ( [Date], "yy年MM月" ), "年月日_数値", VALUE(FORMAT([Date], "yyyyMMDD" )), "年月日_yy年MM月DD日", FORMAT ( [Date], "yyyy年MM月DD日" ), "年度_数値",if(MONTH([Date])>3,YEAR([Date]),YEAR([Date])-1), "年度_0年度",FORMAT(if(MONTH([Date])>3,YEAR([Date]),YEAR([Date])-1),"0年度"), "年度四半期_数値", if(MONTH([Date])<4,4,if(MONTH([Date])<7,1,if(MONTH([Date])<10,2,3))), "年度四半期_0Q", if(MONTH([Date])<4,"4Q",if(MONTH([Date])<7,"1Q",if(MONTH([Date])<10,"2Q","3Q"))), "週_数値", WEEKNUM ( [Date], 1 ), "週_第00週", FORMAT ( WEEKNUM ( [Date], 1 ), "第00週" ), "年月何週目_yy年MM月00週目", FORMAT ( WEEKNUM ( [Date], 1 )-( WEEKNUM (DATE(YEAR( [Date]), MONTH( [Date]),1), 1)+1),"YY年MM月第00週"), "曜日番号月曜から_数値", WEEKDAY ( [Date], 2 ), "曜日_aaa", FORMAT([Date],"aaa"), "日と曜日", FORMAT ( [Date], "DDaaa" ), "相対日付",DATEDIFF(Today,[Date],DAY), "相対月",DATEDIFF(Today,[Date],MONTH), "相対年度",if(MONTH([Date])>3,YEAR([Date])-ThisFY,YEAR([Date])-1-ThisFY) ) ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問