xin mã code để kết hợp tháng với mã hàng

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
có thể dùng cách nào để khi ta nhập dữ liệu vào một ô nào đó sẽ cho ra kết quả và tự động kèm theo tháng của ô bên cạnh. giống như trường hợp sau khi ta gõ số tiền vào sẽ cho ra kết quả cùng với dấu $ phia trước. tôi muốn thế $ này bằng một chữ nào khác có được không? tôi có file đính kèm, chân thành cảm ơn.
 

File đính kèm

có thể dùng cách nào để khi ta nhập dữ liệu vào một ô nào đó sẽ cho ra kết quả và tự động kèm theo tháng của ô bên cạnh. giống như trường hợp sau khi ta gõ số tiền vào sẽ cho ra kết quả cùng với dấu $ phia trước. tôi muốn thế $ này bằng một chữ nào khác có được không? tôi có file đính kèm, chân thành cảm ơn.
Không thấy sự liên hệ nào giữa ngày tháng và mã hàng trong ví dụ của bạn.
 
số ../3 là tháng của cột A đó bạn. tóm lại là thay vì ta gõ ở ô B3 là F08-039/3 thì ta chỉ cần gõ F08-039 và Enter. Kết quả tự động cho ra F08-039 kết hợp với tháng của Ô A3 như trên
 
Dùng cột phụ để kết hợp mã cho khỏe, cần gì phải dùng đến VBA.
Chẳng hạn ở cột C, ô C2 dùng công thức:
=B2 & "/" & MONTH(A2)
 
Nếu vẫn muốn dùng VBA thì sử dụng code sau cho sự kiện thay đổi giá trị của sheet:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Me.Range("B3:B100")) Is Nothing Then Exit Sub
Application.EnableEvents = False
    Target = Target(1) & "/" & Month(Target.Offset(0, -1))
Application.EnableEvents = True
End Sub
 
bảng tính tôi có rất nhiều cột rồi nên ko muốn thêm cột phụ cho rườm rà và còn nhiều lý do khác. xin chân thành cảm ơn mọi người đã quan tâm nhé.
 
bảng tính tôi có rất nhiều cột rồi nên ko muốn thêm cột phụ cho rườm rà và còn nhiều lý do khác. xin chân thành cảm ơn mọi người đã quan tâm nhé.
Bạn đã thử code tôi gửi ở bài số #5 chưa? có sai sót không? và áp dụng vào bảng tính của bạn có làm chậm quá trình xử lý không?... v.v và v.v...
 
tôi coppy vào rồi nhưng không chạy được. không biết sai sót gì. bạn có thể gửi file cho mình được không?
 
Chắc là bạn chưa Enable Macros rồi.
Vào Excel - Tools - Macro - Security... chọn mức Medium - OK
Đóng Excel.
Sau đó mở file lên, nhập vào cột B thử xem.
Code của bài #5 đây:
 

File đính kèm

Lần chỉnh sửa cuối:
bạn có gửi nhầm file không vậy, tôi đã bật macro rồi nhưng không thấy mã code nào trong sheet 1 cả, và tất nhiên nhập dữ liệu vào cũng không thấy phản ứng gì.
hình như mã của anh hoangvuluan thiếu thêm cái này "selection"
Worksheet_selectionChange(ByVal Target As Range)
sau khi bỏ vào thì chạy được nhưng vẫn còn một số khuyết điểm. mong bạn giải giúp với:
- mỗi lần kích chuột vào ô đó để xem thì nó tự động tạo thêm tháng nữa
_những ô chưa có dữ liệu trong cột A , nếu mình kích vào cột B cũng tự nhảy số tháng
làm sao khắc phục được 2 cái này vậy bạn. làm sao để khi mình nhập dữ liệu và bấm Enter thì ô đó (cột B)mới cho ra kết quả
 
