工数管理アプリを作ろう ~工数一覧編~

この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。

はじめに

前回から大分時間が経ってしまいましたが、以前作成したこちらの記事の続きの位置付けとなります
工数管理アプリを作ろう ~案件検索編~
今回は工数の一覧を表示できるように機能を追加していきたいと思います。
※今回はほとんどExcelの改修となります

 

現在の状態

詳しくは工数管理アプリを作ろう ~案件検索編~を参考にしてください。

現在はExcel上に4つのシートがあり、それぞれ”案件”,”メンバ”,”Xチームの工数”,”Yチームの工数”があります。現在実装しているのはこれらのシートを使って案件でメンバのアサインおよび稼働工数の一覧を表示する機能を実装しています。

 

今回実装する機能

今回は各メンバがそれぞれの月でどれぐらい稼働しているのかを確認する画面を作成したいと思います。機能・画面イメージは以下のような形です。


実装方法

Power Apps上でソートして数値を出す方法もありますが複雑になってしまうので、Excel上で表まで
作成し、Power Appsの画面上では表示だけするように構成していきます。


Excelシートの作成

まずは”工数一覧”というシートを作りPower Appsで表示するための表を作ります。
この時、表のグループや名前の部分は”メンバリスト”のシートから参照しておくと良いと思います。

続いて上記の表をPower Appsで参照するにはテーブル化する必要があるため、
挿入>テーブルの項目からこの表を”工数一覧”というテーブルにします

表示する年度ごとに参照する値を変更するため年度と上期/下期を示す表も作成しておきます。

ここで、上記の紙上期と下期についてですが。
該当年度の上期と下期で表に表示する工数の集計年度を変更するために設定します。

上記の表のような形とすることで前後三ヶ月の間は直近三ヶ月の工数の参照ができるようになります。
最後に、A列に対象月の数字を記入します。これはB列において”月”が入ってしまうと数字の参照がやりにくくなってしまうためです。

それでは集計テーブルの中身を埋めていきます。
工数の集計方法としてはSUMIFを使いました。
SUMIFでは加算対象と対象範囲をそれぞれ決めます。
それぞれ参照したい値のセルは以下のように配置されるように作成しているので、以後Excelの関数はこの値を使っています。

まず、7~12月を埋めます。この期間は上期/と下期で変化はありません。以下は例として使用したセル値です。

=IF($S$3="上期",IF($B3="X",SUMIFS(Xチーム!$G:$G,Xチーム!$B:$B,G$1,Xチーム!$C:$C,$R$3,Xチーム!$E:$E,$C3),IF($B3="Y",SUMIFS(Yチーム!$G:$G,Yチーム!$B:$B,G$1,Yチーム!$C:$C,$R$3,Yチーム!$E:$E,$C3),)),IF($B3="X",SUMIFS(Xチーム!$G:$G,Xチーム!$B:$B,G$1,Xチーム!$C:$C,$R$3,Xチーム!$E:$E,$C3),IF($B3="Y",SUMIFS(Yチーム!$G:$G,Yチーム!$B:$B,G$1,Yチーム!$C:$C,$R$3,Yチーム!$E:$E,$C3),)))

続いて4~6月です。この期間は下期の場合年度部分を+1する必要があります。
使用したセルの例を以下に記載します。

=IF($S$3="上期",IF($B3="X",SUMIFS(Xチーム!$G:$G,Xチーム!$B:$B,D$1,Xチーム!$C:$C,$R$3,Xチーム!$E:$E,$C3),IF($B3="Y",SUMIFS(Yチーム!$G:$G,Yチーム!$B:$B,D$1,Yチーム!$C:$C,$R$3,Yチーム!$E:$E,$C3),)),IF($B3="X",SUMIFS(Xチーム!$G:$G,Xチーム!$B:$B,D$1,Xチーム!$C:$C,$R$3+1,Xチーム!$E:$E,$C3),IF($B3="Y",SUMIFS(Yチーム!$G:$G,Yチーム!$B:$B,D$1,Yチーム!$C:$C,$R$3+1,Yチーム!$E:$E,$C3),)))
最後に1~3月です。この期間は上期の場合年度部分を-1する必要があります。
使用したセルの例を以下に記載します。※M3の値です
=IF($S$3="上期",IF($B3="X",SUMIFS(Xチーム!$G:$G,Xチーム!$B:$B,M$1,Xチーム!$C:$C,$R$3-1,Xチーム!$E:$E,$C3),IF($B3="Y",SUMIFS(Yチーム!$G:$G,Yチーム!$B:$B,M$1,Yチーム!$C:$C,$R$3-1,Yチーム!$E:$E,$C3),)),IF($B3="X",SUMIFS(Xチーム!$G:$G,Xチーム!$B:$B,M$1,Xチーム!$C:$C,$R$3,Xチーム!$E:$E,$C3),IF($B3="Y",SUMIFS(Yチーム!$G:$G,Yチーム!$B:$B,M$1,Yチーム!$C:$C,$R$3,Yチーム!$E:$E,$C3),)))

平均にはAVERAGE関数を使って作成します。
ここまで完成したらテストを実施していきます。
XチームおよびYチームに以下のような形で工数をいれました。

工数に各月の数字を入れてわかりやすくしています。
また、2022年度に関しては上記の規則から更に10倍の工数を入れています。

上記を入れた結果は以下となりました。
※表は少し見やすくするために色をつけています。

想定通り、表に工数が入ってくれました。これでExcel側の準備は完了です。


PowerAppsの改修

まずは扱いづらくなるので前回作成した画面の名前を”案件検索”に変えてあげましょう。

そして、新しく画面を作ります。
画面は”上期画面”とします。

イメージに沿ってボタンを配置します。
案件検索ボタンには以下を入れて移動できるようにしましょう。
右上のボタンは一旦おいておきます。

Navigate(案件検索)

続いて、今回Excelで作成したテーブルを追加します。
データ>データの追加からテーブルを増やします。

増やしたらテーブルを追加しましょう
上期の画面なので
4~9月を表示させます。

これでほぼ完成です。最後にこの上期画面をコピーして下期画面を作ります。
画面の複製から簡単にコピーできます。


コピーしたら、4~9月の表示を10~3月に変えます。
データテーブルのプロパティ>フィールドの編集から実施できます。

右上のボタンのOnSelect(詳細設定)に
下期画面の場合は

Navigate(上期画面)

上期画面の場合は

Navigate(下期画面)

を入れてプロパティにボタンの名前を入れます。

これで上期/下期画面の作成は終了です。
続いてデフォルト画面の設定をします。
このデフォルト画面の設定とはアプリをスタートしたときの動作を定義することができAppの詳細設定>OnStart部分で編集します。

前回作った部分から追加して今日が何年度のどの時期(2021年度下期や2022年度上期など)なのかを定数として持っておきたいと思います。
以下を追加します。periodが1の時は上期,2の時は下期となります。
If(4<=Month(Today()),If(10>=Month(Today()),Set(period,1),Set(period,2)),Set(period,2));

最後に案件検索の画面から上期/下期画面に移動するボタンを作ります。
この工数画面ボタンはボタンを押した日が何年度のどの時期(2021年度下期や2022年度上期など)なのかによって行き先を変えるようにします。
なのでOnselectは条件分岐のIfを使います。

If(period=1,Navigate(上期画面),Navigate(下期画面));

完成です。

まとめ

今回は新たに月ごとの工数合計を示す表を追加しました。
これにより誰がどれだけ稼働しているかが一目でわかるようになりました。

最後に完成した画面がこちらです。

ちょっと味気ないですね・・・
また機会があれば機能拡充していきたいと思います。


2022年9月追記
今回作成した内容を改修(大きく変更)したブログを投稿してます
もしよろしければ見てみてください
工数管理アプリを作ろう ~サマリ改修編~

いいね (この記事が参考になった人の数:3)
(↑参考になった場合はハートマークを押して評価お願いします)
読み込み中...

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルクロステクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください