Googleスプレッドシートの関数を使用して、特定の月の金曜日の数を確認したいと思います。
たとえば、2014年1月の場合は5
、2014年2月の場合はになります4
。
どうやってやるの?
Googleスプレッドシートの関数を使用して、特定の月の金曜日の数を確認したいと思います。
たとえば、2014年1月の場合は5
、2014年2月の場合はになります4
。
どうやってやるの?
回答:
これは、Google Apps Scriptでそれを行う方法です。
function specificDays(dayName, monthName, year) {
// set names
var monthNames = ["January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December"
];
var dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saterday"
];
// change string to index of array
var day = dayNames.indexOf(dayName);
var month = monthNames.indexOf(monthName)+1;
// determine the number of days in month
var daysinMonth = new Date(year, month, 0).getDate();
// set counter
var sumDays=0;
// iterate over the days and compare to day
for(var i=1; i<=daysinMonth; i++) {
var checkDay = new Date(year, month-1, parseInt(i)).getDay();
if(day == checkDay) {
sumDays ++;
}
}
// show amount of day names in month
return sumDays;
}
メニューの[ツール]> [スクリプトエディター]からスクリプトを追加します。スクリプトを保存すれば、外出中です!!
サンプルファイルを作成しました:月の日名の量
=NETWORKDAYS.INTL(DATE(2017,10,1),EOMONTH(DATE(2017,10,1),0),"1111011")
NETWORKDAYS.INTL(開始日、終了日、[週末]、[休日])
weekend-[省略可-デフォルトは1]-週末と見なされる曜日を表す数値または文字列。
文字列メソッド:週末は0と1の7つを使用して指定できます。セットの最初の数字は月曜日を表し、最後の数字は日曜日を表します。ゼロはその日が就業日であることを意味し、1はその日が週末であることを意味します。たとえば、「0000011」は、土曜日と日曜日が週末であることを意味します。
最初の(おそらく部分的)週を見ることで分割しました。
IF(6>=WEEKDAY(A1),1,0)
次に、全体の週数:
QUOTIENT(DAY(EOMONTH(A1,0))-(7-WEEKDAY(A1)+1),7)
次に、最後の部分的または空の週:
IF(MOD(DAY(EOMONTH(A1,0))-(7-WEEKDAY(A1)+1),7)>=6,1,0)
私たちに完全な式を与えます:
=IF(3>=WEEKDAY(A1),1,0)+QUOTIENT(DAY(EOMONTH(A1,0))-(7-WEEKDAY(A1)+1),7)+IF(MOD(DAY(EOMONTH(A1,0))-(7-WEEKDAY(A1)+1),7)>=6,1,0)
これはの精度に依存しますEOMONTH()
。これはおそらく良い呼び出しです-うるう年などに対してより安全でなければなりません。
A1を問題の月の最初の日に設定します。次に:
=CEILING((DAY(EOMONTH(A1, 0)) - MOD(6 - WEEKDAY(A1), 7)) / 7)
これはどの曜日でも機能します。6
後MOD(
を対応する曜日に変更するだけです。
使い方:
6 - WEEKDAY(A1)
これは、月の最初の日から最も近い金曜日までの日数を数えます。ただし、次の金曜日までの日数を調べたいだけです。
MOD(6 - WEEKDAY(A1), 7)
これは、月の最初の日から月の最初の金曜日までの日数を返します。
DAY(EOMONTH(A1, 0))
これは、月の最後の日の日数を返します。つまり、その月の合計日数です。
DAY(EOMONTH(A1, 0)) - MOD(6 - WEEKDAY(A1), 7)
月の合計日数から、月の最初の日と最初の金曜日の間の日数を引きます。これは、月の最初の金曜日から月末までの合計日数を返します。
DAY(EOMONTH(A1, 0)) - MOD(6 - WEEKDAY(A1), 7)) / 7
この数を7で割ると、月の最初の金曜日から月の終わりまでの週数がわかります。たとえば、2月が28日で、
CEILING((DAY(EOMONTH(A1, 0)) - MOD(6 - WEEKDAY(A1), 7)) / 7)
週の数を切り上げて、金曜日の合計数を決定します。
たとえば、7月1日が水曜日の場合、7月の第1金曜日の前に、7月の丸2日があります。7月は31日なので、最初の金曜日から(およびそれを含めて)29日あります。最初の金曜日から始まる29日間の範囲では、4週間とさらに1日追加できます。金曜日に始めたので、追加の日も金曜日です。