- ベストアンサー
Month関数
宜しくお願いします。Month関数で、例えば2016年3月1(木)を関数で曜日を無くす最善の方法はなんでしょうか?マクロ組みたいので編集せずに、する方法はありますか?又、取り出して、Month関数でやってみたのですが、2016年3月1日が1月3日になってしまいます。どうしたらいいでしょうか?よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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))&"日" とか。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
セルの元データが、日付シリアル値で入っているデータなのかどうかが、質問者に認識がなく、したがって、質問に明確に書いてないのは、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 【○日単位】 【月単位】 【年単位】などでグループ化することが可能です。 文字列でセルにデータが入っている場合は、その旨を明言して、質問を改めるべきだろう。
補足
ご回答ありがとうございます。サムプロダクト関数で、そのようにできるのですね。 日付は曜日がついたままの状態で一つの条件でなくたくさんの条件で調べたいので、日付けのとこだけサムプロダクトで条件を拾ってその他の条件を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)
「曜日を無くす」の意味が不明です。シリアル値について理解されていま すか? > Month関数でやってみたのですが、2016年3月1日が1月3日になってしま > います。 MONTHは該当するシリアル値の「月」のデータを抜き出す関数です。 「1月3日」と表示されているのは 書式が参照元からうつってしまったから でしょう。表示形式を「標準」にすれば「3」が表示されるはずです。 表示形式上の見た目の値と 実数値とは違います。どうも その点があいまい になっているように思います。
お礼
ご回答ありがとうございます。そのとおりでした。ありがとうございます
- shintaro-2
- ベストアンサー率36% (2266/6245)
>Month関数で、例えば2016年3月1(木)を関数で曜日を無くす最善の方法はなんでしょうか? 意味不明 曜日を表示させないなら、表示形式を変更すれば良いだけです。 何故に、month関数を使うのですか? month関数を使ったとしても、 日付をあらわすシリアル値を結果として出すのであれば、 エクセルは内部的に曜日情報も持ってます。 それとも、文字列で”2016年3月1(木)”というデータがあるということ? その辺の前提条件を、きちんと記載してください。
補足
ご返答ありがとうございます。説明不足ですいません。データで後々count ifや他の関数使うためどうしてもこの戻データの日付の部分から、曜日のない日付を取り除きたいのです。マクロ作りたいので、1年通して編集せずともできるようにしたいのです。レフト関数だと9月と10月で取り出す数が変わってしまいます。又取り出した後、month関数でやっ先程も書いたように3たのですが、3月1日が1月3日になってしまいます。何かいい方法あるでしょうか?よろしくお願いいたします
お礼
ご回答ありがとうございます。試してみました。助かります。他の人の変身で書いたようにサムプロダクト関数とサムイフス関数の組み合わせってできるのでしょうか?よろしくお願いいたします。