日付の行から次の日付(開始日よりも後)を返し、その日付から次の日付を返す数式を探しています

日付の行から次の日付(開始日よりも後)を返し、その日付から次の日付を返す数式を探しています

ワークシート 1 には、航空機が飛行したすべての「区間」がリストされています。各日の区間は、1 日目はワークシート 2、2 日目はワークシート 3 に、というように続きます。区間は、1 日目、2 日目、というように列にリストされます。各区間の一番上のセルには日付があります。私は、各日の区間を取得し、そのフライトの情報を別のワークシート (1 日目、2 日目、...) に転記するワークブックを作成しています。私が直面している問題は、1 日のフライトが 1 区間の場合もあれば、5 ~ 6 区間の場合もあることです。約 2 週間の期間をカバーする 24 の列があります。1 日に 8 区間以上飛行することはないため、各「日」ワークシートには 8 列しかありません。1 日目のワークシートは簡単ですが、2 日目に問題が発生します。現在、IF 関数と AND 関数を組み合わせて、次に入力する日付を決定する数式を作成しています。しかし、思った通りに動作させることができません。この混乱を解消できるような例を以下に入力してみます。

マスタートリップワークシート

レグ 1___レグ 2___レグ 3___レグ 4___レグ 5___レグ 6
8/5______8/6______8/6_____8/7______8/7_____8/8
CAK_____PLN_____APA____ASE_____ADS_____DAL
PLN_____APA_____ASE____ADS_____DAL_____SUN

1日目のワークシート

レグ 1
8/5
CAK
PLN

2日目のワークシート

レグ 2___レグ 3
8/6______8/6
PLN______APA
APA______ASE

3日目のワークシート

レグ 4___レグ 5

8/7______8/7
ASE______ADS
ADS______DAL

4日目のワークシート

レグ 6
8/8
ダルサン

したがって、1 日目、2 日目... のワークシートでは、次の新しい日付のみを取得する必要があります (また、これは各ワークシートで 1 ~ 8 の区間になる可能性があります)。すべての区間情報を移動する方法を見つけました。日付を適切なワークシートに分割できるようにするだけで済みます。

十分に明確でない場合はお知らせください。ありがとうございます!!

答え1

おそらく、これが役立つでしょう: [Day 1] シートのセル A2 に、次の簡単な数式を入力して、[Sheet1] から最初の日付を取得します =Sheet1!A2 この数式を [Day 1] シートの B2 に入力し、右側の列 H まで入力します。

=IF(COUNTIF(Sheet1!2:2,$A2)>COLUMN()-1,$A2,"")

これにより、'Day 1'!A2 の日付が [Sheet1] に表示される回数だけ複製され、Legs に対応します。この数式の Column()-1 の部分は、列 B にある最初の数式に基づいており、列 B の場合は 1 を返し、列 c の場合は 2 を返し、残りの列の場合はそのようになります。これは、シートの A2 に日付をエコーするかどうかを指示するものです。

これで、[Day 1] シートの日付は処理されるはずです。次は [Day 2] です。セル A2 の数式は少し複雑ですが、これは前の Day # シート +1、+2、+3、または +4 の日付が [Sheet1] にあるかどうかをテストしています。最初に一致する日付がセル A2 に配置されます。日付の代わりに「前の日付 +1 から +4 に一致しません」というテキストが表示された場合、次の 2 つのうちのいずれかを意味します。レグ間の休憩が 4 日以上あるか、[Sheet1] の最後の日付が前の [Day #] シートにあったかのどちらかです。これでおわかりいただけたでしょうか。セル A2 の [Day 2] の数式は次のとおりです。

=IF(ISNA(MATCH(MAX('Day 1'!A2:H2)+1,Sheet1!2:2,0)),IF(ISNA(MATCH(MAX('Day 1'!A2:H2)+2,Sheet1!2:2,0)),IF(ISNA(MATCH(MAX('Day 1'!A2:H2)+3,Sheet1!2:2,0)),IF(ISNA(MATCH(MAX('Day 1'!A2:H2)+4,Sheet1!2:2,0)),"前の日付 +1 から +4 に一致しません",MAX('Day 1'!A2:H2)+4),MAX('Day 1'!A2:H2)+3),MAX('Day 1'!A2:H2)+2),MAX('Day 1'!A2:H2)+1)

[Day 2] シートのセル B2:H2 の数式は、[Day 1] シートのセルに対して使用した数式とまったく同じです。

後続の各 [Day #] シートでは、上記の長い数式をそのシートのセル A2 に入力し、[編集] > [置換] を使用して、その中の「Day 1」参照を前日のシート名に変更します。

4 日間以上の休憩を予定したいですか? この演習では、テキスト エディターと Excel を使用するのが最適です。次の数式セグメントを例に挙げます。

IF(ISNA(MATCH(MAX('Day 1'!A2:H2)+4,Sheet1!2:2,0))、"前の日付 +1 から +4 に一致するものなし",MAX('Day 1'!A2:H2)+4)

そして、次の変更を加えます。まず、「Day 1」の参照を、前の日番号シートの適切な参照に変更します。次に、+4 の出現を +5 に変更します。これらは全部で 3 つあります。次に、修正されたセクションを取り、ワークシートの実際の数式の「前の日付 +1 から +4 に一致しない」を選択し、その場所に修正を貼り付けます。

このプロセスを繰り返すと、非常に長くて見苦しい式を犠牲にして、非常に長い休憩を取ることができます。

10 枚の [Day #] シートが入ったサンプル ファイルをアップロードしました。ここからダウンロードできるはずです:http://www.mediafire.com/view/k6qx3hahv8zl0o8/AircraftLegsLog001.xlsx

関連情報