みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルの関数式の設定。

セルB1~M1に月(1~12月)を入力しておきます。
セルA1に任意の日付を入力すると(例えば1/21と入力)セルB2~M2のうち対応するセル(C2(2月の下))に○印、その他のセルは空白になるように関数を使いたいのですが、どのように式をたてればよいか、分かるかた教えてください。
A列に任意の日付を入力すると、B~M列の対応する月のセルに○印が自動的に入れたいのです。

MONTH関数やDAY関数で月と日を別のセルに取り出すようにして、IF関数を使ってやってみても式をどうたててよいのか分からず、全然ダメです。

任意の日付が12月21日~1月20日の場合は1月に○
      1月21日~2月20日の場合は2月に○
      2月21日~3月20日の場合は3月に○
といった具合に、20日締めにしたいのです。

年度は気にしません。
よろしくお願いします。

投稿日時 - 2004-02-14 14:05:26

QNo.779214

困ってます

質問者が選んだベストアンサー

#3ですが、ちょっと追加です。

日付けが空欄のときはなにも表示しないようにし、下にもコピーするのであれば、

B2に
=IF(A2="","",IF(MONTH($A2-20)=12,"○",""))

C2に
=IF($A2="","",IF(MONTH($A2-20)=C$1-1,"○",""))

を入れてこれを、M2 までコピー  でどうでしょうか。

投稿日時 - 2004-02-14 15:42:13

お礼

すみません。ちゃんとできました!ありがとうございました。

投稿日時 - 2004-02-14 17:12:08

ANo.4

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.7

月の列が固定されているのであれば、COLUMN()が使えるので、

B2セルに

=IF(MOD(MONTH($A$1-20),12)-2=COLUMN(),"○","")

をコピペして、B2をコピーして、C2からM2へペーストしてください。
こんな感じでいかがですか?

投稿日時 - 2004-02-14 15:58:24

ANo.6

B2セルに

=IF(MOD(MONTH($A$1-20),12)+1=VALUE(LEFT(B$1,LEN(B$1)-1)),"○","")

をコピペして、B2をコピーして、C2からM2へペーストしてください。
こんな感じでいかがですか?

投稿日時 - 2004-02-14 15:54:37

ANo.5

VLOOKUPの応用例としてみました。
(1)C1:H1に1月、2月、・・、12月と入れます(オートフィルで可能)。
(2)A2から下に日付を入れます。(去年の12/21-12/31は2003/12/21や2003/31と入れてください。12/21は今日では2004/12/21となってしまいます。エクセルの仕様です。)
(3)日付の範囲を割り出すテーブルをSheet2に作ります。A1:B12まで。
(A列) (B列)
2003/12/201
1月20日2
2月20日3
3月20日4
4月20日5
5月20日6
本番では12月20までいれること。
日付もエクセルでは数値に過ぎ無い事を思い起こしてください。
(4)Sheet1のB2セルに
=VLOOKUP(A2,Sheet2!$A$1:$B$12,2,TRUE)
といれ、B2の式をB3より式を複写します。$は大事です。
Trueは大事です。
(5)C2に式
=IF($B2=COLUMN(C2)-2,"○","")を入れN2まで複写します。$B2の$は大事です。
B2:N2を範囲指定し、N2で+ハンドルを出し、下へ引っ張ります。平面的にびっしり、関数式が複写されます。
(テスト例)OKWEB画面表示の都合で前半6ヶ月だけにしています。
1月2月3月4月5月6月
3月15日3○
2月12日2○
5月5日5○
4月23日5○
1月1日1○
12月21日1○
3月5日3○
6月6日6○
5月4日5○
4月4日4○
3月9日3○
(6)B列は非表示で隠すとか、見えない列に設定することは可能です。式は変りますが。

投稿日時 - 2004-02-14 15:46:45

お礼

回答ありがとうございます。LOOKUP関数は分かっていたつもりでしたが、まだまだでした。エクセルでは日付は数値なのだということは理解していましたが、実際どうやったらいいのか思いつきませんでした。

投稿日時 - 2004-02-14 17:13:47

ANo.3

B2に
=IF(MONTH($A2-20)=12,"○","")

C2に
=IF(MONTH($A2-20)=C1-1,"○","")
を入れてこれを、M2 までコピー  でどうでしょうか。

投稿日時 - 2004-02-14 15:29:26

お礼

回答ありがとうございます。やってみましたが、うまくいきませんでした。

投稿日時 - 2004-02-14 17:11:21

ANo.2

先に20日以下かどうかで場合わけします。
C2に以下の式をコピーし、M2までドラッグしてください。

=IF(DAY($A$1)<=20,IF(MONTH($A$1)=C1,"O",""),IF(MONTH($A$1)+1=C1,"O",""))

そして、1月のB2には、以下の式をコピーしてください。

=IF(DAY($A$1)<=20,IF(MONTH($A$1)=B1,"O",""),IF(MONTH($A$1)=12,"O",""))

投稿日時 - 2004-02-14 15:26:24

お礼

回答ありがとうございます。1月と他の月では式を変えないといけないのですね。

投稿日時 - 2004-02-14 17:09:52

ANo.1

ちょっと長いですが、

B2セルに

=IF(OR(AND(DAY($A$1)<=20,MONTH($A$1)=VALUE(LEFT(B$1,LEN(B$1)-1))),AND(DAY($A$1)>20,MOD(MONTH($A$1),12)+1=VALUE(LEFT(B$1,LEN(B$1)-1)))),"○","")

をコピペして、B2をコピーして、C2からM2へペーストしてください。
こんな感じでいかがですか?

投稿日時 - 2004-02-14 15:21:38

お礼

回答、ありがとうございます。やってみましたが、エラーになってしまいました。

投稿日時 - 2004-02-14 17:08:56

あなたにオススメの質問