【至急】万年カレンダー作成におけるCOLUMN関数の解説

このQ&Aのポイント
  • 万年カレンダー作成時に使用するCOLUMN関数の解説を求めています。
  • 現在、COLUMN関数の使い方について理解できておらず、解説が必要です。
  • 質問文章の関数は、年月日のスタート位置と表示条件を指定するためのものです。解説が必要です。
回答を見る
  • ベストアンサー

【至急】COLUMNについて・・・

万年カレンダーを作成する事になり以下の関数の解説を しなければならなくなりました。。。 万年カレンダー作成者の説明では理解できず、 解説をしようにも出来ません。 その関数とやらがこれです。 =IF(MONTH(DATE($B$4,$B$5,1)+COLUMN()-COLUMN($F$7))=$B$5,COLUMN()-COLUMN ($F$7)+1,"" 足りない頭で考えまくって出した答えが 「簡単に言うと、COLUMN関数は、【何列目であるか】を求める関数です。 【+COLUMN()-COLUMN($F$7)】これはDATE関数で求めた(年,月,日)がどの 場所からスタートするのかの基準を表します。 この場合、F列の7行目にDATEが始まる。ということになります。 その後に続く【=$B$5,COLUMN()-COLUMN($F$7)+1,""】は 左上の月の部分(今回であれば2月)に+1つきされると3月になるが、 その場合は表示しない。という意味になります。 因みに、【""】とは空欄(表示しない)という意味です。」 と解説したところ、全然違うとのこと・・・。 これ以上上手く説明出来る自信が有りません・・・・。 関数が得意な方、どうかお助け下さい!!!

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.5

回答No.1ですが,解答で示した数式に誤記がありました。 訂正: 私ならF7に =IF(MONTH(DATE($B$4,$B$5,COLUMN(A7)))=$B$5,DATE($B$4,$B$5,COLUMN(A7)),"") と記入し,表示形式のユーザー定義で d を設定して使います。 ついでにF8に =TEXT(F7,"aaa;;;") を記入して,右にコピーします。 #参考 COLUMN(A7) で,F列には「1」を計算します 右にコピーすることで,2,3,4…を計算します DATE($B$4,$B$5,COLUMN(A7)) で,F列には年/月/1日を,G列には年/月/2日…をそれぞれ計算します 表示形式によって,その日付から「日」だけを表示します MONTH(DATE($B$4,$B$5,COLUMN(A7)))によって,各列の年/月/日の月を計算し,それが所定の月ではない列では""を計算します 一つ下のセルでは,各年/月/日の曜日文字列を計算します。一つ上のセルで年月日を計算していない(空白を計算している)セルでは,空白にします。 失礼しました。

その他の回答 (4)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.2・3です! 何度もごめんなさい。 No.3の説明に間違いがありました。 >COLUMN()-COLUMN($F$7) は 7-7 となり「0」ということになります は >6-6 となり「0」ということになります が正解です。 結論としてはNo.3と同じコトになります。m(__)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! たびたびごめんなさい。 数式の説明のご質問だったのですね! どうも失礼しました。 すでにNo.1さんがおっしゃっている通りなのですが、 COLUMN()は 数式を入れたセルの列番号にないますので、 F7に数式を入れた場合、 COLUMN()-COLUMN($F$7) は 7-7 となり「0」ということになります。 すなわち、DATE($B$4,$B$5,1)から「0」を加えると 数式を入れたセルは DATE($B$4,$B$5,1) そのものですので 2012/2/1 のシリアル値が表示されます。 それをオートフィルで右にコピーするたびに COLUMN(G7)=8 column(H7)=9 ・・・となり それからCOLUMN($F$7))=常に「7」を引いていますので 結論として、オートフィルするたびに「1」ずつプラスしていくことになります。 すなわち COLUMN()-COLUMN($F$7) は COLUMN()-7 としても全く同じ結果になります。 ※ お示しの数式は必ず最初に数式を入れるセル番地の列番号にしないと全く機能しない数式になります。 数式を少しにアレンジして =IF(MONTH(DATE($B$4,$B$5,COLUMN(A1)))=$B$5,COLUMN(A1),"") とすれば、どのセルに入力しても大丈夫だと思います。 どうも長々と失礼しました。m(__)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! せっかく数式をお考えのようですが・・・ 一例です。 シリアル値で操作し、表示形式のみを変える方法が何かと便利だと思いますので、 ↓の画像で、B4セルの表示形式はユーザー定義から 0年 としておいて、数値のみ(2012)を入力 B5セルの表示形式もユーザー定義から 0月 としておいて月の数値のみを入力します。 F7セルの表示形式はユーザー定義から d としておき、 =IF(MONTH(DATE($B$4,$B$5,COLUMN(A1)))=$B$5,DATE($B$4,$B$5,COLUMN(A1)),"") という数式を入れます。 F8セルは =IF(F7="","",TEXT(F7,"aaa")) という数式を入れ、F7・F8セルを範囲指定 → F8セルのフィルハンドルでAJ列までオートフィルでコピーします。 これでB4・B5セルの数値を入れ替えるだけで何とかご希望に近い形にならないでしょうか? 余計なお世話だったらごめんなさいね。m(__)m

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

