kết hợp số gõ vào và số tháng để cho ra số thứ tự

Liên hệ QC

khanhnth02

Thành viên thường trực
Tham gia
5/8/07
Bài viết
324
Được thích
35
làm sao để khi ta gõ một số nào đó vào cột B , sau đó nó sẽ tự động kết hợp với số tháng để cho ra số thứ tự như hình duới đây. cảm ơn các anh chi đã xem qua
 

File đính kèm

  • ket hop STT voi so thang.JPG
    ket hop STT voi so thang.JPG
    53.5 KB · Đọc: 80
làm sao để khi ta gõ một số nào đó vào cột B , sau đó nó sẽ tự động kết hợp với số tháng để cho ra số thứ tự như hình duới đây. cảm ơn các anh chi đã xem qua

bạn muốn kết quả 102.01 hiện ở ngay ô bạn vừa gõ 102 hay hiện KQ ở ô khác
 
Upvote 0
Ý bạn như thế này phải không

Như thế này cơ:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
If Target.Column = 2 And Target.Offset(, -1).Value <> "" Then
Application.EnableEvents = False
    Tmp = Target
    Target.NumberFormat = "@"
    Target.Value = Tmp & "." & Format(Month(Target.Offset(, -1).Value), "00")
Application.EnableEvents = True
End If
End Sub
 
Upvote 0
như anh ptm0412 là đúng ý em rùi , nhưng sao khi ở cột B nếu ta không bấm gì hoăcj gõ Delete vào ô đó thì nó cũng hiện ra số tháng. làm sao để khi ta put số nào vào thì nó mới nhảy số . chân thành cảm ơn anh nha
 
Upvote 0
như anh ptm0412 là đúng ý em rùi , nhưng sao khi ở cột B nếu ta không bấm gì hoăcj gõ Delete vào ô đó thì nó cũng hiện ra số tháng. làm sao để khi ta put số nào vào thì nó mới nhảy số . chân thành cảm ơn anh nha
Thêm 1 câu lệnh vào đầu code:

If Target = "" Then Exit Sub

hoặc sửa câu thứ 3 thành:

If Target.Column = 2 And Target.Offset(, -1)<> "" And Target<> "" Then
 
Upvote 0
cảm ơn anh . nhưng còn nếu ta muốn sửa lại hoặc xóa ngày tháng ở cột A thì làm sao để cột B thay đổi theo? Theo như ở trên thì nó cố định luôn anh à
 
Upvote 0
Còn cần gì thỉ nói hết luôn đi, chứ mỗi lần hỏi thêm 1 câu code vào, rốt cục nó thành nồi xà bần mất.
 
Upvote 0
chắc có lẽ thêm một cái cần này nữa là hoàn chỉnh. giúp thì cho trót lun anh ơi. cảm ơn anh
 
Upvote 0
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 2 Then Exit Sub
If Target.Column = 1 Then
    If Target = "" Then
        Target.Offset(, 1).ClearContents: Exit Sub
    Else
        Tmp = Target.Offset(, 1)
        If Len(Tmp) = 0 Then Exit Sub
        Target.Offset(, 1) = Left(Tmp, InStr(1, Tmp, ".") - 1): Exit Sub
    End If
End If
If Target.Column = 2 And Target.Offset(, -1) <> "" And Target <> "" Then
Application.EnableEvents = False
    Tmp = Target
    Target.NumberFormat = "@"
    Target.Value = Tmp & "." & Format(Month(Target.Offset(, -1)), "00")
Application.EnableEvents = True
End If
End Sub
 
Upvote 0
cảm ơn anh nhé. nhưng sao nó vẫn còn bị lỗi. nếu như tôi gõ số trước rồi sau đó mới gõ ngày tháng thì nó báo lỗi. cái này là bị gì vậy anh?
 
Upvote 0
Bởi vậy mới nói bạn liệt kê hết ra. Theo suy luận thông thường thì người ta nhập liệu từ trái qua phải, từ trên xuống dưới, chứ có ai nhập liệu từ giữa ra 2 bên đâu?

gõ một số nào đó vào cột B , sau đó nó sẽ tự động kết hợp với số tháng để cho ra số thứ tự như hình
ta muốn sửa lại hoặc xóa ngày tháng ở cột A thì làm sao để cột B thay đổi theo
Bạn gõ trước số ở cột B, mà ô A kế bên trống, thì nó còn nguyên số. Gõ ngày sau thì lỗi là phải rồi.

Có thể sửa code theo hướng này nhưng tôi thích buộc nhập liệu cột A trước. Nhập cột B trước bị quỳ gai mít:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 2 Then Exit Sub
If Target.Column = 1 Then
    If Target = "" Then
        Target.Offset(, 1).ClearContents: Exit Sub
    Else
        Tmp = Target.Offset(, 1)
        If Len(Tmp) = 0 Then Exit Sub
        
        Target.Offset(, 1) = Left(Tmp, InStr(1, Tmp, ".") - 1): Exit Sub
    End If
End If
If Target.Column = 2 And Target <> "" Then
If Target.Offset(, -1) = "" Then MsgBox "Go ngay truoc ong oi!": Target.Clear: Exit Sub
Application.EnableEvents = False
    Tmp = Target
    Target.NumberFormat = "@"
    Target.Value = Tmp & "." & Format(Month(Target.Offset(, -1)), "00")
Application.EnableEvents = True
End If
End Sub
 
Upvote 0
cảm ơn anh nhé. nhưng sao nó vẫn còn bị lỗi. nếu như tôi gõ số trước rồi sau đó mới gõ ngày tháng thì nó báo lỗi. cái này là bị gì vậy anh?
Thử code này xem:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim i As Long, Rng As Range, iMth As Long, iVal
  On Error GoTo ExitSub
  If Not Intersect(Range("A1:B1000"), Target) Is Nothing Then
    Set Rng = Intersect(Range("A1:B1000"), Target.EntireRow)
    Application.EnableEvents = False
    For i = 1 To Rng.Rows.Count
      If Rng(i, 1).Value <> "" And Rng(i, 2).Value <> "" Then
        iMth = Month(Rng(i, 1).Value)
        iVal = Split(Rng(i, 2).Value, ".")(0)
        If iMth > 0 Then Rng(i, 2).Value = "'" & iVal & "." & Format(iMth, "00")
      End If
    Next
ExitSub:
    Application.EnableEvents = True
  End If
End Sub
Rắc rối thật!
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom