• ベストアンサー

Month関数

宜しくお願いします。Month関数で、例えば2016年3月1(木)を関数で曜日を無くす最善の方法はなんでしょうか?マクロ組みたいので編集せずに、する方法はありますか?又、取り出して、Month関数でやってみたのですが、2016年3月1日が1月3日になってしまいます。どうしたらいいでしょうか?よろしくお願いします。

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

  • ベストアンサー
回答No.2

Month関数は、「年月日時分秒」の日付時刻から「月」を取り出す関数です。 > 例えば2016年3月1(木)を関数で曜日を無くす最善の方法はなんでしょうか? Month関数を使うと、3月の「3」が取り出されるだけです。 曜日はなくなりますが、年とか日とかも無くなったら意味無いのでは? > 2016年3月1日が1月3日になってしまいます。 上のように3が取り出されるので、数値の3を日付に直したときの1900年1月1日を1として3日目の1900年1月3日になります。 -- セルにシリアル値(1900/1/1とかからの経過日数)で2016年3月1日(木)が入ってるなら、 セルを右クリック-[セルの書式設定] 「セルの書式設定」ダイアログ、「表示形式」タブで、 分類:日付 種類:2016年3月1日 を選択。 別のセルにそういう日付文字列を作成したいなら、A1に上のシリアル値が入ってるとして、 B1:=TEXT(A1,"yyyy年m月d日") と入力。 セルに文字列として"2016年3月1日(木)"が入ってるなら、上と同じ式でTEXT関数がいい塩梅に処理してくれるので、 B1:=TEXT(A1,"yyyy年m月d日") と入力。 セルに文字列として"2016年3月1(木)"が入ってるって事なら、ちょっと面倒です…。 右の3文字切り取って"日"を付け足すなら、 B1:=LEFT(LEN(A1-3))&"日" とか。

nafun0404
質問者

お礼

ご回答ありがとうございます。試してみました。助かります。他の人の変身で書いたようにサムプロダクト関数とサムイフス関数の組み合わせってできるのでしょうか?よろしくお願いいたします。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

セルの元データが、日付シリアル値で入っているデータなのかどうかが、質問者に認識がなく、したがって、質問に明確に書いてないのは、VBAまでやるクラスにしては、お粗末。 やりたいことの目的を書く前にデータの性格を捉えることが肝心。日付の場合は (1)文字列が入っているのか(2)日付シリアル値が入っていて(エクセルの標準の、 表示形式(書式)が、「標準」のセルに、2016/5/24と入力された状態。)表示形式で曜日まで表示されて見えて居るのか?表示形式はユーザー定義でyyyy"年"m"月"d"日"(aaa)を設定している場合.こに場合は(aaa)を無くして設定すれば、曜日と()は表示されなくなる。 こういう日付シリアル値の入っているセルのデータで月で件数カウントするなら 例データ 2016年5月24日(火) 2016年6月25日(土) 2016年5月26日(木) 2016年7月27日(水) 2016年6月28日(火) 2016年5月29日(日) 2016年8月30日(火) 2016年5月31日(火) 2016年7月1日(金) 2016年6月2日(木) で 5月の件数は 数式バー部に=SUMPRODUCT((MONTH(A1:A10)=5)*1)と入れてSHIFT+CTRL+ENTERを押す(配列数式)。 =countif(MONTH(A1:A10),5)  はダメなようだ。 VBAではセルデータをMonth関数で月数にして、繰り返し判別してカウントする方法がある。 ーー ピボットテーブルによる有名な方法もある。 参考 http://office-qa.com/Excel/ex6.htm 【○日単位】 【月単位】 【年単位】などでグループ化することが可能です。 文字列でセルにデータが入っている場合は、その旨を明言して、質問を改めるべきだろう。

nafun0404
質問者

補足

