ฉันจะคำนวณเดลตาเวลาใน Google Spreadsheets ของฉันได้อย่างไร


73

ฉันมีสเปรดชีตของ Google ที่มีลักษณะเช่นนี้:

 Date        | Start time  | End time    | Minutes
 ------------+-------------+-------------+-----------
 1/11/2012   | 11:39       | 12:41       | ?!
 ------------+-------------+-------------+-----------
             |             |             | 

ตอนนี้ถ้าฉันกรอกจำนวนนาทีระหว่างสองครั้งต่อวันด้วยมือ มีวิธีตรงไปตรงมาในการคำนวณเดลตาเวลาและให้สเปรดชีตทำเพื่อฉัน

คำตอบ:


65

Google ได้เพิ่มรูปแบบตัวเลขใหม่ที่เรียกว่า Duration ตั้งค่าเขตข้อมูลเริ่มต้นและสิ้นสุดของคุณเป็นและเขตข้อมูลการFormat -> Number -> Timeคำนวณของคุณเป็นFormat -> Number -> Duration

เมื่อคุณทำเสร็จแล้วคุณสามารถลบเขตข้อมูลเพื่อรับความแตกต่างดังที่ Stefano Palazzo ตั้งไว้ในคำตอบของเขา


51

ใช่ถ้าเขตเวลาของคุณมีรูปแบบที่ถูกต้อง (คลิกรูปแบบ→หมายเลข→เวลา ) คุณสามารถเพิ่มและลบเวลาได้:

=C2-B2

หรือ

21:58:00 - 20:44:00 = 1:14:00

นี่จะให้เวลากับHH:MM:SSคุณเป็น และถ้าคุณต้องการที่จะคำนวณจำนวนนาทีที่คุณสามารถใช้Hour(), Minute()และSecond()ฟังก์ชั่นบนสนามที่:

=(Hour(D2) * 60) + Minute(D2) + (Second(D2) / 60)

แน่นอนหากมีการก้าวกระโดดวินาทีการเปลี่ยนแปลงเขตเวลาหรือหากเหตุการณ์ใช้เวลานานกว่า 24 ชั่วโมงคุณจะต้องปรับผลลัพธ์ด้วยตนเอง

คำเตือน

หากเหตุการณ์หนึ่งยืดเวลาเที่ยงคืนพูดจาก 23:50 ถึง 00:10 เหตุการณ์นี้จะปรากฏขึ้นในเวลาลบ!

เพื่อให้กิจกรรมเหล่านี้จัดการ 'ถูกต้อง' คุณสามารถใส่ "24:10" หรือแยกเหตุการณ์ออกเป็นสองเหตุการณ์

วิธีที่ดีกว่า

แม้ว่าจะป้อนข้อมูลยากขึ้นเล็กน้อยวิธีที่น่าเชื่อถือที่สุดในการทำเช่นนี้คือการทำเครื่องหมายเขตข้อมูล beinning และ end เป็น "Date Time" และเขตข้อมูล delta เป็น "Hours" ซึ่งจะมีลักษณะดังนี้:

Beginning          End                  Delta
8/1/2013 0:00:00   8/2/2013 12:30:00    36:30:00

สิ่งนี้ดูเหมือนจะไม่ทำงานอีกต่อไป ฉันคิดว่าคุณต้องเลือกรูปแบบ> หมายเลข> ชั่วโมง (เทียบกับเวลา) ฉันได้รับเลขทศนิยมที่แปลกมากเมื่อฉันพยายามลบความแตกต่างแบบรายชั่วโมงง่ายๆ
Elijah Lynn

@ElijahLynn เลขคี่นี้คือจำนวนวัน ทวีคูณคูณ 24 และ 60 จะให้จำนวนนาที
Jacob Jan Tuinstra

1
หากมีคนต้องการได้รับวันที่และเวลาในเซลล์เดียวเขาสามารถรวมเพียงแค่เพิ่ม: A1 + B1
wzbozon

9

หากคุณเพิ่มสูตรต่อไปนี้D2ระบบจะคำนวณจำนวนนาทีโดยอัตโนมัติ:

สูตร

=ARRAYFORMULA(IF(ISBLANK(B2:B)=FALSE,((C2:C-B2:B)*24*60),""))

อธิบาย

ความแตกต่างระหว่างเวลาตามรูปแบบทศนิยมจะแสดงเป็นวัน ดังนั้นการคูณ 24 ครั้ง 60 จะทำให้เกิดนาที

สังเกต

มีข้อกำหนดเบื้องต้นหนึ่งประการ: คอลัมน์ D ต้องจัดรูปแบบเป็น 'ปกติ'

ตัวอย่าง

ดูไฟล์ตัวอย่างที่ฉันสร้าง: Delta Time


7

สำหรับโซลูชันที่แข็งแกร่งกว่านี้เราใช้ฟังก์ชันที่กำหนดเอง

1. การเพิ่มฟังก์ชั่นที่กำหนดเอง

