Salesforce活用記事 レポート

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

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

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

はじめに

こんにちは。
今回は、レポートの集計期間を任意の期間にカスタマイズする方法についてご紹介します。
レポートの集計期間は、レポートの集計期間を週単位で表示する方法を紹介する記事でもご紹介したように、日付項目でレコードをグループ化することで[集計期間単位]という設定によって日次や週次など様々な粒度に切り替えることが可能ですが、例えば20日締め(前月21日〜当月20日)など任意の日付による切り分けはその設定上で行うことができません。
そこで、今回はレポート上で数式を利用することによって、集計期間を任意の日付によって切り分ける方法をご紹介します。

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

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

設定方法をご紹介していくにあたって、「商談」レコードについて20日締め(前月21日〜当月20日)で月単位の作成レコード件数を表示するレポートを作成することとします。

1. レポートを作成する

ではレポートの作成から手順をご紹介していきます。

[レポート]で[新規レポート]をクリックし、レポートタイプ名[商談]を選択、[レポートを開始]をクリックします。するとレポートが作成され画像①のようにレポートの編集画面が表示されます。
そして、設定したいことについて可能な限りシンプルな説明・画面でお伝えしたいので、今回の説明に不要な項目をレポートから削除して画像②のようなレポートの状態から設定を行っていきます。なお、レポートに項目を追加・削除したい場合は画面左側の[アウトライン]タブの[列]から行うことが可能です。

画像①
画像②

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

レポートで20日締め(前月21日〜当月20日)で月単位の作成レコード件数を表示することは、「行レベルの数式」列をレポートに追加することによって実現が可能です。「行レベルの数式」とは、レポートに表示されている個々のレコードに対して数式によって処理を行う機能となります。

具体的には「作成日」の値を20日締めの月ごとに分類されるように「行レベルの数式」によって変換し、その変換された値が入力される「行レベルの数式」列をグループ化することによって、20日締め(前月21日〜当月20日)で月単位の作成レコード件数をレポートに表示します。

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

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

画像①
画像②

② 「作成日」の値を20日締めの月ごとに分類されるように変換する数式を設定する

次に[数式]ボックス内で「作成日」の値を20日締めの月ごとに分類されるように変換する数式を設定していきます。今回は、例えば2024年1月(2023/12/21~2024/1/20)であれば「202401」、2024年2月(2024/1/21~2024/2/20)であれば「202402」と変換することとします。
画像③のように数式を入力し、[構文を確認]をクリックして数式にエラーがないことを確認、[適用]をクリックします。なお、数式の内容については複雑であるため設定手順のあとで解説していきます。

画像③
<数式>
IF(
  DAY(DATEVALUE(CREATED_DATE)) < 21, 
  TEXT(
    YEAR(DATEVALUE(CREATED_DATE)) * 100 + MONTH(DATEVALUE(CREATED_DATE))
  ),  
  IF(
    MONTH(DATEVALUE(CREATED_DATE)) = 12, 
    TEXT(YEAR(DATEVALUE(CREATED_DATE)) + 1) & '01', 
    TEXT(
      YEAR(DATEVALUE(CREATED_DATE)) * 100 + MONTH(DATEVALUE(CREATED_DATE)) + 1
    )
  )
)

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

②で数式を設定し、レポート編集画面に戻ると画像④のように[列]に「月(20日締め)」が配置されています。この「月(20日締め)」で[列をグループ化]することによって、レポート上で20日締め(前月21日〜当月20日)で月単位の作成レコード件数を表示することが可能となります。

そのためにまず[行のグループ化]を行います。画面左側の[アウトライン]タブをクリックし、[列]に配置されている「商談 所有者」を[行をグループ化]へドラッグ&ドロップします。すると画像⑤のようにレポートの「商談 所有者」の列の表示が変化し、同じ「商談 所有者」毎にレコードがまとめられるようになります。

画像④
画像⑤

次に、同じく画面左側の[アウトライン]タブにて、[列]に配置されている「月(20日締め)」を[列をグループ化]へドラッグ&ドロップします。すると画像⑥のようにレポートの「月(20日締め)」の列の表示が変化し、レポート上で20日締め(前月21日〜当月20日)で月単位の作成レコード件数を表示することができました。以上で設定は完了です。

画像⑥

④ 数式の解説

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

IF(
  DAY(DATEVALUE(CREATED_DATE)) < 21, 
  TEXT(
    YEAR(DATEVALUE(CREATED_DATE)) * 100 + MONTH(DATEVALUE(CREATED_DATE))
  ),  
  IF(
    MONTH(DATEVALUE(CREATED_DATE)) = 12, 
    TEXT(YEAR(DATEVALUE(CREATED_DATE)) + 1) & '01', 
    TEXT(
      YEAR(DATEVALUE(CREATED_DATE)) * 100 + MONTH(DATEVALUE(CREATED_DATE)) + 1
    )
  )
)

②の数式は、「作成日」の日付がその月の21日より前か後かにあたるか、12月であるかどうかを計算し、最終的に「作成日」の値を「202401」のように変換します。以下では数式の構造を順に追っていき、具体例として「作成日」の値が「2024/2/7 0:00」である場合にどう計算されるかを示し、この数式を読み解いていきます。

ステップ1:1つ目のIF関数とその条件(数式1~13行目)

IF関数は、特定の条件が真(true)か偽(false)かに基づいて、2つの結果のうちの1つを返します。この関数の基本形式はIF(条件, 真の場合の結果, 偽の場合の結果)です。この数式では「条件」は2行目、「真の場合の結果」は3~5行目、「偽の場合の結果」は6~12行目に記載されています。

DAY(DATEVALUE(CREATED_DATE)) < 21

まず、DATEVALUE関数によって「作成日」から日付の部分のみを抽出します。「作成日」は「日付/時間」型の項目であり、数式内の計算を行うにあたって日付だけを取り出す必要があるためこの処理を行います。
そして、DAY関数によって、DATEVALUE関数で取り出した日付の日の部分を抽出しそれが21より小さいかどうかを評価します。

ステップ2:真の場合の結果 (数式3~5行目)
TEXT(YEAR(DATEVALUE(CREATED_DATE)) * 100 + MONTH(DATEVALUE(CREATED_DATE)))

条件が真の場合、「作成日」からYEAR関数によって年を、MONTH関数によって月の部分の値をそれぞれ抽出します。また、YEAR関数の箇所を100倍にしてからMONTH関数の箇所と足すことによってYYYYMM形式の数値としています。最後にTEXT関数によってこれを文字列に変換し、「YYYYMM」という結果を得ます。

ステップ3:偽の場合の結果・2番目のIF関数 (数式6~12行目)
IF(MONTH(DATEVALUE(CREATED_DATE)) = 12, TEXT(YEAR(DATEVALUE(CREATED_DATE)) + 1) & '01', ...)

ステップ1の条件が偽の場合、「作成日」が12月であるかどうかを評価します。12月の場合、年を1つ進めて「YYYYMM」のMM部分を「01」とします。

ステップ4:12月でない場合の処理 (数式9~12行目)
TEXT(YEAR(DATEVALUE(CREATED_DATE)) * 100 + MONTH(DATEVALUE(CREATED_DATE)) + 1)

12月ではない場合、次の月を表す値をテキストで返します。

具体例 「作成日」の値が「2024/2/7 0:00」である場合

ステップ1: DAY(DATEVALUE("2024/2/7 0:00")) < 21は真です。
ステップ2: 結果はYEAR(DATEVALUE("2024/2/7 0:00")) * 100 + MONTH(DATEVALUE("2024/2/7 0:00"))、つまり202402となり、最終的な返り値は「202402」となります。

まとめ

今回はレポートの集計期間を任意の期間にカスタマイズする方法について、「商談」レコードについて20日締め(前月21日〜当月20日)で月単位の作成レコード件数を表示するレポートを例としてご紹介しました。ご紹介した数式の「21」の部分を調整することでレポートの期間集計を任意の期間にカスタマイズすることが可能となります。

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

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活用記事, レポート
-, ,