ご回答ありがとうございます。サムプロダクト関数で、そのようにできるのですね。 日付は曜日がついたままの状態で一つの条件でなくたくさんの条件で調べたいので、日付けのとこだけサムプロダクトで条件を拾ってその他の条件をcount ifsで組み合わせることってできますか。 A君 B君 2016年3月1日(木) いちご ● 2016年3月 2日(金)りんご ● 2016年3月3日(土)みかん ● ・・・ ・・・ 2016年4月2日(土)いちご ● 2016年4月6日((水)みかん ● ・・・ ・・・ 2016年5月4日((水)みかん ● 2016年5月8日(日りんご ● ・・・ ・・・ (表) A君 3月 4月 5月 いちご みかん りんご B君 3月 4月 5月 いちご みかん りんご よろしくお願いいたします。

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.3

「曜日を無くす」の意味が不明です。シリアル値について理解されていま すか? > Month関数でやってみたのですが、2016年3月1日が1月3日になってしま > います。 MONTHは該当するシリアル値の「月」のデータを抜き出す関数です。 「1月3日」と表示されているのは 書式が参照元からうつってしまったから でしょう。表示形式を「標準」にすれば「3」が表示されるはずです。 表示形式上の見た目の値と 実数値とは違います。どうも その点があいまい になっているように思います。

nafun0404
質問者

お礼

ご回答ありがとうございます。そのとおりでした。ありがとうございます

  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.1

>Month関数で、例えば2016年3月1(木)を関数で曜日を無くす最善の方法はなんでしょうか? 意味不明 曜日を表示させないなら、表示形式を変更すれば良いだけです。 何故に、month関数を使うのですか? month関数を使ったとしても、 日付をあらわすシリアル値を結果として出すのであれば、 エクセルは内部的に曜日情報も持ってます。 それとも、文字列で”2016年3月1(木)”というデータがあるということ? その辺の前提条件を、きちんと記載してください。

nafun0404
質問者

補足

ご返答ありがとうございます。説明不足ですいません。データで後々count ifや他の関数使うためどうしてもこの戻データの日付の部分から、曜日のない日付を取り除きたいのです。マクロ作りたいので、1年通して編集せずともできるようにしたいのです。レフト関数だと9月と10月で取り出す数が変わってしまいます。又取り出した後、month関数でやっ先程も書いたように3たのですが、3月1日が1月3日になってしまいます。何かいい方法あるでしょうか?よろしくお願いいたします

関連するQ&A

  • MONTH関数について

    Excel2007のMONTH関数について教えて下さい。 あるサイトに次のような作り方がありました A1に2012 B1に2 A2に =DATE(A1,B1,1) A3に =IF(MONTH(A$2+ROW(A1))=B$1,A2+1,"") A3をA32までオートフィル 3/1になると空白になる そこで質問です MONTH関数は、「月」の数字を求める関数ですね MONTH関数の括弧の中でROW(A1)を加えるとなぜ月替わりまで 同じ月になるのか 例えば2月の29日までは、「2」 3月1日になると「3」になるのか判りません。 その理由を教えて下さい。

  • month関数で

    エクセルのことでお伺いします。 today関数で今日の日付を表示することは理解しました。 そしてそこから日付の「月」だけを取り出すのにmonth関数があるというのも理解できました。 そこで取り出した月の整数は1~12までなんですがその取り出した関数に対して数字を1引きたいときに単純に関数から-1の計算式を当てはめると明治33年~とおかしくなってしまいました。正しくするにはどうしたらよいですか? 僕がやったのは 今日の場合 A1に=TODAY()関数をいれ、平成17年4月19日を表示させました。 A2に=MONTH(A1)として4を出しました。 そこの関数に=MONTH(A1)-1で4-1で3を出したかったのです。 シリアル値って言うのが引っかかっているみたいですが よく分かっていないので正しく教えていただける方がいましたら宜しくお願いします。

  • エクセル 関数 MONTH

    いつも大変御世話になっております。 WindowsXP環境でエクセル2003を使用しています。 C5セル内に以下文字を入力して「test_201111.txt」を表示しています。 ※YEAR(TODAY()):YYYY / MONTH(TODAY()):MM ="test_"&YEAR(TODAY())&""&MONTH(TODAY())&".txt" これは10~12月は関数箇所は表示されるんですが 1~9月はMONTH(TODAY())自体が頭に"0"がつかないので困っています。 これはもうどうしようもないのでしょうか? 1~9月には頭に0をつけたいのです。 マクロを使ったり、他のセルにYYYYMMを記載してそこから日付を読み込ますようなものは 作成せずに、上記関数だけでどうしても解決したいのですが可能でしょうか? もしご存知の方がいらっしゃるようでしたら、ご教授願いますでしょうか? 以上、何卒宜しくお願い致します。

  • EXCLEのMONTH関数について教えてください。

    宜しくお願いします。 以下の関数 SUMPRODUCT((MONTH('6月'!$K5:$K40)=1)*('6月'!$A5:$A40=1),'6月'!$H5:$H40) を使うと未入力の行まで1月に合計してしまいます。 なぜでしょうか? (MONTH('6月'!$K5:$K40)=1)で1月のみを抽出したいのですが・・ 教えていただきたいです。 ちなみに IF(AND(MONTH('6月'!$K5)=1,'6月'!$K5<>"",'6月'!$A5=1),'6月'!$H5,"") では '6月'!$K5<>"", を入力して避けました。

  • Excel 関数を使って曜日を自動的に出したい

    Excel関数を使って曜日を自動的に出るようにしたいです。 通常 10月1日 木 10月2日 金 10月3日 土 ・ ・ と表示したい場合、CHOOSE関数とWEEKDAY関数を使って 曜日を自動的に出すやり方はわかるのですが、 月と連動させて表示をさせたい (例) 10月 ← ★ここに「月」を入力すると ★その月に準じた日数が自動的に出てきて・・・ (10月なら31日まで、11月なら30日までというように) ↓ 1日 木 ←★さらに曜日も自動的に出る 2日 金 3日 土 という仕組みにしたいです。 どのように作ればよいでしょうか? わかりづらく申し訳ございませんが お知恵を貸してくださいm(_ _)m

  • エクセル関数の戻り値によりコピーができますか

       A   B  C 1  年  月  日 2  2011  9   17 3 4  日付 2011/9/17 5  曜日   土 B4は”=DATE(A2,B2,C2)”の関数を使います。 B5は”=TEXT(WEEKDAY(B4,1),"aaa")”の関数を使います。 一方曜日による7種類のシートがあります。シート名は"日""月""火""水""木""金" "土"です。B5の結果を判断して、曜日毎にA7に各シートの内容をコピーしたいの ですが、マクロを使わない関数だけでの方法はありますか? 各曜日のシートの内容は1セルだけでなく広い範囲なので全てA7を起点にコピー したいのです。宜しくお願いします。

  • エクセル関数の問題を教えください

    問題 関数を使用し、下記の例題のような予定表の日、曜日を表示させてください (1)2011年2月の予定表を作成してください (2)2011年3月の予定表を作成してください (月末の日が月により変わりますので、その部分を関数で作成してください) (曜日部分は全て関数で作成してください) 例題 3 月予定表 日 曜日 予定 1 火 2 水 3 木 4 金 5 土 6 日 7 月 8 火 9 水 10 木 11 金 12 土 13 日 14 月 15 火 16 水 17 木 18 金 19 土 20 日 21 月 22 火 23 水 24 木 25 金 26 土 27 日 28 月 29 火 30 水 31 木

  • EXCEL関数について

    毎月、各曜日毎のとある集計表の作成をしております。 マクロや関数を利用し、毎月の作業簡易化を目指し奮闘中なのですが、壁に当たってしまったためお力添え下さい。 7月であれば1~31までのシートがあり、日にちをシート名にしてあります。 各曜日「A1」セルの値の平均値を出したいのですが、毎月第4週までと第5週までの曜日が異なる上、祝日もありうまく関数が組めません。 各シートを「月曜1、月曜2・・・」と名前を変更し、セルに関数AVERAGE(月曜1!A1,月曜2!A1,・・・)と範囲指定するマクロを作りましたが、上にも書いた通り、毎月第4週までと第5週までの曜日が異なるため、6月の曜日に合わせたセル範囲を7月に適用させるといくつかセル範囲無効によるエラーが表示されます。(#REF!) 範囲指定したシートのうち、存在するシートのみが反映され、無いシートを無視することができれば私にとって理想なのですが、そのような方法はありますか?

  • 関数を使わないで日付の計算をしたいのですが。

    2007,7,5,4 年,月,日,曜日(0が日曜日) の入力から、+10日後の日付と曜日を求めたいのですが、 関数を一切使わず計算式と場合分けのみで計算する方法ありますか? 今考えている方法は、地道に、ある基準1970年1月1日をシリアル値で0としそこから、今日までの日数を1月は31、2月は28にちなどを考えてを足していき、シリアル値を算出。 そのシリアル値に+10した値を再び年月日曜日の形に戻す方法しか無いのかと考えています。

  • どの様な関数を使用すればいいのでしょうか?(アクセス)

    初心者です。 『061201』と言うフィールドがあります。 これは2006年12月1日と言う意味です。 その中の『12』と『01』を別々に抽出して、レポートに12月1日と表示をさせたいのです。 後、できることならその横に曜日も入れたいと思っています。 left関数かと思って使ってみても『12』だけ抽出ができなくて困っています。 よろしくお願いします。

専門家に質問してみよう