• ベストアンサー

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

セル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日締めにしたいのです。 年度は気にしません。 よろしくお願いします。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.4

#3ですが、ちょっと追加です。 日付けが空欄のときはなにも表示しないようにし、下にもコピーするのであれば、 B2に =IF(A2="","",IF(MONTH($A2-20)=12,"○","")) C2に =IF($A2="","",IF(MONTH($A2-20)=C$1-1,"○","")) を入れてこれを、M2 までコピー  でどうでしょうか。

Oceans12
質問者

お礼

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

その他の回答 (6)

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.7

月の列が固定されているのであれば、COLUMN()が使えるので、 B2セルに =IF(MOD(MONTH($A$1-20),12)-2=COLUMN(),"○","") をコピペして、B2をコピーして、C2からM2へペーストしてください。 こんな感じでいかがですか?

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.6

B2セルに =IF(MOD(MONTH($A$1-20),12)+1=VALUE(LEFT(B$1,LEN(B$1)-1)),"○","") をコピペして、B2をコピーして、C2からM2へペーストしてください。 こんな感じでいかがですか?

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.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/20 1 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列は非表示で隠すとか、見えない列に設定することは可能です。式は変りますが。

Oceans12
質問者

お礼

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

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

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

Oceans12
質問者

お礼

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

  • 0shiete
  • ベストアンサー率30% (148/492)
回答No.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",""))

Oceans12
質問者

お礼

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

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.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へペーストしてください。 こんな感じでいかがですか?

Oceans12
質問者

お礼

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

関連するQ&A

  • ■EXCELでこんな関数なんですが・・・教えて!!

    たとえばA列のセルに任意の数値が入力されています。B列のセルにある条件で日付が入力されます。そして別のセルにB列の日付が入力されるごとに隣接するA列の数値を合計していく関数なんですが。よろしくお願いします。

  • エクセル関数を使いこの様なことができますか?

    こんにちは エクセルのあるセルに数式(又は関数)を入力し、別のセルに数字を入力したら、セルの塗りつぶしの色が設定しておいた色に変わるようなことはできないでしょうか? (例えば、C1には当初は何も入力されておらず、そのC1にある数字を入力するとA1のセルの色が赤に変わるようなことを考えています。なお、色を変えたいセル自身には数字が入力されている場合といない場合と二通りあるため、いずれの場合も対応できるようにしたいのです。 つまり、初期状態では、A列(色を変えたいセル列)には数字が入ったセル、入っていないセルが混在しており、C列(ここに数字が入力されるたびにA列の対応する行のセルの色を変えたい)には何も入力されていない。この状態で、任意のC列のあるセルに数字を入力すると同じ行にあるA列のセルの色を変えたい、ということをしたいのです。) 具体的にA列にどの様な数式を入力すればよいかを教えて下さい。 (或いは、そのようなことをするための式(関数)はA,C以外の列のセルに入れる必要があるかもしれませんが(例えばB列)、それでもかまいません) よろしくお願いします。

  • エクセル関数?

    エクセル2000を使用しています。関数を使用するかわかりませんが2つ教えてください。 1.月を入力すると自動的に月末の日付が表示される。 (例:A1のセルに1と入力するとB1のセルに1月の月末日である31と表示) 2.A列に入力してある種類ごとにB列の数値の合計をB列の最後に出す。 よろしくお願いします。

  • エクセルの関数

    A列に日付B列に金額が入っています。 C1とD1に日付を入力するセルをつくり C1の日からD1の日のB列金額の合計を出したい場合 どのような関数を使えば良いですか?SUMIFで出来ますか?

  • エクセルの関数について

    下記の内容を表示する関数を教えてください。 セルAには日付が入ります。セルBに関数が入ります。 *セルBにはセルAの日付の直後の日曜日の日付が入ります。 *15日をまたぐときはBには直後の15日が入力される。 例 セルA(06/8/1)→セルB(06/8/6) セルA(06/8/14)→セルB(06/8/15) セルA(06/8/15)→セルB(06/8/15) セルA(06/8/16)→セルB(06/8/20) IF関数など組み合わせてみましたが条件通りの式ができません。 誰か教えてください、お願いします。

  • Excel 検索に関する関数について教えてください

    色々と試しましたが、どうしてもうまくいかないので教えてください。 A列に休日を除いた日付(生産カレンダー)が入っています。 日付は手入力です。 A列 2008/5/14 2008/5/15 2008/5/16 2008/5/19 2008/5/20 2008/5/21 B1セルに任意の日付が入力された時、C1のセルに任意に入力されている数値分だけ前の日付をA列を参照してD1セルに表示したいのです。 例えばB1セルに2008/5/20、C1セルに3と入力された場合、D1セルには2008/5/20の3つ上のセルの値、2008/5/15を表示させたいのです。 生産カレンダーは列でなく、行にしても可です。 LOOKUP系やOFFSETなども複合したりして試してみましたが、うまくいきません。 ご教授よろしくお願いします。

  • Excelでどの関数を使えばいいですか?

    以前作られていたものが壊れてしまったようです。 次のような場合に、どの関数を使えばよいか教えてください。 A1のセルに「H16.5.18」と入っています。 (このセルは直接入力してあります) B1のセルに関数を使いたいのですが、 A1を参照して、B1には「H16.6」としたいのです。 つまり、A1のセルに入っている日付の次の月を B1に返したいのです。 A1は年月日ですが、B1に入る日付は年月のみです。 どうぞよろしくお願いします。

  • エクセル関数について

    エクセル関数の使用方法について教えてください。 また、ストップしてしまいました。 日付から曜日を求められるように、CHOOSE関数とWEEKDAY関数を使用して以下のとおり入力しました。 (実際のセルの表示は違うのですが、分かりやすいようにA1とB1にしました) CHOOSE(WEEKDAY(A1),"(日)","(月)","(火)","(水)","(木)","(金)","(土)") 曜日を表示したいセルはB1です。 私としては、A1に日付が入力されていない場合は、関数が入っていても、B1は空白であってほしいのです。 いろいろ調べていたら、IFERROR関数が有効?のようなのですが、ソフトが古いらしく対応しておりません。 このような場合はどのようにしたら解決できるでしょうか。 因みに、IF関数の使用を試みたのですが、うまくいきません。 詳しい方、どうか教えてください。 よろしくお願いします。

  • エクセル関数で。

    A1のセルが×だったらB1のセルには“-”を入力する、という式をBの列に入れたいのですが、関数式の作り方を教えて下さい。

  • エクセル関数式での縦横値の拾い上げ。

     初めまして、よろしくお願いします。   A  B  C  D  E 1 5        6 2 3        1 3 6        7 4 1        0 5 9        3 6 4        7 7 2        3 8 0        5 9 10  A10のセルに”3”と入力すると一致するA列のセルから(ここではA2セル)右に3下に4進んだ”7”(ここではD6)の値をB10のセルに拾い上げる関数式が有りましたら、よろしくお願いします。  

専門家に質問してみよう