[Nhờ giúp đỡ] bảng tính tiền

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

JoKeR

Thành viên mới
Tham gia
15/9/07
Bài viết
3
Được thích
0
Nhờ mọi người giúp đỡ bảng tính tiền lấy sheet "TinNhan" rồi điền vào các cột tương ứng theo mã hàng và số lượng
File e có đính kèm, mong được giúp đỡ chứ cái này điền bằng tay e hay bị nhằm
Xin cám ơn!
 

File đính kèm

  • Filetinhtien.xlsx
    13.1 KB · Đọc: 30
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
 
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
Báo lỗi chú ơi ...
1684881177596.png
 
Cố tình trêu lão già đây mà!
$$$$@
Tôi đâu có xài Opton Exlpicit như quý vị.

Thú thật: lúc đầu code rắc rối hơn bởi vì tôi phân tích lầm là dữ liệu sẽ dồn vào một hàng, sau đó mới tách ra từng sản phẩm. Xem kỹ lại cái bảng đầu ra mới thấy là mỗi dòng của đầu vào có lẽ là từ một email (đơn đặt hàng) riêng cho nên phải tính từng dòng. Sửa lại thì quên không khai báo dữ liệu dòng thôi.
 
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

Trước đó, ở bài #2 tôi có câu:
"Sau khi quan sát kỹ cái bảng đầu ra, thấy mẫu mã nó phát bịnh luôn. Cho nên cứ để code chữa cháy ấy mà chạy được rồi. Cái biểu mẫu ấy không xứng đáng bỏ thêm công sức chỉnh clean code (code sạch sẽ, gon ghẽ)"
Nhưng sau đó thì lại xóa câu ấy đi.
Bạn gở bàu #3 thêm cái ốp sòng ấy chứ thớt có biết đâu.
 
Web KT
Back
Top Bottom