- ベストアンサー
エクセルで週表示の隔週表示を実現する方法
- エクセルで週表示の隔週表示を実現する方法について教えてください。
- 現在、エクセルで月の表に曜日を入力し、特定の週を任意で選択して隔週表示を行っていますが、もう一項目を追加して週を指定できるようにしたいです。
- 具体的な計算式やセルの書式について教えていただけると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>もう一項目B列を追加して1.3(第一第三)などの週を任意で選択して隔週表示出来るようにしたい との事ですが、それだけしか説明がないのでは、具体的にはどの様な形式で第一第三などの週を指定されるおつもりなのかという事が今一つ解りません。 それに、A3セルに曜日を入力して、B列のセルに第一第三などの週を指定する値を入力すとした場合、例えば「第2、第3月曜」と「毎週水曜」、「第1、第4木曜」に「◎」を表示させる場合などの様に、曜日ごとに週が異なっている場合には、B列のセルに入力されている「第一第三などの週を指定する値」が「月」、「水」、「木」などの中のどの曜日に関する「週を指定する値」なのかという事を、どの様に区別すれば良いのでしょうか? ですから、やり方を少々変えて、例えば以下の様にされては如何でしょうか? 前提条件として、A3セルには例えば 「毎週火曜、第1.3.5水・金、第2・4月土曜」 などの様に、1つのセル内に曜日と第何週(或は毎週)なのかを指定する文字列をまとめて入力する様にします。 その際、「第1.3.5水・金」や「第2・4月土曜」などの様に第何週なのかを表す数字や、曜日を表す文字の間を区切る記号等は「.」でも「・」でも「,」でも何を使用しても構いませんし、「第135水金」などの様に区切らずに記述しても構いません。(「第一、二」などの様な漢数字は不可) 但し後述する関数では、例えば「第2第4月曜」などの様に第何週なのかを表す数字同士の間に「第」や「毎」の文字が挟まっている場合、「曜日の直前にある『第』や『毎』の文字」の位置~「『月曜』等の曜日を表す文字」の位置の間にある数字しか「その曜日に関する週の数字」と見做されず、「第2第4月曜」の場合には、曜日を表す「月」の文字の直前にある「第」の文字は、「第4」の「第」の文字ですので、「第4月曜」の部分のみが「月曜に関する記述」と見做されて、その更に前の部分にある「第2」に関しては「月曜に関する記述」とは見做されないため、「第4月曜」には「◎」が表示されるのに対して、「第2月曜」には「◎」が表示されなくなってしまいます。 ですから、「第2第4月曜」などの様に同じ曜日に関する記述の途中に「第」や「毎」の文字が挟まっている様な事は無い様に願います。 一方、曜日に関しては「月曜土曜」などの様に途中に「曜」の文字が挟まっていても構いません。 但し、「毎週火曜日」などの様に「曜」などの後に「日」の文字が入っていますと、「日曜」に関する記述と区別出来なくなりますので、「日曜」に関する記述以外ではA3セルに「日」の文字を入力しない様にして下さい。 同様にA3セルには、「月曜」に関する記述以外では「月」の文字を入力しない様にして下さい。 上記の条件が守られている場合において、以下の様な方法を用いれば、指定した週の指定した曜日の日にのみ「◎」が表示されます。 まず、B2セルに次の関数を入力して下さい。 =IFERROR(($A$1&"/"&$A$2&"/"&COLUMNS($B2:B2))+0,"") 次に、B2セルの書式設定の表示形式を[ユーザー定義]の d に設定して下さい。 次に、B3セルに次の関数を入力して下さい。 =IF(B$2="","",IF(ISNUMBER(FIND(CHAR(1),SUBSTITUTE(SUBSTITUTE(ASC(CLEAN(REPLACE(LEFT($A$3,FIND(TEXT(B$2,"aaa"),$A$3)),1,FIND(CHAR(1),SUBSTITUTE(SUBSTITUTE(LEFT($A$3,FIND(TEXT(B$2,"aaa"),$A$3)),"毎","第"),"第",CHAR(1),LEN(LEFT($A$3,FIND(TEXT(B$2,"aaa"),$A$3)))-LEN(SUBSTITUTE(SUBSTITUTE(LEFT($A$3,FIND(TEXT(B$2,"aaa"),$A$3)),"毎",),"第",))))-1,))),"毎",CHAR(1)),ROUNDUP(DAY(B$2)/7,0),CHAR(1)))),"◎","")) 次に、B2~B3のセル範囲をコピーして、C2~AF3のセル範囲に貼り付けて下さい。 以上です。
その他の回答 (2)
- rikushiki
- ベストアンサー率0% (0/2)
補足に対する回答です。 最後の部分の "")) を ""), "") としてください。 頭に付け加えたIFのFALSE値が設定されていないため "FALSE" が返されてそれが表示されています。ですので、"" とすることで空白にします。
- rikushiki
- ベストアンサー率0% (0/2)
セルB3に第何週かを入力するとして、第1週が含まれているかを調べるには =COUNTIF(B3, "*1*") とすると分かります。これを第2週、3週とする場合は "*1*" の部分を変えればOKです。 注意点として、文字列で判断しているので第1週のみの場合などは '1 とするなど文字列扱いにしておかないといけないです。 そして判定部分の頭に条件分岐を加えると、 C3=IF(COUNTIF(B3,"*1*")>0, IF(COUNTIF(A3, "*" & TEXT(DATE(A1, A2, C2),"aaa") & "*" )>0, "◎", ""), "") となります。 これを1週間分ずつ用意して上げれば実現できると思います。
補足
ありがとうございます 早速 B列を加え文字入力で1や2と入力し =IF(COUNTIF(B3,"*1*")>0,IF(COUNTIF($A3,"*"&TEXT(DATE($A$1,$A$2,$C$2),"aaa")&"*")>0,"◎","")) 入れて試しましたが FALSEが表示されます よろしくお願いいたします
お礼
kagakusuki 様 ご親切に回答いただきありがとうございます 無事難問がご教授によって表示させることが出来ました 質問内容が曖昧でお手を煩わせ申し訳ございませんでした ご提案の事が一番したかった事で、浅い知識で勝手にB列に 項目追加したらなどと考えていました この方式ですと全く問題なく初期願望の計算式ができ感謝致します 本当に助かりまして業務効率が上がり助かります