2 つのセルに基づいて日付を計算する Excel 数式と、それを他のセルにコピーする方法を教えてください。

2 つのセルに基づいて日付を計算する Excel 数式と、それを他のセルにコピーする方法を教えてください。

私はエクセル初心者です。以下は私のスプレッドシートの簡略版です:

start date  end date    eday    duration
                        -21     4
                         12     0

begindate = "03/03/2020"

eday 列とduration 列、begindate の値に基づいて開始日と終了日を計算する数式を作成したいと思います。

start date = begindate + eday
end date = start date + duration

したがって、上記の例に数式を適用すると、次の結果が期待されます。

start date  end date    eday    duration
02/11/2020  02/11/2020  -21     4
03/15/2020  03/19/2020   12     0

begindate は03/03/2020常に同じになります。

数式は機能しましたが、フィルハンドルを使用すると数式が正しくコピーされません。

以下の質問について初心者に助けてください:

  1. 開始日付「03/03/2020」を保存するのに最適な場所はどこでしょうか - 別のワークシートですか? ハードコードしますか? 他にありますか?

  2. 開始日と終了日の計算式は何ですか?

  3. 列内のすべての行に数式をコピーするにはどうすればいいですか

どうもありがとうございます。

答え1

Excel の日付と時刻について最初に覚えておきたいのは、それらは実際には単なる数字であり、数値書式を使用して日付/時刻のように書式設定されているということです。今日の日付 (2019 年 9 月 7 日) は 43715 で、現在の時刻 (午前 12:20) は 0.14302083 です...

DATE()TODAY()またはなどのマジックナンバー (基本的には 1900 年 1 月 1 日からの日数) を取得できるワークシート関数がありますNOW()

そのためには、あなたのエド列が でC、データが行から始まる場合は2開始日式はA2as=DATE(2020,3,3)+$C2とあなたの終了日B2式を として入力します=$A2+$D2。これが最も簡単な方法です。

$C絶対列参照 ( 、$A、 )を使用して、コピー/貼り付けや入力の場所に関係なく、$DExcel が常に列C、 、 を参照するように強制していることに注意してください。Aまた、相対行参照 ( ) を使用して、コピー/貼り付けや下方向への入力を行うと、行番号が入力の一部として変更される (つまり、行 では、数式は になります) ようにしています。この操作が必要なときもあれば、そうでないときもあるため、 と を試して、どのような結果になるかを確認してください。D23=$A3+$D3$$

おそらくあなたは元々開始日セルに値を入力し、数式で相対参照を使用して、下方向に入力すると、開始日変更されました。私の言う通りなら、絶対参照が必要になります開始日Jセル、たとえば列行にあった場合1、数式は$J$1ではなく になりますJ1

自信がついてきたら、より複雑な機能を使用して、より回復力のある、または構成可能なものにすることができます。たとえば、次のようになります。

  • あなたは名前マネージャー固定された定数の日付を保存するには、 という新しい名前を作成しBeginDate、その値を に設定します=DATE(2020,3,3)。これで、 の開始日数式を に更新できA2=BeginDate+$C2その固定値はどこでも使用されるようになります。

  • 4列の範囲を次のようにフォーマットすることができます。ヘッダー付き表、これにより、列参照の代わりにヘッダー名を使用できるようになります。範囲をテーブルとして書式設定すると、開始日列(A2=BeginDate+[eday]に入力して、終了日列(B2)に を入力できます=[start date]+[duration]。これは表なので、表が大きくなるにつれて、両方の数式が自動的に入力されます。次に、 の単純な数値書式を適用します。ショートデートあなたの開始日そして終了日列。

  • 値を入力していない場合は、edayまたはduration数式を変更することで、テーブルに計算された日付が表示されないようにすることができます。開始日より複雑なもの:

    =IF([eday]="", "", BeginDate+[eday])
    

    ...そして式を変えると終了日に:

    =IF(OR([start date]="",[duration]=""), "", [start date]+[duration])
    

関連情報