Dùng hàm nào để được kết quả như sau

  • Thread starter Thread starter vanle33
  • Ngày gửi Ngày gửi
Liên hệ QC

vanle33

Thành viên gạo cội
Tham gia
30/10/08
Bài viết
5,938
Được thích
3,991
Giới tính
Nam
Chào các anh chi em
Em có yêu cầu này mong các ace giúp đỡ
Thanks
 

File đính kèm

Cái vụ này chắc dùng làm biên bản nghiệm thu rồi. Trước tui cũng tò mò tính làm kiểu này. Tính dùng hàm rand() nhưng bất tiện ở chỗ, sau khi lấy được kết quả rồi, phải copy và paste value, vì mỗi lần tính toán lại, hàm rand() lại cho 1 kết quả khác. Với nhiều điều kiện như bạn đưa ra, có thể phải mất vài lần chạy mới cho ra kết quả. Như thế tính năng "tự động" lại làm tốn thêm nhiều thời gian hơn, mà sơ xảy một chút là dữ liệu sai bét hết cả. Dùng randbetween() cũng được, ngặt nỗi với 2 khoảng từ 8H đến 12h, 13h30 đến 16h30 thì không biết phải làm gì.
Dùng hàm =RANDBETWEEN(16;24)/2/24 cho ra kết quả là các khoảng thời gian từ 8h đến 12h với thời gian lẻ là 30 phút. Như vậy để có thời gian như yêu cầu có lẽ phải dùng chiêu này: =IF(AND(RANDBETWEEN(16;33)>24;RANDBETWEEN(16;33)<27);0;RANDBETWEEN(16;33)/2/24). Thêm cái khó nữa là khoảng thời gian cộng thêm cũng rand() mà phải đảm bảo thời gian kết thúc cũng nằm trong thời gian "hành chính". Nên chăng bạn có thể cho nó một khoảng cố định luôn đi. Giả sử là 1h thì lúc đó hàm là: =IF(AND(RANDBETWEEN(16;31)>22;RANDBETWEEN(16;31)<27);0;RANDBETWEEN(16;31)/2/24). Cái này cũng hên xui à nha. Có khi bấm đi bấm lại vài lần mới được đó. Khi đó giờ kết thúc chỉ cần cộng giá trị trên với 1/24 là ok.
 
Lần chỉnh sửa cuối:
E đã nhập công thức IF(AND(RANDBETWEEN(16;31)<=22;RANDBETWEEN(16;31)> =27);RANDBETWEEN(16;31)/2/24;0) mấy lần nhưng đều ra giá trị 0. Đó là công thức ở ô E9 hay E10 vậy a?
 
Bài viết mình vừa sửa lại chút. Bạn kiểm tra lại xem có được không nhé!
 
Bạn phải chạy công thức vài lần, hên lắm hàm randbetween() cho ra kết quả trong khoảng yêu cầu thì kết quả sẽ khác 0.
Tức là đặt công thức tại ô E9 ah bạn và nhập công thức đó? Thỉnh thoảng ô ra kết quả là 0,582 hoặc 0,542 hoặc 0,354 .... Nhưng mình muốn ra kết quả la 8h00 cơ bạn ah?
 
Bạn xem trong file có đúng ý bạn không nhé!
 

File đính kèm

File đính kèm

Tức là đặt công thức tại ô E9 ah bạn và nhập công thức đó? Thỉnh thoảng ô ra kết quả là 0,582 hoặc 0,542 hoặc 0,354 .... Nhưng mình muốn ra kết quả la 8h00 cơ bạn ah?
Muốn kết quả là 8h00 thì bạn đưa con trỏ vào ô đó, bấm chuột phải, chọn format cells. Chọn thẻ number/ custom. Tại box type bạn gõ hh:mm và bấm ok. Nó sẽ định dạng và hiển thị kết quả là 8h00 nếu ô của bạn có kết quả là 0,333333333333333.
 
Khi em mở file mà bạn làm thì hiện lên lôi #N/A là sao vậy bạn?
với hàm ở ô E9 là đúng ý mình đó. Mình muốn đổi dấu : thành h được ko? Nghĩa là 13:30 thành 13h30 đó
Thanks bạn

Lỗi #NA xảy ra do hàm vlookup không dò tìm được giá trị. Điều này tương tự như khi công thức mình đưa ra có giá trị =0, nghĩa là do hàm rand() trả về kết quả không nằm trong vùng yêu cầu.
 
Khi em mở file mà bạn làm thì hiện lên lôi #N/A là sao vậy bạn?
với hàm ở ô E9 là đúng ý mình đó. Mình muốn đổi dấu : thành h được ko? Nghĩa là 13:30 thành 13h30 đó
Thanks bạn