bạn có gửi nhầm file không vậy, tôi đã bật macro rồi nhưng không thấy mã code nào trong sheet 1 cả, và tất nhiên nhập dữ liệu vào cũng không thấy phản ứng gì.
hình như mã của anh hoangvuluan thiếu thêm cái này "selection"
Worksheet_selectionChange(ByVal Target As Range)
sau khi bỏ vào thì chạy được nhưng vẫn còn một số khuyết điểm. mong bạn giải giúp với:
- mỗi lần kích chuột vào ô đó để xem thì nó tự động tạo thêm tháng nữa
_những ô chưa có dữ liệu trong cột A , nếu mình kích vào cột B cũng tự nhảy số tháng
làm sao khắc phục được 2 cái này vậy bạn. làm sao để khi mình nhập dữ liệu và bấm Enter thì ô đó (cột B)mới cho ra kết quả
Có lẽ tôi đính kèm nhầm File. đã gởi lại ở bài #9.
Code của hoangvuluan không sai, chỉ do bạn tự ý thêm vào cái "Selection" nên nó mới bị như thế.
Với lại code của hoangvuluan khai báo vùng ảnh hưởng trong cột B là từ B3:B100, ban nhập vào B2 hay B101 thì code không chạy đâu.
 
tôi đã làm được theo bạn rồi. xong vẫn còn vướng mắc chỗ, nếu cột A không có dữ liệu thì cột B vẫn ra số tháng nếu ta kích vào đó, và sau đó xoá cái này cũng không được. viết thêm đoạn mã nào nữa để cột A không có giá trị thì cột B cũng bằng không.
 
Thay bằng code sau:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Me.Range("B2:B1000")) Is Nothing Or _
    InStr(Target, "/") Then Exit Sub
Application.EnableEvents = False
     If (Target(1) <> "") And (Target(1).Offset(0, -1) <> "") Then _
        Target = Target(1) & "/" & Month(Target(1).Offset(0, -1))
Application.EnableEvents = True
End Sub
 
Lần chỉnh sửa cuối:
đã làm xong nhưng còn cái này nữa bạn, khi tôi sửa ngày tháng trong cột A thì cột B không thay đổi giá trị. vậy viết thêm đoạn nào nữa để giải quyết cái này. cảm ơn nhé
 
đã làm xong nhưng còn cái này nữa bạn, khi tôi sửa ngày tháng trong cột A thì cột B không thay đổi giá trị. vậy viết thêm đoạn nào nữa để giải quyết cái này. cảm ơn nhé
Cái này cũng có thể giải quyết được, nhưng chỉ với dữ liệu ít. Vì sự thay đổi ở cột B phụ thuộc vào giá trị của cột A, bây giờ muốn cột A thay đổi cũng làm thay đổi ở B thì với dữ liệu nhiều có thể làm cho bảng tính của bạn nó "NỔI KHÙNG" luôn đó.
Đơn giản là sau khi sửa ngày tháng ở cột A, bạn click vào cột B và xóa đi phần thêm vào trước đó (gồm dấu / và tháng) thì nó sẽ tự cập nhật lại.
Thân!
 
vậy không có cách nào để khi chỉnh sửa cột a (sửa với số lượng ít) thì cột B tự động update lại hả bạn. Vì nhiều khi chỉnh sửa cột A nhưng không để ý đến cột B nên sợ số liệu sẽ bị sai. Có cách nào tự động update không?
một vấn đề nữa là tại sao khi tôi coppy dữ liệu từ một ô nào đó thì nó lại báo lỗi "debug".
 
Bạn chạy lại code này xem sao (cho phép thay đổi cả cột A lẫn cột B)

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, k As Long, s As Range
Application.EnableEvents = False
    Set r = Target(1)
If Not Intersect(r, Me.Range("B2:B1000")) Is Nothing Then
    If r <> "" And r.Offset(0, -1) <> "" Then
        k = InStr(r, "/") - 1
        If k < 0 Then k = Len(r)
        r = Left(r, k) & "/" & Month(r.Offset(0, -1))
    End If
Else
    If Not Intersect(r, Me.Range("A2:A1000")) Is Nothing Then
        Set s = r.Offset(0, 1)
        If r <> "" And s <> "" Then
            k = InStr(s, "/") - 1
            If k < 0 Then k = Len(s)
            s = Left(s, k) & "/" & Month(r)
        End If
    End If
End If
    Set r = Nothing
    Set s = Nothing
Application.EnableEvents = True
End Sub
 
Web KT

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

Back
Top Bottom