Công thức tính thời lượng cho thời gian có thể kéo dài hai ngày


0

Cột A: Thời gian bắt đầu ở định dạng 24 giờ (sử dụng công thức =NOW()và được khóa bằng Ctrl+ SHIFT+ ;)
Cột B: Thời gian kết thúc ở định dạng 24 giờ (được nhập giống như cho cột A)
Cột C: Thời lượng, được định dạng như [mm], sử dụng công thức=B1-A1

Làm cách nào để tính thời lượng nếu dữ liệu trong cột Bbao gồm thời gian xảy ra vào ngày hôm sau?


Bảng tính thực tế:

Ảnh chụp màn hình của worksh thực tế


Bạn cần nghiên cứu các định dạng ngày và thời gian trong excel. Công thức cho cột C có nghĩa đen = B1-A1 nhưng để nó hoạt động chính xác, các ô trước phải có định dạng ngày / giờ hợp lệ. Nó cũng xử lý nửa đêm tốt.
Tyson

Công thức trong cột C thực sự là = b1-a1 và định dạng là [mm], tôi quên đề cập rằng tôi sử dụng hàm "CTRL + SHIFT +;" để khóa thời gian và kết quả mà tôi nhận được bây giờ là thời lượng âm (-) và không được tính vào ngày hôm sau.
Saphiraz

Câu trả lời:


2

Ctrl+ Shift+ ;chỉ đặt thời gian hiện tại vào ô mà không có dấu dữ liệu và như @Akina chỉ ra trong câu trả lời của mình, nó không khóa gì cả.

NOW()thêm một dấu thời gian vào ô cũng như thời gian. Để thấy điều đó, hãy nhấp vào một ô trống chưa được định dạng hoặc bất kỳ ô nào ở Generalđịnh dạng và loại =NOW(). Tại thời điểm gõ này tôi nhận được 21/08/2018 11:25.

Nếu bạn đặt =NOW()vào ô A1=NOW()+TIME(23,0,0)vào ô B1, nếu sau đó bạn đưa =B1-A1vào ô C1và định dạng ô cho Timebạn sẽ nhận được 23:00:00.

Nếu bạn đặt thời gian vào mà không có dấu thời gian, bạn sẽ cần sử dụng một IF()công thức để xác định xem lần thứ hai có thấp hơn lần thứ nhất không (khung thời gian đã qua nửa đêm). Sau đây sẽ tìm ra sự khác biệt về thời gian giữa thời gian trong tế bào B1và tế bào A1cho dù thời gian kết thúc đã quá nửa đêm hay chưa. Nó cũng sẽ hoạt động có hoặc không có dấu thời gian vì dấu dữ liệu bị bỏ qua.

=IF(B1<A1,MOD(B1-A1,1),B1-A1)

Giải thích về công thức

=IF(B1<A1,...)

là thời gian trong tế bào B1quá nửa đêm? Nếu vậy, phần tiếp theo được thực thi

MOD(B1-A1,1)

Phần MOD(number,divisor)trả về phần còn lại sau khi một số được chia cho một ước. Ô B1trừ ô A1là một giá trị âm vì thời gian trong ô đã B1quá nửa đêm và excel không giống như giá trị thời gian âm trong hầu hết các trường hợp, do đó nó sẽ cung cấp #####mà không có MOD(). Các MOD()loại mà ra.

Một thay thế cho MOD()công thức sẽ là sử dụng

TIME(23,59,59)-TIME(HOUR(A1),MINUTE(A1),SECOND(A1))+TIME(0,0,1)+B1

Đó là 23:59:59 minus time in cell A1 plus 1 second plus time in cell B1.

Bit cuối cùng đó là ,B1-A1)là phần cuối cùng của IF()nơi mà nếu thời gian trong phòng giam B1không quá nửa đêm.


Công thức này có thể (dường như sẽ - nhưng thật lười biếng khi kiểm tra) cho kết quả sai nếu một trong các giá trị nguồn là "cố định" (và KHÔNG chứa phần ngày, chỉ là thời gian) trong khi phần còn lại không (và chứa cả hai ngày và phần thời gian).
Akina

Tôi không hiểu bạn đang nói gì @Akina. Tôi chỉ kiểm tra và thực sự, =IF(B1<A1,MOD(B1-A1,1),B1-A1)hoạt động cho dù có một dấu dữ liệu hay không.
Chris Rogers

Chèn thời gian hiện tại (bằng cách nhấn Ctrl-Alt-;) vào ô A1. Chèn datetime curent (theo công thức =NOW()) vào ô B1. Kiểm tra kết quả.
Akina

Tôi đã làm như bạn đề xuất, mặc dù nó là Ctrl + Shift + ;vào tế bào A1, và nó hoạt động với tôi.
Chris Rogers

2
Bạn không cần xét nghiệm IF. MOD nên xử lý sự khác biệt bất kể nó qua nửa đêm.
fixer1234

2

Có thể giải pháp thanh lịch và đơn giản nhất là giải pháp trong câu trả lời này được đề cập bởi fixer1234 trong bình luận này :

=MOD(B1-A1,1)

Lưu ý rằng nó giả định rằng cả hai giá trị chỉ là giá trị thời gian (hoặc phần ngày sẽ bị cắt ngắn), tức là mỗi phần nhỏ hơn 1 và thời lượng nhỏ hơn 24 giờ.

Giải trình:

Điều này hoạt động vì đối với giá trị datetime nối tiếp, 1 tương ứng với 24 giờ và giá trị chỉ có thời gian là giá trị datetime nhỏ hơn 1. Do đó:

  • Nếu B1 >= A1sau đó MOD(B1-A1,1)B1-A1như mong đợi
    hoặc
  • Nếu B1 < A1sau đó MOD(B1-A1,1)tương đương với 1-(A1-B1)(kể từ MOD(-n,m)=m-MOD(n,m)) cho thời lượng "bổ sung" chính xác


Một giải pháp thay thế (bạn đánh giá nếu nó đơn giản / thanh lịch hơn ;-)) là:

=(B1<A1)+B1-A1

Giải trình:

Điều này hoạt động vì TRUEcác giá trị được ép buộc ngầm định với a 1FALSEcác giá trị thành a 0, khi được sử dụng trong các phép toán số học. Do vậy:

  • Nếu B1 >= A1sau đó (B1<A1)0và công thức trở thành B1-A1
    hoặc
  • Nếu B1 < A1sau đó (B1<A1)1và công thức tương đương với1-(A1-B1)

Lưu ý rằng công thức này sẽ hoạt động chính xác ngay cả khi cả hai giá trị là thời gian cách nhau hơn 24 giờ! Đây không phải là trường hợp cho công thức đầu tiên, vì vậy công thức thứ hai này là một công thức hữu ích / chung hơn.


Tôi không chắc đoạn cuối của bạn đang nói gì. Nếu chúng tôi giả sử rằng thời lượng <24 giờ - tức là (thời gian bắt đầu) (thời gian kết thúc) <(thời gian bắt đầu + 24 giờ) - và bạn không lo lắng về việc xử lý chính xác trường hợp cả hai ô đều đúng (đầy đủ) datetime, sau đó =MOD(B1-A1, 1)dường như làm việc khá tốt. Và =IF(AND(A2>=1,B2>=A2), B2-A2, IF(AND(A2>=0,A2<1,B2>=0,B2<1), MOD(B2-A2,1), "Error"))dường như để xử lý tất cả các trường hợp tốt.
Scott

