web-dev-qa-db-ja.com

Googleスプレッドシートの重複を調べますか?

次の開始日と終了日があるとします。

enter image description hereSHEET1

Mon 10am through Tues at 11:59pmからの時間範囲になります。

この時間範囲が別のシートの別の時間範囲と重なるかどうかを知りたい。

以下は、比較対象の2つの日付範囲の例です。重複する期間と重複しない期間:

enter image description hereSHEET2

OVERLAP?に関連付けられた行の関数は、SHEET1に示された範囲と特定の時間範囲にオーバーラップがあるかどうかに応じて、TRUEまたはFALSEのいずれかを返します。

開始/終了時間に基づいて日付範囲を構築し、その範囲を他の時間範囲と比較して重複があるかどうかを判断することは可能ですか?

  • できればすべてオンザフライ(つまり、最後のTRUE/FALSE。まで出力をシートに保存しないでください。

サンプルシート(カンマ区切り):

Start Day,  Monday, 
Start Time, 10:00 AM,   
End Day,    Tuesday,
End Time,   11:59 PM

Day of interest,    Monday,     Tuesday,
DOI start,          8:00 AM,    8:00 AM,
DOI end,            9:00 AM,    9:00 AM,    
OVERLAP?,           FALSE,      TRUE
1

スプレッドシートは、イベント間の接続のような「高度な」ヒューマンロジックを理解しておらず、期間の重複を比較しています...したがって、Sheet1!B1を対応する日付形式に変換する必要がありますSheet1!B2から追加された時間を使用して同じ日に(現在、過去、または将来-参照は関係ありません)、次にSheet2!B1Sheet2!B2などを追加します。

簡単に言うと、式はこれを行います:

ifMonday 8:00 AM>または=からMonday 10:00 AMandMonday 9:00 AM< than Tuesday 11:59 PMステートメントはTRUEです。それ以外の場合はFALSEのようになります

=AND(IF(B1         =TEXT(DATE(2018; 1; 1); "dddd"); DATE(2018; 1; 1); 
     IF(B1         =TEXT(DATE(2018; 2; 1); "dddd"); DATE(2018; 2; 1); 
     IF(B1         =TEXT(DATE(2018; 3; 1); "dddd"); DATE(2018; 3; 1); 
     IF(B1         =TEXT(DATE(2018; 4; 1); "dddd"); DATE(2018; 4; 1); 
     IF(B1         =TEXT(DATE(2018; 5; 1); "dddd"); DATE(2018; 5; 1); 
     IF(B1         =TEXT(DATE(2018; 6; 1); "dddd"); DATE(2018; 6; 1); 
     IF(B1         =TEXT(DATE(2018; 7; 1); "dddd"); DATE(2018; 7; 1); )))))))&B2 >=
     IF(Sheet1!$B$1=TEXT(DATE(2018; 1; 1); "dddd"); DATE(2018; 1; 1); 
     IF(Sheet1!$B$1=TEXT(DATE(2018; 2; 1); "dddd"); DATE(2018; 2; 1); 
     IF(Sheet1!$B$1=TEXT(DATE(2018; 3; 1); "dddd"); DATE(2018; 3; 1); 
     IF(Sheet1!$B$1=TEXT(DATE(2018; 4; 1); "dddd"); DATE(2018; 4; 1); 
     IF(Sheet1!$B$1=TEXT(DATE(2018; 5; 1); "dddd"); DATE(2018; 5; 1); 
     IF(Sheet1!$B$1=TEXT(DATE(2018; 6; 1); "dddd"); DATE(2018; 6; 1); 
     IF(Sheet1!$B$1=TEXT(DATE(2018; 7; 1); "dddd"); DATE(2018; 7; 1); )))))))&Sheet1!$B$2; 
     IF(B1         =TEXT(DATE(2018; 1; 1); "dddd"); DATE(2018; 1; 1); 
     IF(B1         =TEXT(DATE(2018; 2; 1); "dddd"); DATE(2018; 2; 1); 
     IF(B1         =TEXT(DATE(2018; 3; 1); "dddd"); DATE(2018; 3; 1); 
     IF(B1         =TEXT(DATE(2018; 4; 1); "dddd"); DATE(2018; 4; 1); 
     IF(B1         =TEXT(DATE(2018; 5; 1); "dddd"); DATE(2018; 5; 1); 
     IF(B1         =TEXT(DATE(2018; 6; 1); "dddd"); DATE(2018; 6; 1); 
     IF(B1         =TEXT(DATE(2018; 7; 1); "dddd"); DATE(2018; 7; 1); )))))))&B3 <
     IF(Sheet1!$B$3=TEXT(DATE(2018; 1; 1); "dddd"); DATE(2018; 1; 1); 
     IF(Sheet1!$B$3=TEXT(DATE(2018; 2; 1); "dddd"); DATE(2018; 2; 1); 
     IF(Sheet1!$B$3=TEXT(DATE(2018; 3; 1); "dddd"); DATE(2018; 3; 1); 
     IF(Sheet1!$B$3=TEXT(DATE(2018; 4; 1); "dddd"); DATE(2018; 4; 1); 
     IF(Sheet1!$B$3=TEXT(DATE(2018; 5; 1); "dddd"); DATE(2018; 5; 1); 
     IF(Sheet1!$B$3=TEXT(DATE(2018; 6; 1); "dddd"); DATE(2018; 6; 1); 
     IF(Sheet1!$B$3=TEXT(DATE(2018; 7; 1); "dddd"); DATE(2018; 7; 1); )))))))&Sheet1!$B$4)

この式をSheet2!B4に貼り付け、Sheet!C4セルにドラッグします

1
user0