LANG SELRCT

コードを書く場所についてはこちら

2018年12月16日日曜日

西暦とその年の何週目かをWEEKNUMとARRAYFORMULAで出してみる


WEEKNUM(日付, 種類)を使ってみる

ARRAYFORMULA関数を組み合わせて
与えられた日付がその年の何週目にあたるか出したときの備忘録です



日付がその年の何週目かを知りたいとき

CONCATENATEで書くとこのように書けますが
=CONCATENATE(LEFT(B2,4), "-", WEEKNUM(B2,2),"週")

これだとARRAYFORMULAで囲むときに上手く行かなかったので
(補足の失敗談参照)

同じ結果を得られる&で結合した数式を例にします
=LEFT(B2,4)&"-"&WEEKNUM(B2,2)&"週"

これをARRAYFORMULA関数で先頭行に書くだけにしたい
というのがこの記事でやりたいことです

これを
=LEFT(B2,4)&"-"&WEEKNUM(B2,2)&"週"

こうする
=ARRAYFORMULA(LEFT(B2:INDIRECT("B"&COUNTA(B2:B)+1),4)&"-"&WEEKNUM(B2:INDIRECT("B"&COUNTA(B2:B)+1),2)&"週")

この長い数式を分解して理解する手順は以下の記事に書きました
特定の列の値から特定の文字だけ抜き出したい(ARRAYFORMULA関数で)



補足 (失敗談)

この数式は
=LEFT(B2,4)&"-"&WEEKNUM(B2,2)&"週"

こう書いても同じ結果を得られますが
=CONCATENATE(LEFT(B2,4), "-", WEEKNUM(B2,2),"週")

ARRAYFORMULA関数の中でこのようにつなげると
=ARRAYFORMULA(CONCATENATE(LEFT(B2:INDIRECT("B"&COUNTA(B2:B)+1),4),"-",WEEKNUM(B2:INDIRECT("B"&COUNTA(B2:B)+1),2)&"週"))

結果が1つのセルに結合されてうまくいきませんでした


関連記事

特定の列の値から特定の文字だけ抜き出したい(ARRAYFORMULA関数で)