@ Hủy bỏ Tôi chỉ chờ đợi ai đó nhận ra điều đó ;-) Tôi đặc biệt đề cập đến nhận xét này của Akina và chủ đề tiếp theo. Sau khi viết nó, tôi nhận ra rằng đoạn văn này hơi thiếu chính xác. Điều tôi cần thêm là "nếu không có giả định nào khác được thực hiện" và "luôn tạo ra sự khác biệt chính xác". Bạn đúng ở chỗ nếu bạn chỉ muốn cắt bớt một giá trị datetime đầy đủ, thì công thức MOD sẽ hoạt động. (Cộng với công thức lỗi cũng xử lý trường hợp bằng cách bẫy nó.) Tôi sẽ xóa nó vì nó là OT / không chính xác.
robinCTS

-2

Làm cách nào để tính thời lượng nếu dữ liệu trong Cột B bao gồm thời gian rơi vào ngày hôm sau?

=1 + B1 - A1

được định dạng như một thời gian sẽ hiển thị kết quả chính xác. Tất nhiên, nếu B1> A1, resilt, chứa một phần ngày khác không, nhưng nó không được hiển thị vì định dạng ô.

Nếu bạn muốn sử dụng giá trị thời gian này trong một số tính toán thời gian, hãy sử dụng công thức phức tạp hơn

=B1-A1-INT(B1-A1)

Tái bút

và khóa bằng CTRL + SHIFT +;

Sự kết hợp này không có gì. Nó thay thế hoàn toàn nội dung ô bằng giá trị thời gian hiện tại.


Vâng, nó chỉ thay đổi nó thành giá trị thời gian, nhưng nó ngăn không cho thời gian tự động thay đổi vì tôi đang sử dụng một công thức dễ bay hơi = now (). Có cách nào để khóa dữ liệu di động không?
Saphiraz

@Saphiraz Tôi không hiểu bạn. Khi bất kỳ ô nguồn nào chứa NOW () và bảng thời gian của nó không được sửa thì kết quả trong (theo tôi hiểu) không thành vấn đề. Khi cả hai ô nguồn được cố định bởi Ctrl-Shift-;công thức sẽ cho kết quả bạn cần. Tái bút Hãy tìm =B1-INT(B1)-A1+INT(A1)-INT(B1-A1)...
Akina

vui lòng kiểm tra dữ liệu mẫu.
Saphiraz

1
vui lòng kiểm tra dữ liệu mẫu Tôi có thể kiểm tra gì trên ảnh chụp màn hình? Thêm dữ liệu mẫu được định dạng (độ dài cố định) (có thể dễ dàng sao chép-dán vào bảng Excel) vào câu hỏi của bạn (chỉ định phạm vi nguồn nếu cần) với kết quả tham chiếu. Đối với datetimes - nhập số và chỉ định định dạng cột.
Akina

-2

Để có sự khác biệt ở Minutesgiữa hai 24Hrs DateTime Stampsbạn có thể sử dụng một trong hai:

=Int((A2-A1)*24*60)

Hoặc là

=int((A2-A1)*1440)

Hoặc là

=ROUNDUP((A2-A1)*1440,2)

Lưu ý, ô Công thức phải có GeneralĐịnh dạng.


1
Sau khi khóa bằng CTRL + SHIFT +; không có phần ngày trong một giá trị. Nếu quá nửa đêm kết quả sẽ âm tính.
Akina

Tôi đã ghi lại hai giá trị sử dụng CTRL+SHIFT+;2:03 PM& 2:11 PM& được áp dụng =INT((M8-L8)*1440)&" Mnts"có câu trả lời 8 Mnts.
Rajesh S

,, Tiếp hoặc bạn cũng có thể sử dụng =ROUNDUP((M8-L8)*1440,2)&" Mnts".
Rajesh S

nhận được câu trả lời 8 Mnts Trao đổi giá trị nguồn - kết quả sẽ là 1432?
Akina

Nếu thời gian trong ô đã A2quá nửa đêm, các công thức trong câu trả lời của bạn không hoạt động như @Akina chỉ ra
Chris Rogers
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.