Gắng thêm xíu nữa nhập 2/2Hiện tại, Dùng Format cell nhập số 2 => 2/1/1990
Anh chị em có cách để ra đáp án: nhập số 2 => ra kết quả ngày / tháng /năm hiện tại ( Kết quả: 2/2/2023 )
Em cảm ơn
Có 1 cách dùng hàm CONCATENATE để nối các kí tự các ô khác nhau ra " 2" ,"/","1" OK nhưng hàm này thấy hơi lâu tíHiện tại, Dùng Format cell nhập số 2 => 2/1/1990
Anh chị em có cách để ra đáp án: nhập số 2 => ra kết quả ngày / tháng /năm hiện tại ( Kết quả: 2/2/2023 )
Em cảm ơn
Chỉ nhập 2 để ra 2/2/2023? Tức là chỉ ra kết quả các ngày trong tháng 2/2023? Nếu đúng thì chỉnh định dạng cell trong Custom Format, nhưng để nhìn chứ không có giá trị tính toán được.Hiện tại, Dùng Format cell nhập số 2 => 2/1/1990
Anh chị em có cách để ra đáp án: nhập số 2 => ra kết quả ngày / tháng /năm hiện tại ( Kết quả: 2/2/2023 )
Em cảm ơn
Mình muốn tính toán được ý.Chỉ nhập 2 để ra 2/2/2023? Tức là chỉ ra kết quả các ngày trong tháng 2/2023? Nếu đúng thì chỉnh định dạng cell trong Custom Format, nhưng để nhìn chứ không có giá trị tính toán được.
Các kết quả khác bạn muốn có là gì?
hơi lâu lười muốn nhập nhanh mỗi 1 số => ra kết quả cả tháng ý hihiGắng thêm xíu nữa nhập 2/2
Quy định trong Excel: Nhập ngày/tháng rồi Enter thì tự động thêm năm hiện tại. Nếu bắt Excel thêm tháng hiện tại thì có thể người viết ra phần mềm Excel sửa Quy định.Mình muốn tính toán được ý.
Ví dụ bây giờ tháng 2/2023 => nhập ngày 4 => kết quả 4/2/2023
giá trị phải tính toán được làm như thế nào nhỉ
Bài đã được tự động gộp:
. . . . . .
Bạn chờ bác SA_DQ cung cấp giải pháp nếu đi theo hướng của bác ấy.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [s5:S9999]) Is Nothing And _
Target.Row Mod 9 = 0 And Target.Value > 0 And Target.Value < 32 Then
[H9999].End(xlUp).Offset(1).Value = DateSerial(Year(Date), Month(Date), Target.Value)
End If
End Sub
À thì ra là hàm "sung rụng"PHP:Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [s5:S9999]) Is Nothing And _ Target.Row Mod 9 = 0 And Target.Value > 0 And Target.Value < 32 Then [H9999].End(xlUp).Offset(1).Value = DateSerial(Year(Date), Month(Date), Target.Value) End If End Sub
Oki tks bác . E thửPHP:Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [s5:S9999]) Is Nothing And _ Target.Row Mod 9 = 0 And Target.Value > 0 And Target.Value < 32 Then [H9999].End(xlUp).Offset(1).Value = DateSerial(Year(Date), Month(Date), Target.Value) End If End Sub
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub
For Each cell In Target
Application.EnableEvents = False
If cell.Value > 0 And cell.Value <= Day(WorksheetFunction.EoMonth(Date, 0)) Then
cell.Value = Date - Day(Date) + cell.Value
Else
MsgBox "Ngay " & cell.Value2 & " khong hop le!"
cell.Value = ""
End If
Application.EnableEvents = True
Next
End Sub
Police hôm nay nghỉ phép hết rồi, quẩy thôi . kakakaOki tks bác . E thử
' _,
' ___ _ _ _ ___(_)
'/ __| / \ | \| | _ | |
'\__ \/ \ \| \\ | _ \ |
'|___/_/ \_|_|\_|___/_|
'
Option Explicit
Private Type TypeArguments
Action As Long
Timer As Single
Caller As Range
Formula As String
Target As Range
parameters As Variant
address As String
value As Date
End Type
#If VBA7 Then
Private Declare PtrSafe Function SetTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As LongPtr, ByVal lpTimerFunc As LongPtr) As Long
Private Declare PtrSafe Function KillTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr) As Long
#Else
Private Declare Function SetTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long) As Long
#End If
Private Works() As TypeArguments
Function DateSet(newDate As Integer, Optional newMonth As Integer, Optional newYear As Integer) As String
On Error Resume Next
Dim k As Integer, r, t As Range
Set r = Application.ThisCell
k = UBound(Works): k = k + 1
ReDim Preserve Works(1 To k)
With Works(k)
.Action = 0
.address = r.address(0, 0, , 1)
.Formula = UCase(r.Formula)
Set .Caller = r
If newMonth <= 0 Then newMonth = month(Now)
If newYear <= 0 Then newYear = year(Now)
.value = DateSerial(newYear, newMonth, newDate)
End With
Call SetTimer(Application.hwnd, 555551, 0, AddressOf DateW_callback)
End Function
#If VBA7 And Win64 Then
Private Sub DateW_callback(ByVal hwnd As LongPtr, ByVal wMsg^, ByVal IdEvent As LongPtr, ByVal dwTime^)
#ElseIf VBA7 Then
Private Sub DateW_callback(ByVal hwnd As LongPtr, ByVal wMsg&, ByVal IdEvent As LongPtr, ByVal dwTime&)
#Else
Private Sub DateW_callback(ByVal hwnd&, ByVal wMsg&, ByVal IdEvent&, ByVal dwTime&)
#End If
On Error Resume Next
Call KillTimer(hwnd, IdEvent)
Dim UA%, i%
Dim a As Object, B As TypeArguments, su As Boolean, ee As Boolean
UA = UBound(Works)
If UA = 0 Then Exit Sub
For i = 1 To UA
B = Works(i)
Select Case B.Action
Case 0
Works(i).Action = 1
If a Is Nothing Then
Set a = Application
ee = a.EnableEvents: If ee Then a.EnableEvents = False
su = a.ScreenUpdating: If su Then a.ScreenUpdating = False
End If
B.Caller.value = B.value
End Select
Next
Erase Works
If Not a Is Nothing Then
If su And a.ScreenUpdating <> su Then a.ScreenUpdating = su
If ee And a.EnableEvents <> ee Then a.EnableEvents = ee
Set a = Nothing
End If
End Sub
Nhập 2 thôi nhé, chứ nhập 2/2 thì có gì đáng nói.nhập 2/2 để ra ngày cũng lười mà lại được các bác nhiệt tâm thế.
Thì nhập 2/2 là ra ngày, nhưng không chịu mất thêm vài giây lại muốn chỉ nhập 2 là xong. Mà hình như là nhập 2 xong không nhấn Enter nữa cơ.Nhập 2 thôi nhé, chứ nhập 2/2 thì có gì đáng nói.
Hiện tại, Dùng Format cell nhập số 2 => 2/1/1990
Anh chị em có cách để ra đáp án: nhập số 2 => ra kết quả ngày / tháng /năm hiện tại ( Kết quả: 2/2/2023 )
Em cảm ơn
Trên thực hành thì là chuyện chẳng những không ích lợi lắm mà còn có hại.Rán nhập thêm tí ti nữa cho nó chuẩn bạn ạ. Không ai đi nhập 2 mà muốn ra ngày cả.