Salesforce活用記事 レポート

Salesforce: レポートの集計期間を「○週目」と表記する方法

  1. HOME >
  2. Salesforce活用記事 >
  3. レポート >

Salesforce: レポートの集計期間を「○週目」と表記する方法

はじめに

こんにちは。
以前の記事でレポートの集計期間を週単位で表示する方法をご紹介しましたが、今回はその際にレポートの集計期間を「○週目」と表記する方法をご紹介していきます。

方法として「数式」を利用することで表記ができ、「○週目」だけでなく「第○週」など他のユーザーのニーズに沿った形で表記することも可能となります。

では、設定方法をご紹介していきます。

レポートの集計期間を「○週目」と表記する

1. 「今月作成されたレコードを作成者毎に週単位で表示する」レポート

今回は設定方法をご紹介するにあたって、以前の記事で作成した画像①の「今月作成されたレコードを作成者毎に週単位で表示する」レポートをもとに、週単位で表示した集計期間を「○週目」と表記されるように設定を行なっていきます。ですので、まず以前の記事で設定した内容を説明していきます。なお、説明の都合上「今月」を2023年12月としています。

画像①:「今月作成されたレコードを作成者毎に週単位で表示する」レポート

次にレポートの設定状況として項目は画像②のように配置を行い、表示されるレコードの条件は画像③のように設定を行なっています。

画像②
画像③

2. 「行レベルの数式」を作成する

画像①のレポートの集計期間を「○週目」と表記する具体的な方法は「行レベルの数式」列をレポートに追加することです。「行レベルの数式」とは、レポートに表示されている個々のレコードに対して数式によって処理を行う機能となります。
今回は「作成日」の値を「○週目」と変換する「行レベルの数式」について説明し、実際にレポート上に配置していきます。

① 「行レベルの数式」の設定場所

レポートの編集画面を開き、画面左側の[アウトライン]タブの[列]にある▼をクリックします。次に画像①のようにメニューが表示されるのでその中から[行レベルの数式を追加]をクリックすると、画像②のように[行レベルの数式列を編集]という画面が表示されます。ここで数式を設定していきます。[列の名前]を「レコード作成週」として、[数式出力種別]は[テキスト]を選択します。

画像①
画像②

② 「作成日」の値を「○週目」と変換する数式を設定する

次に[数式]ボックス内で「作成日」の値を「○週目」と変換する数式を設定していきます。画像③のように数式を入力し、[構文を確認]をクリックして数式にエラーがないことを確認、[適用]をクリックします。なお、数式の内容については複雑であるため設定手順のあとで解説していきます。

画像③
<数式>
TEXT(
  IF( 
    MONTH( DATEVALUE(CREATED_DATE) ) = 1 ,
    ISOWEEK( DATEVALUE(CREATED_DATE) ),
    ISOWEEK( DATEVALUE(CREATED_DATE) ) 
    - ISOWEEK( DATEVALUE(CREATED_DATE) - DAY( DATEVALUE(CREATED_DATE) ) )
    + IF( 
        WEEKDAY( DATEVALUE(CREATED_DATE) - DAY( DATEVALUE(CREATED_DATE) ) ) = 1 , 
        0 , 
        1 
      )
  )
) + "週目"

③ 「行レベルの数式」列をレポートに追加する

②で数式を設定し、レポート編集画面に戻ると画像④のように[列]に「レコード作成週」が配置されています。この「レコード作成週」を[列をグループ化]へドラッグ&ドロップし、同じ箇所に配置してあった「作成日」と置き換えます。すると、画像⑤のようにレポートの列が「○週目」のように表記されるようになりました。以上でレポートの集計期間を「○週目」と表記する設定の完了です。

画像④
画像⑤

④ 数式の解説

ここでは②で設定した以下の数式について解説していきます。なお、数式中のCREATED_DATEは「作成日」のAPI参照名であり、数式の中にAPI参照名を挿入することでその箇所で個々のレコードの「作成日」の値が使用されます。

<数式>
TEXT(
  IF( 
    MONTH( DATEVALUE(CREATED_DATE) ) = 1 ,
    ISOWEEK( DATEVALUE(CREATED_DATE) ),
    ISOWEEK( DATEVALUE(CREATED_DATE) ) 
    - ISOWEEK( DATEVALUE(CREATED_DATE) - DAY( DATEVALUE(CREATED_DATE) ) )
    + IF( 
        WEEKDAY( DATEVALUE(CREATED_DATE) - DAY( DATEVALUE(CREATED_DATE) ) ) = 1 , 
        0 , 
        1 
      )
  )
) + "週目"

②の数式は、「作成日」の日付がその年の何週目にあたるかを計算し、最終的に「作成日」の値を「○週目」と変換します。1月とそれ以外の月では週の計算方法が異なるため、この数式はその両方のケースを考慮しています。以下では具体例として「作成日」の値が「2023/12/13 0:00」(12月第3週の水曜日)である場合に、関数ごとにどのように計算されるかを順に追っていきこの数式を読み解いていきます。

a. DATEVALUE(CREATED_DATE)  (数式3~6,8行目)

DATEVALUE関数によって「作成日」から日付の部分のみを抽出します。「作成日」は「日付/時間」型の項目であり、以下の計算を行うにあたって日付だけを取り出す必要があるためこの処理を行います。「作成日」の値は「2023/12/13 0:00」から時刻部分が除かれ「2023-12-13」となります。

b. MONTH(DATEVALUE(CREATED_DATE)) (数式3行目)

