ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュの平日と土日の抽出に関して。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
こんにちは。
掲題の件に関しまして教えて頂きたいのですが。
エクセルは2007です。

週単位の予定表で2列目に日付。3列目に曜日を入れて1週間単位で
また違う列に移して1か月単位での予定表になります。
この表で月単位の平日と土日日数を集計したいのです。
が、見ての通りカレンダーは全部月曜から綺麗に始まるわけではないので、
やり方が思い浮かびません。

NETWORKDAYSで平日だけ抽出するのがあるのは知っているのですが、
範囲指定や休日一覧などを毎月作り変えないといけないので、
一発で表示させれる方法はないでしょうか?

※ちなみに7/26のところに日付をいれるとそれ以降の日付が自動的に出るようにしております。

コメント(6)

NETWORKDAY関数というのはアドイン関数だそうで、僕は使ったことがないのですが、下記ホームページを読む限り、合計を出すセルの関数にINDIRECT関数を含めるだけで、できるのじゃないでしょうか?
http://www.eonet.ne.jp/~more-excel/tipsfc/tips_fc_173.html

INDIRECT関数とは、セルの移動や行列の挿入によって関数の参照先が変わってしまうような場合、参照先が変わらないように参照値を数式ではなく文字で指定する関数です。

例えば、A列にあるセルをD列に移動し、D1:D31までを集計した値をD32に出したいという場合、D32の関数を普通に作るとA列のデータをD列に移動したとたん#REF!が出てしまいます。しかしD32の関数にINDIRECT関数を含めると、移動でもちゃんと計算してくれます。

上記の例のD32の関数は、以下のようになるかと思います。
(*私はNETWORKDAY関数を使ったことが無いので、休日の指定などは省いています。下記はあくまでINDIRECT関数の使い方を示す例とお考えください。)

=NETWORKDAY(INDIRECT("D1"),MAX(INDIRECT("D1:D31"))

となります。
とにかく、行列の挿入やデータの移動などで、関数の参照が壊れてしまう場合、INDIRECT関数が便利です。
>3列目に曜日を入れて

とのことだったら、その列の「土曜」と「日曜」をそれぞれCOUNTIFで数えればいいのでは? 平日は、全体の日数から、土日の日数を引けばいいんだし。

蛇足ながら、曜日ですが、たとえばB1セルに日付が入力されているのなら、C1セルには

=TEXT(B1,"aaa")

とすれば、「月」とか「火」とかの曜日を示す文字列を表示できます。「"aaa"」じゃなくて「"aaaa"」とすれば、「月曜日」とかの文字になります。ご存じかもしれませんが、ご参考までに。
失礼しました。画像添付できてると思いきや、添付されてませんでした。本日は添付できませんので、また明日にでも添付致します。

コメント頂いたお二方。
明日やってみてからまた返事をさせて頂きますので宜しくお願いします。
3列目の曜日で集計できそうですね

Weekday関数などの曜日番号をSumifかCountif関数で集計ってとこでしょうか?
トピ主さんのご説明には次のことがあります。
>範囲指定や休日一覧などを毎月作り変えないといけないので、

と言うことは、多分月に一回この作業が発生すると思います。つまり一か月分が対象になるはず。

もしもそうだったら、エクセルなんかに頼らず、人の目でカレンダーを見て数えるのも、十分現実的な解決策になるような気がします。

ただ、こんなことをこのコミュで言っちゃうと、ひんしゅくものなのでしょうが。
>4
通常のIF文などであればWEEKDAYを使うのが楽そうですが、
SUMIFなどの条件に使うにはあらかじめWEEKDAYが使われた列でもなければ難しいかと。

まじんさんの仰る、
=countif(範囲,"土")+countif(範囲,"日")
というような式が一番楽かもですね。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。