ใช้ตัวแก้ไขสคริปต์ (ทำตามคำแนะนำในhttps://developers.google.com/apps-script/execution_custom_functions ) - เขียน:

function toEpoch (indate) {
  return indate.getTime();
}

2. เพิ่มสูตร

จากนั้นในเซลล์เขียน:

=(toEpoch(C2)-toEpoch(B2)) / 60*1000

ซึ่งแปลงความแตกต่างในยุควินาทีเป็นมิลลิวินาที


... ฉันทำสิ่งนี้เพื่อให้แน่ใจว่าได้แปลงและแปลงเป็นวินาทีแล้ว (จากมิลลิวินาที): function toEpoch (data) { return new Date(data) / 1000; }
user1278519

7

ฉันทำการทดลองมากมาย นี่เป็นวิธีที่ง่ายที่สุดในการคำนวณเดลตาเวลาใน Google Spreadsheets จัดรูปแบบเซลล์ที่มีสูตรดังนี้:

การจัดรูปแบบเซลล์สูตร

รูปแบบ> จำนวน> รูปแบบอื่น ๆ > วันและเวลารูปแบบลบ "สอง" :และ h:mm am/pmจากนั้นจัดรูปแบบเวลาสิ้นสุดและเริ่มที่เซลล์เวลาเช่นนี้

การจัดรูปแบบเซลล์เวลาป้อนข้อมูล

=abs(end time - start time)ใช้สูตร สิ่งนี้ให้ค่าสัมบูรณ์กับคุณดังนั้นจึงไม่มีค่าเวลาลบ


5

ง่ายกว่านี้มาก: ดู B2: 23:00 C2: 1:37 D2: = C2-B2 + (B2> C2)

เพราะเหตุใดจึงใช้งานได้เวลาเป็นเศษส่วนของวันการเปรียบเทียบ B2> C2 จะส่งกลับค่า True (1) หรือ False (0) ถ้าเพิ่ม 1 วันจริง (24 ชั่วโมง) http://www.excelforum.com/excel-general/471757-calculating-time-difference-over-midnight.html


4

หากคุณต้องการให้วัดเวลาเดลต้าเป็นวันให้ใช้

=DAYS(end_date, start_date)

นั่นเป็นเรื่องจริง อย่างไรก็ตามฉันมาที่นี่เพื่อค้นหาความแตกต่างในหลายวัน (และกลับมาในภายหลังเพื่อให้คำตอบเมื่อฉันพบที่อื่น) ซึ่งทำให้ฉันสันนิษฐานว่าคำตอบของฉันจะเป็นประโยชน์ต่อผู้อื่นในสถานการณ์เดียวกันของฉัน เนื่องจากเป็นหัวข้อที่เกี่ยวข้องฉันไม่คิดว่ามันคุ้มค่าที่จะเปิดคำถามใหม่โดยเฉพาะอย่างยิ่งเนื่องจากชื่อไม่ได้ระบุหน่วยการวัด แต่นั่นเป็นเพียงเหตุผลของฉัน คุณคิดอย่างไร?
e18r

@pnuts หากคุณพบคำตอบที่มีประโยชน์ แต่ไม่ได้อยู่ในขอบเขตของคำถามคุณสามารถแก้ไขคำถามได้ (ในกรณีนี้ให้พูดนาทีหรือชั่วโมงหรือวันหรืออะไรก็ได้) ฉันเป็นแค่ผู้ชายคนหนึ่งคำถามนี้มีผู้ชม 100,000 ครั้ง
Stefano Palazzo

3

คุณอาจลองTIMEVALUE()เช่นกัน

ในกรณีข้างต้นการแก้ปัญหาจะเป็น:

(TIMEVALUE(End Time) - TIMEVALUE(Start Time))*24*60 จะให้เวลาต่างกันเป็นนาที


ยินดีต้อนรับ Sujeeth! คำตอบที่ดีฉันเพิ่มการจัดรูปแบบบางอย่างเพื่อให้อ่านง่ายขึ้น
Vidar S. Ramdal

1

ใน Google ชีตฉันใช้สูตรดังต่อไปนี้

=Round((hour(A2-A1)*60 + minute(A2-A1))/60,2)

เพื่อให้ความแตกต่างเป็นชั่วโมงทศนิยม




-1

สำหรับการสมัครส่วนตัวของฉัน:

StartTime (columnA)| EndTime(Column B)| Date (Column C)

สิ่งนี้ใช้ได้กับฉัน:
=if(B4-A4<0,(B4+C4+1)-(A4+C4),B4-A4);จัดรูปแบบเซลล์เป็น Format \ Time \ Duration

สำหรับสภาพที่แท้จริง: สูตรที่ได้รับแรงบันดาลใจจากความคิดเห็นของ Stefano Palazzo


ps date เชื่อมโยงกับ StartTime แม้ว่า StopTime จะถูกเลื่อนไปยังวันถัดไปซึ่งเป็นสาเหตุที่ฉันเพิ่ม +1 ในวันที่สำหรับ EndTime หาก EndTime ของคุณมีมากกว่าหนึ่งวัน +1 จะไม่ทำงานอีกต่อไป
Bob K

-2

ฉันยอมรับว่าเวลาเดลต้าแสดงเป็นวันเพื่อกลับไปบอกว่านาทีคุณควรคูณความแตกต่างด้วย 1440 ซึ่งคือ 24 x 60

ฉันมีปัญหานี้ในวันนี้และคิดว่าฉันจะพูดถึงวิธีง่าย ๆ อื่น ๆ ในการรับเวลาปัจจุบันในสเปรดชีต Google Docs คือการป้อนCONTROL:ในเซลล์ คุณสามารถใช้สิ่งนี้กับทั้งเซลล์เริ่มต้นและสิ้นสุดเวลา

หากคุณต้องการป้อนวันที่ปัจจุบันในเซลล์การดำเนินการนี้จะสำเร็จได้ CONTROL;


1
ขอขอบคุณที่แบ่งปัน แต่มันไม่ใช่คำตอบสำหรับคำถาม อ่านข้อมูลเพิ่มเติมเกี่ยวกับการท่องเที่ยวว่าในของเราศูนย์ช่วยเหลือ ยินดีต้อนรับสู่เว็บแอปพลิเคชัน !!
จาค็อบ ม.ค. Tuinstra
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.