次に、a.で抽出した日付からMONTH関数によって「月」の部分を取得します。この値は、次のIF文で1月かどうかを判断するために使用されます。「2023-12-13」からは「12」が得られます。

c. IF(MONTH(DATEVALUE(CREATED_DATE)) = 1, ..., ...) (数式2~12行目)

ここではIF関数によって、b.で取得した月が1月かどうかを確認します。1月の場合とそれ以外の月の場合で週の計算方法が異なるためです。
今回月は「12」なので、1月ではありません。したがって、数式4行目は使用されず、数式5行目以降へ進みます。

d. ISOWEEK(DATEVALUE(CREATED_DATE)) (数式4,5行目)

ISOWEEK関数によって「作成日」の日付がその年の何週目にあたるかをISO週番号で計算します。計算結果として、「2023-12-13」からは「50」が得られます。

e. DATEVALUE(CREATED_DATE) - DAY(DATEVALUE(CREATED_DATE)) (数式6行目)

b.で取得した月が1月以外の場合、まずこの計算でその月の初日を求めます。「作成日」からその月の「日」部分を引くことで、月の1日を得ます。「2023-12-13」から「日」の部分「13」を引き、「2023-12-1」が得られます。

f. ISOWEEK(DATEVALUE(CREATED_DATE) - DAY(DATEVALUE(CREATED_DATE))) (数式5~6行目)

e.で取得したその月の初日がその年の何週目にあたるかを計算します。計算結果として、「2023-12-1」からは「48」が得られます。

g. WEEKDAY(DATEVALUE(CREATED_DATE) - DAY(DATEVALUE(CREATED_DATE))) (数式8行目)

WEEKDAY関数によって、月の初日が週の何日目(1が日曜日)にあたるかを判断します。12月1日は金曜日なので、WEEKDAY関数の結果は「6」(金曜日)になります。

h. IF(WEEKDAY(...) = 1, 0, 1)  (数式7~11行目)

月の初日が日曜日の場合、0を返し、それ以外の場合は1を返します。12月の初日は日曜日ではない(WEEKDAY関数の結果が1ではない)ので、このIF文は「1」を返します。

i. ここまでの最終的な計算 (数式2~12行目)

1月の場合は直接ISOWEEK(DATEVALUE(CREATED_DATE))の結果を使い、1月以外の場合はISOWEEK(DATEVALUE(CREATED_DATE))からISOWEEK(DATEVALUE(CREATED_DATE) - DAY(DATEVALUE(CREATED_DATE)))を引いて、さらにh.の結果に基づいた調整(0または1)を加えます。
よって、「作成日」の値が「2023/12/13 0:00」の時に計算結果は、50(d.)-48(f.)+1(h.)= 3 となります。

j. TEXT(...) + "週目" (数式1~13行目)

最終的な週の数値をテキスト形式に変換し、「週目」という文字列を結果に追加します。最終的に「作成日」の値が「2023/12/13 0:00」の時、「3週目」と表示されます。

まとめ

今回はレポートの集計期間を「○週目」と表記する方法についてご紹介しました。
表記に使用した「行レベルの数式」は、レポート上で個々のレコードに対して計算を行う機能でレポートのカスタマイズやデータ分析に有用な機能です。また、今回のように表記を変更したいというケースなどレポートのみで何らかの処理を行いたい場合に使用することで、オブジェクトに新規項目を作成せずに処理を行えるので管理の面でも役立つ機能となります。

関連記事:レポートの集計期間を任意の期間にカスタマイズする方法

Salesforceに関するお悩みはありませんか?

今回ご紹介したレポートをはじめとするSalesforceの機能活用について、

「調べるのに時間がかかる...」
「作ったはいいがバグが起こらないか心配...」
「Salesforceを活用したいけどそこまで手が回らない...」

などお悩み事はありませんか?

Air合同会社ではSalesforceエンジニアを一人雇うほどの業務は無いが、業務を任せたいというお客様へ月 数時間~40時間で柔軟にご利用頂けるSalesforce活用支援サービスを提供しています。
機能の実装や改善のご提案、社内での内製化支援まで、Salesforce認定資格保持者で構成される当社チームが貴社のSalesforceのお悩みを解決いたします。Salesforceをより活用し課題解決を行なっていくための手段としてぜひご検討ください。

Salesforce業務を他社に外注するイメージがわかない…という方に向け、外注する際のメリット・デメリットやSalesforce開発の流れを以下の記事で解説しています。ぜひご覧ください。
Salesforce運用保守を外注するメリット・デメリットとは?
Salesforceのノーコード・ローコード開発の流れを解説!

また、弊社では「サービスについて簡単に知りたい」「Salesforceの使い方について相談したい」などSalesforceに関する無料相談会も随時実施しています。
貴社の課題解決のお力になれるよう、Salesforce認定資格を持つ担当者が心を込めてサポートいたします。まずはお気軽に下記ボタンよりお問い合わせください。

Salesforceオンライン無料相談会​​

Air合同会社では
「サービスについて簡単に知りたい」
「Salesforceの使い方について相談したい」

など、Salesforceのお悩みに関する無料相談会を随時実施しております。

\Salesforce認定資格を持つ担当者が対応!/

無料相談のご予約はこちら ×
  • この記事を書いた人
アバター画像

Suzuki

Salesforceの認定資格「Salesforce認定アドミニストレーター」を保有しています。 IT業務経験ゼロからSalesforceに関する実務に携わってきた経験をもとに、初心者の目線に立って各種機能の活用方法や設定手順をステップバイステップでわかりやすくご紹介します。

-Salesforce活用記事, レポート
-, ,