Sub t()
' dont ask me why I use so much magic numbers
' this crap doesnt deserve clean code
' Ii wrote this, but i dont thinj the table is a good design.
Dim loai() As String, soluong As Long
Dim bang(1 To 20, 1 To 7)
Dim tenSP(), vtSP(), cotSP ' ten san pham (viet tat), vi tri tren bang, vi tri theo cot
Dim dong As Long, sp ' dong trong tin nhan, san pham trong dong
tenSP = Array("cc", "ps", "pc", "tg", "tgn", "tgb", "sg", "sgd", "sgs")
vtSP = Array(0, 1, 2, 3, 4, 4, 5, 6, 6, 7)
dlDong = Split(Range("'tinnhan'!c5").Value, Chr(10)) ' du lieu cua tung dong trong tin nhan
For dong = LBound(dlDong) To UBound(dlDong) ' duyet tung dong
For Each sp In Split(dlDong(dong), " ") ' duyet tung san pham trong dong
soluong = Val(sp)
sp = Replace(sp, CStr(soluong), "")
If soluong >= 100 And sp = tenSP(1) Then sp = tenSP(2) ' chuyen ps sang psc
cotSP = vtSP(Application.Match(sp, tenSP, 0))
If Not IsError(cotSP) Then
bang(dong - LBound(dlDong) + 1, cotSP) = soluong ' ghi vao bang
End If
Next sp
Next dong
Range("c4:i23").Value = bang
End Sub
Báo lỗi chú ơi ...Lần sau thì viết rõ ra "e" là gì nhé. Đã đi hỏi bài cũng lười biếng viết tắt. Bạn không nghĩ người ta phải bỏ công ra gõ bài trả lời bạn à?
Dữ liệu gì nhìn phát bịnh.
Bài này làm thủ công cũng được nhưng chắc với khả năng của bạn thì cũng dễ nhầm.
Mã:Sub t() ' dont ask me why I use so much magic numbers ' this crap doesnt deserve clean code ' Ii wrote this, but i dont thinj the table is a good design. Dim loai() As String, soluong As Long Dim bang(1 To 20, 1 To 7) Dim tenSP(), vtSP(), cotSP ' ten san pham (viet tat), vi tri tren bang, vi tri theo cot Dim dong As Long, sp ' dong trong tin nhan, san pham trong dong tenSP = Array("cc", "ps", "pc", "tg", "tgn", "tgb", "sg", "sgd", "sgs") vtSP = Array(0, 1, 2, 3, 4, 4, 5, 6, 6, 7) dlDong = Split(Range("'tinnhan'!c5").Value, Chr(10)) ' du lieu cua tung dong trong tin nhan For dong = LBound(dlDong) To UBound(dlDong) ' duyet tung dong For Each sp In Split(dlDong(dong), " ") ' duyet tung san pham trong dong soluong = Val(sp) sp = Replace(sp, CStr(soluong), "") If soluong >= 100 And sp = tenSP(1) Then sp = tenSP(2) ' chuyen ps sang psc cotSP = vtSP(Application.Match(sp, tenSP, 0)) If Not IsError(cotSP) Then bang(dong - LBound(dlDong) + 1, cotSP) = soluong ' ghi vao bang End If Next sp Next dong Range("c4:i23").Value = bang End Sub
Cố tình trêu lão già đây mà!Báo lỗi chú ơi ...
Tôi đâu có xài Opton Exlpicit như quý vị.Cố tình trêu lão già đây mà!
Thử để cái tiếng Anh đó vào thì nó báo lỗi!
Em bí quá rồi, cao nhân vào giúp em với!
View attachment 290549
Vì thớt chưa biết cách sử dụng nên đâu biết nó có báo lỗi hay khôngBạn gở bàu #3 thêm cái ốp sòng ấy chứ thớt có biết đâu.