Power Apps Power Appsで満年齢を求めてみる

Power Appsで入力フォームを作るとき、生年月日を入力すると勝手に年齢を計算してくれると楽だな~と思い、満年齢の求め方を考えてみた。

スポンサーリンク

ExcelだとDATEDIFだけでいけるんだけど。。。

Excelで満年齢を求める場合は、DATEDIF関数を使って単位をYにするだけでいけるのだけれど、Power Appsは単純にDateDiffを使うだけじゃだめっぽい。

単純にDateDiffでYears指定するとその年にいくつになるか?が出てしまう。僕はまだ33。
日付での計算はうるう年がめんどくさいので、DateDiffの月指定を12で割って切り捨ててやればいけそうだったけど、
誕生月の人は、誕生日が来なくても老けてしまう。。。

ということで、色々と試してみた。

方法1:「誕生月と今日の月が同じときは日付も計算する」方式

単純に考えるとこの方法で、式はこんな感じ。

If(
    Month(誕生日)=Month(Today()) && Day(誕生日) > Day(Today()),
    RoundDown(DateDiff(誕生日,Today(),Months) / 12, 0) - 1,
    RoundDown(DateDiff(誕生日,Today(),Months) / 12, 0)
)

※誕生日はDate型で

誕生日を変えると満年齢がいい感じに動くので、間違ってなさそう。

方法2:計算で求める方法

式はこんな感じ。

RoundDown((Value(Text(Today(),"[$-ja]yyyymmdd")) - Value(Text(誕生日,"[$-ja]yyyymmdd")))/10000, 0)

※誕生日はDate型で

するといい感じで動作する。

正直、動けばOKだと思うのでどちらの式でもよいと思うのだけれど、方法2の参考サイトに書いてある通り、もし厳密な満年齢を必要とするアプリに組み込む場合は、「満年齢は誕生日の前日に加算される」ことや、「年齢が加算されるタイミングは誕生日の前日終わる瞬間(前日の24:00)」であることを念頭に入れて処理に組み込む必要がある。

学年の始めが4/2生まれの人の(4/1生まれは前年の最後)となる理由がこれらとのこと。

コメント

タイトルとURLをコピーしました