F7以降でも,別にDATEが計算で出てきてるわけじゃありません。 1.「COLUMN()-COLUMN ($F$7)」を使い,F列以右に「ゼロから始まる1,2,3…」の数字を計算します   F列がゼロです。 2.COLUMN()-COLUMN ($F$7)+1を使い,F列以右に「1,2,3…」の数字を計算します   実際にF列に現れるのはこの部分です 3.「DATE($B$4,$B$5,1)+COLUMN()-COLUMN($F$7)」によって,指定年,指定月の1日にプラス「ゼロ,1,2…」を計算します   F列はDATE(年,月,1)の年月日日付のゼロ日後,つまり年/月/1日,G列は1日後,つまり年/月/2日を計算しています 4.それをMONTH関数で計算して月を出し,当月ではない日付の列では""を計算させています 関数の組み合わせを「内側から」順に紐解いて,ご自分の言葉で言い換えてみて下さい。 #ダメを出すなら関数を書いた人が解説すればイイと,端から見てると思いますけどね。 私なら F列に =IF(MONTH(DATE($B$4,$B$5,COLUMN(A7))=$B$5,DATE($B$4,$B$5,COLUMN(A7)),"") と記入し,F7に書式メニューのセルの書式設定の表示形式のユーザー定義で d と設定して使います。

