echo07
Nguyệt Hà
- Tham gia
- 24/8/07
- Bài viết
- 435
- Được thích
- 318
Bạn thử tham khảo. .cứ mỗi một ô lại tăng thêm một phút.
thử hàm thô thiển này thử bạn:Chào các anh chị.
Tôi có một dãy số được xuất tự động từ một thiết bị gồm có ngày tháng và giờ, cứ mỗi một ô lại tăng thêm một phút. Yêu cầu là nối tiếp dãy dữ liệu này theo điều kiện như vậy mà mãi chưa làm được, mong cả nhà giúp đỡ.
View attachment 285289
Function AddOneMinute(time As String) As String
Dim timeComponents() As String
Dim day As Long
Dim month As Long
Dim year As Long
Dim hour As Long
Dim minute As Long
Dim second As Long
' Replace spaces and colons with hyphens
time = Replace(time, " ", "-")
time = Replace(time, ":", "-")
' Split the input string into its individual components
timeComponents = Split(time, "-")
day = Val(timeComponents(0))
month = Val(timeComponents(1))
year = Val(timeComponents(2))
hour = Val(timeComponents(3))
minute = Val(timeComponents(4))
second = Val(timeComponents(5))
' Create a date using the individual components
Dim dt As Date
dt = DateSerial(year, month, day) + TimeSerial(hour, minute, second)
' Add 1 minute to the date
dt = DateAdd("n", 1, dt)
' Return the updated date as a string in the desired format
AddOneMinute = Format(dt, "dd-mm-yy hh:mm:ss")
End Function
Như vậy hỏng có vẻ "nguy hiểm".Chỉ cần cộng 1/1440 như bài 2.
Nếu muốn tăng nguy hiểm và rất rõ ràng thì chia hai lần: /24 / 60- công thức =NGAYGIOGOC + (ROW() - ROW(gốc))/1440
Bài toán sai số: lượng sai số có quan hệ đồng chiều với số lần chia.Nếu muốn tăng nguy hiểm và rất rõ ràng thì chia hai lần: /24 / 60
Thì chính anh nói "bài này sai số rất nhỏ cho nên không thành vấn đề"Bài toán sai số: lượng sai số có quan hệ đồng chiều với số lần chia.
Ừ nhỉ. Thói quen [xấu] của gần 40 năm làm việc với lập trình. Cứ thấy con toán chia là nghĩ đến 0 và sai số.Thì chính anh nói "bài này sai số rất nhỏ cho nên không thành vấn đề"
Sai số tôi muốn nói là chỗ đó. Cộng lúy tiến mọt hồi có thể xảy ra 58 giây thành 59.Thật ra với số chia 1/1440 hay 1/24/60 nếu có sai biệt (hoặc sai biệt từng lần khác với sai biệt lũy kế), nó sẽ rất nhỏ. thì khi Excel tính toán để hiểu thị lên dạng date time là đã tự làm tròn đến hàng tròn giây rồi.
Tôi chỉ đoán mà không thử. Một giây có giá trị là 1/86,400. Sai số của 1/1440 sẽ ít nhất là 1/ 1 tỷ (9 số 0) hoặc nhỏ hơn nữa (15, 20 số 0). Vậy thì phải bằng nào đó dòng lũy kế mới đạt 1/86,400Tuy nhiên, tôi đã thử 200000 lần cộng mà không thấy suy xuyển cho nên mới kết luận là sai số rất nhỏ.
Sẵn có dịp nói chuyện sai số, tiếp cho vui.Tôi chỉ đoán mà không thử. Một giây có giá trị là 1/86,400. Sai số của 1/1440 sẽ ít nhất là 1/ 1 tỷ (9 số 0) hoặc nhỏ hơn nữa (15, 20 số 0). Vậy thì phải bằng nào đó dòng lũy kế mới đạt 1/86,400
Cảm ơn bác, chúc bác và gia đình năm mới vạn sự bình anBạn thử tham khảo. .
Cảm ơn bạn nhéthử hàm thô thiển này thử bạn:
PHP:Function AddOneMinute(time As String) As String Dim timeComponents() As String Dim day As Long Dim month As Long Dim year As Long Dim hour As Long Dim minute As Long Dim second As Long ' Replace spaces and colons with hyphens time = Replace(time, " ", "-") time = Replace(time, ":", "-") ' Split the input string into its individual components timeComponents = Split(time, "-") day = Val(timeComponents(0)) month = Val(timeComponents(1)) year = Val(timeComponents(2)) hour = Val(timeComponents(3)) minute = Val(timeComponents(4)) second = Val(timeComponents(5)) ' Create a date using the individual components Dim dt As Date dt = DateSerial(year, month, day) + TimeSerial(hour, minute, second) ' Add 1 minute to the date dt = DateAdd("n", 1, dt) ' Return the updated date as a string in the desired format AddOneMinute = Format(dt, "dd-mm-yy hh:mm:ss") End Function
Cảm ơn anh nhé.Như vậy hỏng có vẻ "nguy hiểm".
Chơi vầy cho nó đã:
- đặt một name NGAYGIOGOC = 28/12/2022 19:00:58
- công thức =NGAYGIOGOC + (ROW() - ROW(gốc))/1440
Chú: con toán chia thì có sai số. Tùy theo loại sai số mà ta chọn kiểu tính từng ô riêng hay tính lũy tiến như bài #2.
Tuy nhiên, bài này sai số rất nhỏ cho nên không thành vấn đề.
Ở trên tôi chỉ minh họa.