プログラミング学ぶ前から、エクセル関数面白い♪と思ってたcacaponです〜
こんばんは〜 cacaponです〜
標準的な関数を組み合わせて、
シフト表を作ってみました〜
元々、エクセルが好きで
仕訳を入力すると、
月の現金出納が分かるシートを作ったりしてたので、
ある程度の表だったら
作れるつもりなのです〜
で、今回作ったものですが…
メインの予定を入力すると、担当者の予定が自動で決まる。
という感じで作ってみました〜
使った関数の一例を書いておきますね~
<C2>
=if(mod($I2,3)=1,concatenate($G2,",",$H2),"")
通しNoを割って、指定の数字だったら、
使う素材のNoをくっつけて表示、無かったら空白という感じですね~
指定の数字人ごとに変えてますが手打ちにしちゃっているので
いつか自動化したいですね~
<G2>
=if(INDIRECT("F"&row(A2)) = "",$M$2+((row(G2)-2)-counta(OFFSET($F$2,0,0,row(A2)-1,1)))*2,"")
結構複雑になってしまいました~
INDIRECT() はF2、つまりmainの所をさしてます~
普通にF2ってやると切り取り作業でぐちゃぐちゃになるので
INDIRECT()を使ってます~
でmainが空白だったら、素材Noを表示しないといけないので
それを出す式を入れています~
それが↓の部分ですね~
$M$2+((row(G2)-2)-counta(OFFSET($F$2,0,0,row(A2)-1,1)))*2
$M$2は写真無いけど、素材Noの初期値が入ってます~
row(G2)-2は現在の行の位置ですね~
-2は開始位置を0にしたかったので-2してます~
counta(offset($F$2,0,0,row(A2)-1,1))はやってることは
counta($F$2:F2)と同じです~
その日までにmainの列に何か入ってないか数えてます~
循環参照でエラーになるのとmainを切り取りするとズレるので、
それの対策で複雑になってます~
最後の*2は素材を二つずつ使うので2,4,6 ...のような連番にしたかったので
2倍しています~
やりたい事は初期値 +2 にした数列(ただしmainがあるところは飛ばす)
って感じですね~
<H2>
=if(G2="","",G2+1)
隣が空白じゃなかったら隣を+1した数字にしています。
<I2>
=if(INDIRECT("F"&row(A2)) = "",$L$2-counta(OFFSET($F$2,0,0,row(A2)-1,1))+row(I2)-2,"")
これも考え方はG2と同じです~
×2がないくらいですかね?
…と、そんな感じの関数を組み合わせ
上の内容をコピーしたりして1か月分のテンプレートを作りました~
元々、予定変更した時に、
手動で直すのめんどくさいという話が出てて、
なら自動にしてしまえないか?
というのが作ろうと思ったきっかけです〜
こう言った自分の作ったもので
少しでも役に立ってくれると嬉しいなぁ
と思うcacaponなのでした〜