関連するQ&A

  • エクセル2003でカレンダーを作成したのですが

    そのカレンダーに、誕生日に該当する人の名前を 出てくるようにしたいのですがどういった関数?計算式?を 使用すればいいのでしょうか。 ひとまず、A1セルに2010/1/1を入力し、下に =IF(MONTH($A$1)<>MONTH($A$1-WEEKDAY($A$1)+COLUMN(F1)+7*(ROW(F1)-1)),"",$A$1-WEEKDAY($A$1)+COLUMN(F1)+7*(ROW(F1)-1)) を入れて、あとはオートフィルでカレンダーを作りました。 別シートに、「名前」「誕生月」「日にち」が入ったデータはあるので、ここから引っ張ってこれるようにしたいのですが・・ 説明が下手で申し訳ありません。 ちなみにエクセルはほぼ初心者です。カレンダーもネットで調べて、やっとこさ作成しました。 別シートのデータを、「月と日付別々じゃなくて12/3みたいに 打ち直して、こういう関数つかってやればいいんじゃない?」 などなど、あればお聞きしたいです。

  • columnとlineの違い

    とある解説の中で、次のような説明がありました。 "columnは本来「円柱」の意だが、転じて「縦列」。 cf. a column of ants(アリの行列)。 lineは「(長く続いた)列」。" では、「列」の意味でのcolumnとlineの違いとは何ですか? 何卒、よろしくお願いいたします。

  • 関数を教えてください。

    万年カレンダーを作ろうと思います。C2に西暦 F2に月 ここからカレンダー表を作ります。B4~H4に日~土 を入力した時、B5に関数式『(=DATE(C2,F2,1)-(WEEKDAY(DATE(C2,F2,1))-1)』と入力しました。カレンダーは無事できたのですが、関数の説明がいまいち理解できません。明日、発表するのですが、質問をされると??です。教えてくださいー。お願いいたします。胃がいたいです。特に最後の『ー1』は何ですか?

  • エクセルの関数で月を加算する関数は?

    エクセルで作った表があります。 A列は回数・B列は翌月を*年*月と表示してあります。 C列には、B列にA回数月列経過した年月を表示したいのですが、どの関数をどう使えばよいのかわかりません。 MONTH関数をどうにかすればよいのでしょうか? 教えてください。

  • 日付を表示

    H3に日付を入力してます。 B6にこの関数を入力してます。 =IF(DATE(YEAR($H$3),MONTH($H$3),1)*DATE(YEAR($H$3),MONTH($H$3),-5+ROW()),DATE(YEAR($H$3),MONTH($H$3),-5+ROW()),"") これをB6~↓にコピペしてます。 なんだか違う気もしますが、無事に表示されてます。 やりたい事は、月によって日数が変わるとき例えば 29日や31日など この時現在は空いたセルによく月の1日や2日が表示されるのを空白にしたいのです。 後上記の関数以外の用方法がありますか! ちなみにC列には、WEEKDAY関数で曜日を表示させてます。 おねがいします。

  • #VALUE!表示の解決方法

    いつもお世話になります。 WIN7 EXCELL2010 です。 現在は1日~月末の合計金額を月が替わる毎に表示しています。 入金の21日~翌月の20日締切で翌月の5日の入金にあわせて月毎の金額表示に変更したい。 参照図で説明します。 A(m/dd) B(文字列) C(数値) 列はユーザーフォームにて入力 D2 =IF(MONTH(A2)=MONTH(A3),"",SUMPRODUCT((MONTH(OFFSET($A$2,0,0,COUNT(A:A)))=MONTH(A2))*OFFSET($C$2,0,0,COUNT(A:A)))) E2 =IF(MONTH(F2)=MONTH(F3),"",SUMPRODUCT((MONTH(OFFSET($F$2,0,0,COUNT(F:F)))=MONTH(F2))*OFFSET($C$2,0,0,COUNT(F:F)))) F2 =IF(A2="","",WORKDAY(DATE(YEAR(A2),MONTH(A2)+1+(DAY(A2)>20),5)-1,1,祭日)) D列(1日~月末)の数式だと、例えば「D12 D13」などに#VALUE!の表示が出ません。 しかし「E12 E13」には#VALUE!の表紙が出ます。 A列とF列の違いは数式が入っているかいないかのようです。 このE列の 「#VALUE!」 の表示がでないようにするには、E列の数式をどう変更すればいいかご指導を仰ぎたいです。

  • mysqlで年と月を別々のカラムに収納しています

    mysql5.1を利用してデータベースを作成しています。 テーブルに年と月を別々で収納しているのですが、 そのテーブルの中のデータから「今月を過ぎていなければ」という条件で抽出したいのですが、 SQLの書き方がわかりません。 私のSQLの基礎の基礎しか教えてもらっておらず、 あとは独学で、現在のレベルはようやく少しサブクエリを書き出した(学びだした)レベルです。 しかもwindows上のNavicat Lite(アプリ)上で書いてる状態です。 自分のイメージ的には下記のような感じなのですが、動きません。 どなたか教えていただけないでしょうか。 よろしくお願いします。 hoge_tblテーブルからBカラムが'hoge'かつ、 hoge_tblテーブル内のYEARカラムとMONTHカラムの値を今月と比較して、 「今月を過ぎていなければ」といった条件を付けたいと考えております。 select A from hoge_tbl where B = 'hoge' and (select date_format(now(),'%Y%m') as NOW) < (select date_format('(select YEAR,MONTH from hoge_tbl )’,'%Y%m') as END)

    • ベストアンサー
    • MySQL
  • COLUMN関数でよいでしょうか?

    (Sheet1表1) A列 B列 C列・・・ 空欄 ポスター ハガキ ・・・ 写真 \20 \10 イラスト \15 \2 (Sheet2表2) A列 B列 C列 D列 使用者 コード 用途 用途料金 ウシ 11111 ポスター カメ 22222 ハガキ (Sheet3表3) A列 B列 コード カテゴリ 11111 イラスト 12345 イラスト 22222 写真 23456 イラスト 上記の表があり、Sheet2表2のD列の用途料金を求めたいです。 表1からもってくればいいのは分かります。 ただその表1の参照の仕方が分かりません。 カテゴリ(写真等)はVLOOKUPを使って表3を見に行けばいいのでしょうが、そこから用途(ポスター等)を探して金額を表示させるにはどうしたらいいですか?COLUMN関数なら列番号を返すのでいいかなと思ったのですが、引数に関数は使えるのでしょうか? 他にいい方法があるようでしたら教えて下さい。 よろしくお願いします!

  • 関数かマクロを利用して塗りつぶしをかけたい

    関数を利用して以下の処理をすることは可能でしょうか? ご存じの方がいましたらご教授お願いいたします。 もし関数が不可能でしたら、マクロの組み方を教えていただければ幸いです。 「1月」から「12月」までそれぞれのシートと「カレンダー」のシートがあります。 カレンダーのシートにはそれぞれの月の休日と不要日(2月であれば29・30・31)が入力されています。 1)sheet「カレンダー」の休日=月毎のシートの日付の列に塗りつぶしがかかる 2)sheet「カレンダー」の不要日=月毎のシートの不要日が削除または非表示になる うまく説明できないので、画像を添付させていただきます。 以前、エクセルの関数で困っていた時に、こちらの回答でとっても参考になったものがありました。 どうぞお知恵を貸してください。よろしくお願いいたします。 補足 sheet「2月」の日付行の下に作業行を作成して、「※」が表示されたら塗りつぶしがかかるように条件付書式を試してみましたが、作業行の関数がうまく作成できず処理できませんでした。 1)sheet「2月」セル「B3」に「=IF(B2=カレンダー!$L$2:$L$14,"※","")」 2)「B3」の式を「C3」から「AF3」までコピー この時、どうしても「G3」(つまりは「6日」の行)にしか「※」が表示されませんでした。 またこの場合に「不要日の削除」の処理は考えつきませんでした。

  • Excel2007 毎月の第1月曜日を表示したい。

    Excel2007です。 毎月の第1月曜日を表示するため、調べたところ =DATE(YEAR(B2),MONTH(B2),1)+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2),1),2)+1の式を見つけました。 ほとんどの月は、うまく表示されるのですが第1月曜日が1日の時がうまく表示されません。 すなわち、 B2に2009 B2に6 として とし2009年6月の第1月曜日を表示させようとすると、2009/6/8と表示され2009/6/1と表示されません。 IF関数等でで第1月曜日が8日のときは、1日とする数式をご教授ください。

専門家に質問してみよう