Hãy giúp mình hoàn tất hàm nhằm trả về quý của năm nhập vô

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

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia
8/6/06
Bài viết
14,574
Được thích
22,893
Nghề nghiệp
U80
Mã:
[B]Function Quy(Optional Dat As Date) As Byte[/B] 
 If Dat = 0 Then Dat = Date

[B]End Function[/B]

Dòng lệnh của ai ngắn & hiệu quả nhất sẽ có thưởng xị bàu đá!
 
Mã:
[B]Function Quy(Optional Dat As Date) As Byte[/B] 
 If Dat = 0 Then Dat = Date

[B]End Function[/B]
Dòng lệnh của ai ngắn & hiệu quả nhất sẽ có thưởng xị bàu đá!
Có phải là vậy không Bác.
PHP:
Function Quy(Optional Dat As Date) As Byte
 If Dat = 0 Then Dat = Date
 iMonth = Month(Dat)
 iQuy = Int((iMonth + 2) / 3)
Quy = iQuy
End Function
 
Upvote 0
Mã:
[B]Function Quy(Optional Dat As Date) As Byte[/B] 
 If Dat = 0 Then Dat = Date

[B]End Function[/B]

Dòng lệnh của ai ngắn & hiệu quả nhất sẽ có thưởng xị bàu đá!

Bác xem đoạn code em viết xem nhé:
PHP:
Function Quy(Optional MyDate As String) As Byte
 If IsNull(MyDate) Then MyDate = Date
 Select Case Month(MyDate) / 12
 Case Is <= 0.25: Quy = 1
 Case Is <= 0.5: Quy = 2
 Case Is <= 0.75: Quy = 3
 Case Else: Quy = 4
 End Select
 End Function

Oh, post xong, thấy bài anh THUNGHI, nhìn lại thấy code mình củ chuối quá!
 
Lần chỉnh sửa cuối:
Upvote 0
Có phải là vậy không Bác.
PHP:
Function Quy(Optional Dat As Date) As Byte
 If Dat = 0 Then Dat = Date
 iMonth = Month(Dat)
 iQuy = Int((iMonth + 2) / 3)
Quy = iQuy
End Function

To THUNGHI
Mạn phép rút gọn luôn code của anh nhé:
PHP:
Function Quy(Optional Dat As Date) As Byte
If Dat = 0 Then Dat = Date
Quy = Int((Month(Dat) + 2) / 3)
End Function

Nhân đây cho em hỏi, Tại sao Optional Dat nếu bỏ trống, vẫn dùng điều kiện:
If Dat = 0..... mà không dùng If Isnull(Dat).....???+-+-+-+
 
Upvote 0
Ngắn thì còn có thể ngắn, tuy nhiên như thế nào là hiệu quả thì lại khó nói lắm, vì tùy vào các trường hợp thôi.
Sửa lại code xíu :
PHP:
Function Quy(Optional Dat As Date) As Byte
    Quy = Int((Month(IIf(Dat = 0, Date, Dat)) + 2) / 3)
End Function

Vì vậy vẫn hơi thắc mắc, vì bác SA đố cơ mà.

Thân!
 
Upvote 0
Nhân đây cho em hỏi, Tại sao Optional Dat nếu bỏ trống, vẫn dùng điều kiện:
If Dat = 0..... mà không dùng If Isnull(Dat).....???+-+-+-+

Vì ta ấn định biến kểu Date - Cũng có nghĩa là kiểu số

Nếu ấn định kiểu Varỉant thì xem thử macro sau sẽ rơi vô trường hợp nào:

PHP:
Sub Quy0(Optional Dat )
   If IsNull(Dat) Then
      MsgBox ""
   ElseIf IsMissing(Dat) Then
      MsgBox "IsMissing"
   ElseIf Dat = 0 Then
      MsgBox "0"
   End If
   Dat = Date
End Sub
Mã:
[B]Sub GoiQuy()[/B]
   Quy0
[B]End Sub[/B]

'* * * * '* * * *'
Mình cũng xin góp vui về hàm trên cái;
Mã:
Quy = Choose(Month(Dat), 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4)
Xin các bạn tiếp tục, mình còn 1 phương án nữa cơ đấy!
 
Lần chỉnh sửa cuối:
Upvote 0
Quy = Choose(Month(Dat), 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4)[/code]
Xin các bạn tiếp tục, mình còn 1 phương án nữa cơ đấy!
Góp thêm một hàm:
Mã:
Function Quy(Optional Dat As Date) As Byte
If Dat = 0 Then Dat = Date
Quy = DatePart("q", Dat)
End Function
 
Upvote 0
Sửa tiếp cái hàm cuối của CaDaFi cái!

Mã:
[B]Function Quy(Optional Dat As Date) As Byte [/B]
  If Dat = 0 Then Dat = Date 
  Quy = (Month(Dat) + 2) \ 3 
[B]End Function [/B]
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Thêm một cách nữa đây!

Sửa lại chút xíu thôi : Dấu "\" ---> "/"

PHP:
Function Quy(Optional Dat As Date) As Byte
    If Dat = 0 Then Dat = Date
    Quy = WorksheetFunction.RoundDown(Month(Dat) / 3 + 0.75, 0)
End Function
Mà đã dùng round rồi sao không là :
PHP:
Function Quy(Optional Dat As Date) As Byte
    If Dat = 0 Then Dat = Date
    Quy = Round(Month(Dat) / 3 + 0.25, 0)
End Function

Hoặc bản thân Quy as Byte nên không cần Round

PHP:
Function Quy(Optional Dat As Date) As Byte
    If Dat = 0 Then Dat = Date
    Quy = Month(Dat) / 3 + 0.25
End Function



Thân!
 
Upvote 0
/-*+/ Bác SA_DQ ơi! Kỳ này một xị bàu đá chắc không đủ! Hy vọng bác hào phóng gửi cho chúng em hai xị nhé!
Không phải gởi đến đâu; Mà là đem đến; Tữu lượng của BAB & mấy anh em mình đọ lường được rồi mà; Mình vừa có nguồn bổ sung 2.000 Cl - Vô tư đi!

Thêm 1 phương án mở rọng về phía trái:-=, chứ không lại là SPAM:
Mã:
 (Month(Dat)-1) \ 3 + 1
 
Upvote 0
Có lẽ câu hỏi này của em hơi ngố, nhưng thực sự không biết nên em xin phép hỏi:
Dấu "\" và dấu "/" trong trường hợp này đều sử dụng được. Vậy tại sao?
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom