次の形式(つまり、日、時間、分、秒)でデータが与えられます。
-4 1:0:0.0
これを Excel で分数に変換するにはどうすればよいですか? (例: 5820 分)
現在、テキストを列(日数列、hh:mm:ss列)に入力し、=([@Days]+[@Hours])*24*60; を実行していますが、日数が負の場合(例:-5700)に間違った値が生成されます。
誰かエレガントな式を持っていますか?
答え1
データには常に時間(ゼロの場合でも)があり、スペースがあると仮定して、この数式を使用してA1の元のデータから分を抽出します。
=(LEFT(A1,FIND(" ",A1))+MID(A1,FIND(" ",A1)+1,20)*IF(LEFT(A1)="-",-1,1))*1440
この例では -5820 が返されるはずですが、これは予想される結果ですか、それとも常に正の値が必要ですか?
答え2
abs 関数を日へのセル参照の周りにラップします。たとえば、日が A1 に保存されている場合は、A1 を に置き換えますabs(A1)
。これにより、符号なしの数値が自動的に返されるため、負の数値は正の数値として返され、関数が適切に機能します。
私はあなたのためにこれをやります。しかし、あなたのスプレッドシートがどのように設定されていて、どのようなセル形式を使用しているかはわかりません。スプレッドシートの(関連部分)を質問に添付して(Dropbox や Mediafire などにアップロードして)いただければ、私はそれをやります。
答え3
(Chris が列名を示すために @ をどのように使用しているか理解できません。私にはうまくいきません。私のソリューションでは、各列は名前付き範囲 (Days と Hours) であり、範囲名だけが数式に表示されます。)
ここで注目すべきは両方列には数字が含まれています。時間列には分数が含まれています。時間としてフォーマットされているため、24時間の期間の分数として解釈されます。これは正しいはずです。そうでなければ、数式は
=(Days+Hours)*24*60
正の値であっても、何も役に立ちません。
ここで、常に両方が正か両方が負の値を加算しています。Days 値は常に正しい符号を持ちますが、Hours 値は負であるべき場合でも常に非負です。したがって、Days が負の場合は Hours 値を変更する必要があります。
=(Days+IF(Days>=0,Hours,-Hours))*24*60