Dùng VBA thử xem, Ấn nút nếu thấy được thì xài, không thì ấn tiếp.
Nhớ Enable Macros.
 

File đính kèm

Mình đã định dạng lại ô cell như bạn nói. Và Mình muốn đổi dấu : thành h được ko? Nghĩa là 13:30 thành 13h30 đó
 
Mình đã định dạng lại ô cell như bạn nói. Và Mình muốn đổi dấu : thành h được ko? Nghĩa là 13:30 thành 13h30 đó
Thì thế này đi: hh"h"mm. Mình đang tự hỏi, nếu giờ bắt đầu là 16h00, thời gian cộng thêm là 1h30 thì thời gian kết thúc là 17h30, như vậy nằm ngoài vùng thời gian yêu cầu rồi!!?? Bạn hãy căn chỉnh thêm để có được công thức hợp lý nhất.
 
Lần chỉnh sửa cuối:
Cám ơn bạn. OK rồi
Nhưng công thức chỉ dành cho tg cộng thêm cố định là 1h. Thay đổi tgian ở đâu vậy bạn?
 
Dùng VBA thử xem, Ấn nút nếu thấy được thì xài, không thì ấn tiếp.
Nhớ Enable Macros.
Khi mình mở file của bạn thì thấy báo lỗi này. Ấn close xong thì ấn vào nút GPE không thấy tác dụng gì cả?
Tại sao vậy?
 

File đính kèm

Khi mình mở file của bạn thì thấy báo lỗi này. Ấn close xong thì ấn vào nút GPE không thấy tác dụng gì cả?
Tại sao vậy?
Chắc có gì đó không ổn giữa Ex2003 của mình và Ex gì đó của bạn.
Thử chép code này về máy bạn rồi tùy chỉnh vậy.
Ex2003 tôi chạy bình thường.
PHP:
Public Sub GPE()
Dim N As Variant, I As Long, Tem As Variant, Tem1 As Variant
    For I = 1 To 100
        N = Rnd() * 17
        If N >= 8 And N <= 11 Or N >= 13.5 And N <= 16.5 Then
            Tem = Application.WorksheetFunction.Ceiling(N, 0.5)
            Exit For
        End If
    Next I
        For I = 1 To 100
        N = Rnd() * 2
        If N >= 1 And N <= 2 Then
            Tem1 = Application.WorksheetFunction.Ceiling(N, 0.5)
            Exit For
        End If
    Next I
    Sheet1.[E9] = Int(Tem) & "h" & Format((Tem - Int(Tem)) * 60, "00")
    Sheet1.[E10] = Int(Tem + Tem1) & "h" & Format(((Tem + Tem1) - Int(Tem + Tem1)) * 60, "00")
End Sub

Hay là bạn chưa Enable Macros, nên Macro "Im ru"?
 
Chắc có gì đó không ổn giữa Ex2003 của mình và Ex gì đó của bạn.
Thử chép code này về máy bạn rồi tùy chỉnh vậy.
Ex2003 tôi chạy bình thường.
PHP:
Public Sub GPE()
Dim N As Variant, I As Long, Tem As Variant, Tem1 As Variant
    For I = 1 To 100
        N = Rnd() * 17
        If N >= 8 And N <= 11 Or N >= 13.5 And N <= 16.5 Then
            Tem = Application.WorksheetFunction.Ceiling(N, 0.5)
            Exit For
        End If
    Next I
        For I = 1 To 100
        N = Rnd() * 2
        If N >= 1 And N <= 2 Then
            Tem1 = Application.WorksheetFunction.Ceiling(N, 0.5)
            Exit For
        End If
    Next I
    Sheet1.[E9] = Int(Tem) & "h" & Format((Tem - Int(Tem)) * 60, "00")
    Sheet1.[E10] = Int(Tem + Tem1) & "h" & Format(((Tem + Tem1) - Int(Tem + Tem1)) * 60, "00")
End Sub
Mình dùng excel 2010. Mình mù tịt về PHP Code. Bạn hướng dẫn cụ thể cho mình dùng Code trên như thế nào nhé
 
Ở excel 2003 thì làm vầy
Mở excel-Tools-Macro-Security... chọn mức LOW - OK.
Đóng Excel.
Mở tập tin ở bài #12.
Ex2010 của bạn thì tìm chỗ nào có chức năng tương tự thì vào đó chỉnh vậy, tôi "bí thù lù" với Ex2010.

Hay là chờ có bạn nào xài Excel 2010 giúp bạn vậy.

Híc!
 
Hì. Đúng là excel 2003 vẫn chạy đc VBA của bạn
 
Web KT

Bài viết mới nhất

Back
Top Bottom