Hàm tính thùng / viên (1 người xem)

  • Thread starter Thread starter BNTT
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

BNTT

Bùi Nguyễn Triệu Tường
Thành viên danh dự
Tham gia
3/7/07
Bài viết
4,946
Được thích
23,213
Nghề nghiệp
Dạy đàn piano
Do yêu cầu công việc, khi nhập xuất gạch, tôi phải làm những công đoạn là tính số thùng và số viên dựa theo số m2 (hoặc số thùng, tùy hãng sản xuất quy định). Nên tôi đã làm ra những công thức sau để tính.

Hàm tính số thùng và số viên dựa theo số lượng (SOLUONG):
+ DVT: đơn vị tính để nhập và xuất: m2 & thùng
+ KT: kích thước gạch: 20x25, 30x30, 40x40, v.v...
+ TV: quy cách đóng gói (số viên trong 1 thùng): 11 viên/ thùng, 20 viên/thùng, v.v...
Public Function Thungvien(SOLUONG, DVT, KT, TV)
If DVT = "m2" Then
A = SOLUONG / DIENTICH(KT)
ElseIf Left(DVT, 2) = "th" Then 'DVT = thùng
A = SOLUONG * TV
End If
XTHUNG = Int(A \ TV)
XVIEN = A - XTHUNG * TV
If XVIEN - Int(A - XTHUNG * TV) > 0.5 Then
'gạch thì chắc chắn là phải tính nguyên viên
XVIEN = Int(A - XTHUNG * TV) + 1
Else
XVIEN = Int(A - XTHUNG * TV)
End If
If XTHUNG = 0 And XVIEN <> 0 Then
Thungvien = XVIEN & " viên"
ElseIf XTHUNG <> 0 And XVIEN = 0 Then
Thungvien = XTHUNG & " thùng"
ElseIf XTHUNG = 0 And XVIEN = 0 Then
Thungvien = ""
Else
Thungvien = XTHUNG & " thùng + " & XVIEN & " viên"
End If
End Function

Trong đó có hàm tính diện tích (dựa theo kích thước):
Public Function DIENTICH(A)
Dim B As String
B = Len(A)
If B = 3 Then
DIENTICH = Left(A, 1) * Right(A, 1) * 0.0001
ElseIf B = 4 Then
DIENTICH = Left(A, 1) * Right(A, 2) * 0.0001
ElseIf B = 5 Then
DIENTICH = Left(A, 2) * Right(A, 2) * 0.0001
ElseIf B = 7 Then
DIENTICH = Left(A, 4) * Right(A, 2) * 0.0001
Else
DIENTICH = Left(A, 4) * Right(A, 4) * 0.0001
End If
End Function
Rồi bây giờ phải làm ngược lại, dựa vào số thùng, số viên lẻ (ngoài thùng), số viên trong mỗi thùng và kích thước của gạch mà tính ra số m2:
Public Function MET(Sothung, Sovien, Sovientrong1thung, Kichthuoc)
MET = (Sothung * Sovientrong1thung + Sovien) * DIENTICH(Kichthuoc)
End Function

Trong đó, để tính ra số thùng (tham số giống hàm Thungvien ở đầu bài):
Public Function Sothung(SOLUONG, DVT, KT, TV)
If DVT = "m2" Then
A = SOLUONG / DIENTICH(KT)
ElseIf Left(DVT, 2) = "th" Then
A = SOLUONG * TV
End If
XTHUNG = Int(A \ TV)
If XTHUNG = 0 Then
Sothung = 0
Else: Sothung = XTHUNG
End If
End Function

tính số viên:
Public Function Sovien(SOLUONG, DVT, KT, TV)
If DVT = "m2" Then
A = SOLUONG / DIENTICH(KT)
ElseIf Left(DVT, 2) = "th" Then
A = SOLUONG * TV
End If
XTHUNG = Int(A \ TV)
XVIEN = A - XTHUNG * TV
If XVIEN - Int(A - XTHUNG * TV) > 0.5 Then
XVIEN = Int(A - XTHUNG * TV) + 1
Else
XVIEN = Int(A - XTHUNG * TV)
End If
If XVIEN <> 0 Then
Sovien = XVIEN
ElseIf XVIEN = 0 Then
Sovien = 0
End If
End Function

Và 2 hàm sau đây để trích ra số thùng và số viên khi viết tắt (Vd: 5 thùng + 7 viên = 5T+7V):
+ TV: dòng viết tắt (Vd: 5T+7V)
Public Function THUNG(TV)
A = Len(TV)
If Right(UCase(TV), 1) = "T" And A = 2 Then
THUNG = Left(TV, 1)
ElseIf Right(UCase(TV), 1) = "T" And A = 3 Then
THUNG = Left(TV, 2)
ElseIf Right(UCase(TV), 1) = "T" And A = 4 Then
THUNG = Left(TV, 3)
ElseIf Right(UCase(TV), 1) = "T" And A = 5 Then
THUNG = Left(TV, 4)
ElseIf Right(UCase(TV), 1) = "V" And A = 5 And Mid(UCase(TV), 2, 1) = "T" Then
THUNG = Left(TV, 1)
ElseIf Right(UCase(TV), 1) = "V" And A = 6 And Mid(UCase(TV), 2, 1) = "T" Then
THUNG = Left(TV, 1)
ElseIf Right(UCase(TV), 1) = "V" And A = 6 And Mid(UCase(TV), 3, 1) = "T" Then
THUNG = Left(TV, 2)
ElseIf Right(UCase(TV), 1) = "V" And A = 7 And Mid(UCase(TV), 3, 1) = "T" Then
THUNG = Left(TV, 2)
ElseIf Right(UCase(TV), 1) = "V" And A = 7 And Mid(UCase(TV), 4, 1) = "T" Then
THUNG = Left(TV, 3)
ElseIf Right(UCase(TV), 1) = "V" And A = 8 Then
THUNG = Left(TV, 3)
Else
THUNG = 0
End If
End Function

Public Function VIEN(TV)
A = Len(TV)
If Right(UCase(TV), 1) = "V" And A = 2 Then
VIEN = Left(TV, 1)
ElseIf Right(UCase(TV), 1) = "V" And A = 3 Then
VIEN = Left(TV, 2)
ElseIf Right(UCase(TV), 1) = "V" And A = 4 Then
VIEN = Left(TV, 3)
ElseIf Right(UCase(TV), 1) = "V" And A = 5 And Mid(UCase(TV), 2, 1) = "T" Then
VIEN = Mid(TV, 4, 1)
ElseIf Right(UCase(TV), 1) = "V" And A = 5 And Mid(UCase(TV), 2, 1) <> "T" Then
VIEN = Left(TV, 4)
ElseIf Right(UCase(TV), 1) = "V" And A = 6 And Mid(UCase(TV), 2, 1) = "T" Then
VIEN = Mid(TV, 4, 2)
ElseIf Right(UCase(TV), 1) = "V" And A = 6 And Mid(UCase(TV), 3, 1) = "T" Then
VIEN = Mid(TV, 5, 1)
ElseIf Right(UCase(TV), 1) = "V" And A = 7 And Mid(UCase(TV), 3, 1) = "T" Then
VIEN = Mid(TV, 5, 2)
ElseIf Right(UCase(TV), 1) = "V" And A = 7 And Mid(UCase(TV), 4, 1) = "T" Then
VIEN = Mid(TV, 6, 1)
ElseIf Right(UCase(TV), 1) = "V" And A = 8 Then
VIEN = Mid(TV, 6, 2)
Else
VIEN = 0
End If
End Function

Dù là "tác giả" nhưng tôi cảm thấy nó dài dài làm sao đấy. Mang ra diễn đàn, mong các bác mổ xẻ nó và nếu được thì rút gọn dùm.
Thiết nghĩ chuyện này không chỉ tôi mà những ai từng kinh doanh gạch men rất cần đến, vì khi người ta mua thì nói là mua mét (m2), nhưng vào kho thì chỉ đếm toàn là thùng và viên lẻ... Giúp tôi cũng là giúp cho cả làng vậy.
Đa tạ.
 
BNTT đã viết:
Do yêu cầu công việc, khi nhập xuất gạch, tôi phải làm những công đoạn là tính số thùng và số viên dựa theo số m2 (hoặc số thùng, tùy hãng sản xuất quy định). Nên tôi đã làm ra những công thức sau để tính.

Dù là "tác giả" nhưng tôi cảm thấy nó dài dài làm sao đấy. Mang ra diễn đàn, mong các bác mổ xẻ nó và nếu được thì rút gọn dùm.
Thiết nghĩ chuyện này không chỉ tôi mà những ai từng kinh doanh gạch men rất cần đến, vì khi người ta mua thì nói là mua mét (m2), nhưng vào kho thì chỉ đếm toàn là thùng và viên lẻ... Giúp tôi cũng là giúp cho cả làng vậy.
Đa tạ.

Bác phải nói rõ hơn về bài toán này, chứ nói sơ sơ rồi đưa ra cái UF thì . . khó quá.

Bác nói càng rõ càng tốt về bài toán này nhé.

Thân!
 
Upvote 0
Phải rõ hơn nữa à?
Này nhé:

1. Một thùng gạch HG45073 của WhiteHorse có kích thước là 45x45 (cm), một thùng có 6 viên, số lượng tính theo m2 của 1 viên sẽ là 0.2025 m2 và của 1 thùng sẽ là 1.215m2.
Hiện khách hàng muốn mua 50m2, vậy tui sẽ phải xuất ra bao nhiêu thùng và bao nhiêu viên? Theo hàm tự soạn của tui:
Thungvien(SOLUONG, DVT, KT, TV)
= Thungvien(50,m2,45x45,6)
sẽ cho đáp số là 41 thùng và 1 viên lẻ.

2. Trong kho tui còn tồn (là do đếm) 107 thùng và 4 viên lẻ. Vậy tui đang có bao nhiêu mét gạch?
Dùng MET(Sothung, Sovien, Sovientrong1thung, Kichthuoc)
= MET(107, 4, 6, 45x45)
cho ra đáp số là 130,815 m2.

Dĩ nhiên ba cái chuyện này thì dùng máy tính điện tử là ra hết, tuy nhiên tui soạn hàm cho PC nó tự tính á mà. Ý tui khi post ba cái lên là để mong các bác xem giúp có cách nào rút gọn nó lại không thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
BNTT đã viết:
Phải rõ hơn nữa à?
Này nhé:

1. Một thùng gạch HG45073 của WhiteHorse có kích thước là 45x45 (cm), một thùng có 6 viên, số lượng tính theo m2 của 1 viên sẽ là 0.2025 m2 và của 1 thùng sẽ là 1.215m2.
Hiện khách hàng muốn mua 50m2, vậy tui sẽ phải xuất ra bao nhiêu thùng và bao nhiêu viên? Theo hàm tự soạn của tui:
Thungvien(SOLUONG, DVT, KT, TV)
= Thungvien(50,m2,45x45,6)
sẽ cho đáp số là 41 thùng và 1 viên lẻ.

2. Trong kho tui còn tồn (là do đếm) 107 thùng và 4 viên lẻ. Vậy tui đang có bao nhiêu mét gạch?
Dùng MET(Sothung, Sovien, Sovientrong1thung, Kichthuoc)
= MET(107, 4, 6, 45x45)
cho ra đáp số là 103,41 m2.

Dĩ nhiên ba cái chuyện này thì dùng máy tính điện tử là ra hết, tuy nhiên tui soạn hàm cho PC nó tự tính á mà. Ý tui khi post ba cái lên là để mong các bác xem giúp có cách nào rút gọn nó lại không thôi.


Chiều cao (bề dày) 1 viên bao nhiêu vậy bác ???

Thân!
 
Upvote 0
Nghề của tui không quan tâm đến bề dày đâu. Chỉ cần kích thước, đơn vị tính, số viên trong 1 thùng, là đủ rồi. Kinh doanh gạch men lát nền nhà mà bác.
 
Upvote 0
BNTT đã viết:
Nghề của tui không quan tâm đến bề dày đâu. Chỉ cần kích thước, đơn vị tính, số viên trong 1 thùng, là đủ rồi. Kinh doanh gạch men lát nền nhà mà bác.

Quên, m2 mà cứ nhầm sang m3

Đúng là . . . hoa mắt.

Để nghiên cứu xem sao.

Thân!
 
Upvote 0
Hàm thứ hai có thể rút lại như sau:

Mã:
[b]
Public Function DIENTICH(A)[/b]
 Dim B As String
 
 B = Len(A)  [COLOR="Blue"][B][I]'??? [/I][/B][/COLOR]
 Select Case B
 Case 3, 4
    DIENTICH = Left(A, 1) * Right(A, B - 2)
 Case 5, 7
    DIENTICH = Left(A, B - 3) * Right(A, 2)
 Case Else
    DIENTICH = Left(A, 4) * Right(A, 4)
 End Select
 DIENTICH = DIENTICH * 10 ^ (-4)[b]
End Function[/b]

Hàm thứ nhất có thể như vầy:
Mã:
[b]
Public Function Thungvien(SOLUONG, DVT, KThuoc, QCach)[/b]
 Dim XThung As Double
 
 A = SOLUONG / DIENTICH(KThuoc)
 If UCase$(Left(DVT, 2)) = "TH" Then A = SOLUONG * QCach 'DVT: thùng
 
 
 XThung = Int(A \ QCach)
 XVien = A - XThung * QCach
 If XVien - Int(A - XThung * QCach) > 0.5 Then
    XVien = Int(A - XThung * QCach) + 1
 Else
    XVien = Int(A - XThung * QCach)
 End If
 Dim S1 As String, S2 As String
 If XThung > 0 Then S1 = " Thùng &"
 If XVien > 0 Then S2 = " viên."
 
 Thungvien = XThung & S1 & XVien & S2[b]
End Function[/b]


Dễ đọc & kiểm soát lỗi thôi, chứ nhanh chậm hơn kém nhau thì khoan nghỉ tới, nha!
 
Lần chỉnh sửa cuối:
Upvote 0
Ua... cái này dùng INT, MOD, ROUNDUP cũng ra mà ta...
ANH TUẤN
 
Upvote 0
BNTT đã viết:
Public Function Thungvien(SOLUONG, DVT, KT, TV)
If DVT = "m2" Then
A = SOLUONG / DIENTICH(KT)
ElseIf Left(DVT, 2) = "th" Then 'DVT = thùng
A = SOLUONG * TV
End If
XTHUNG = Int(A \ TV)
XVIEN = A - XTHUNG * TV
If XVIEN - Int(A - XTHUNG * TV) > 0.5 Then
'gạch thì chắc chắn là phải tính nguyên viên
XVIEN = Int(A - XTHUNG * TV) + 1
Else
XVIEN = Int(A - XTHUNG * TV)
End If
If XTHUNG = 0 And XVIEN <> 0 Then
Thungvien = XVIEN & " viên"
ElseIf XTHUNG <> 0 And XVIEN = 0 Then
Thungvien = XTHUNG & " thùng"
ElseIf XTHUNG = 0 And XVIEN = 0 Then
Thungvien = ""
Else
Thungvien = XTHUNG & " thùng + " & XVIEN & " viên"
End If
End Function


Bác xem nhé :
PHP:
Public Function ThungVien(Vien As Integer, Thung As Integer, SMet As Integer) As String
    Dim SoThung As Single
    Dim SoVien As Single
    
    SoThung = Int(SMet / ((Vien * Vien / 10000) * Thung))
    SoVien = WorksheetFunction.RoundUp((SMet - ((Vien * Vien / 10000) * Thung) * SoThung) / (Vien * Vien / 10000), 0)
    
    ThungVien = SoThung & " Thung" & " " & SoVien & " Vien"
End Function

VD :
Một thùng gạch HG45073 của WhiteHorse có kích thước là 45x45 (cm), một thùng có 6 viên, số lượng tính theo m2 của 1 viên sẽ là 0.2025 m2 và của 1 thùng sẽ là 1.215m2.
Hiện khách hàng muốn mua 50m2, vậy tui sẽ phải xuất ra bao nhiêu thùng và bao nhiêu viên? Theo hàm tự soạn của tui:

=ThungVien(45;6;50) = 41 thùng 1 viên

Thân!
 
Upvote 0
Quan trọng là làm làm sao á chứ... Dzậy mới mang ra 4R hỏi nè.
 
Upvote 0
Còn hàm dưới thì tính sau vậy.
(Đêm post tiếp)

Thân!
 
Upvote 0
MrOkeBap ơi, bác siêu ghê, quá ư là ngắn gọn.
Tuy nhiên, đó là gạch vuông, còn gạch chữ nhật thì sao? (20x25, 30x60, 15x45, v.v...)
 
Upvote 0
BNTT đã viết:
MrOkeBap ơi, bác siêu ghê, quá ư là ngắn gọn.
Tuy nhiên, đó là gạch vuông, còn gạch chữ nhật thì sao? (20x25, 30x60, 15x45, v.v...)
Ủa, còn gạch CN nữa hả +-+-+-++-+-+-+

Thôi thì thêm 1 tham số nữa :

= ThungVien(Dai;Rong;SoVienTrongThung;SoMetYeuCau)

PHP:
Public Function ThungVien(Dai As Integer, Rong As Integer, Thung As Integer, SMet As Integer) As String
    Dim SoThung As Single
    Dim SoVien As Single
    SoThung = Int(SMet / ((Dai * Rong / 10000) * Thung))
    SoVien = WorksheetFunction.RoundUp((SMet - ((Dai * Rong / 10000) * Thung) * SoThung) / (Dai * Rong / 10000), 0)
    ThungVien = SoThung & " Thung" & " " & SoVien & " Vien"
End Function

Cú pháp = ThungVien(45;45;6;50) = 41 thùng 1 viên
Be be be !!! Mệt quá!!!
 
Upvote 0
Còn trường hợp này nữa các bác à. Thông thường, người ta bán gạch 30x30 theo kiểu 11 viên = 1m2 (tui cũng vậy %#^#$), mặc dù như vậy là ăn gian vì 11 viên chỉ = 0,99 m2 thôi, bán 100m2 theo kiểu đó thì ăn gian của khách hàng hết 1m2, vì 100 x 11 x 0,3 x 0,3 = 99m2, vậy còn 1m2 thiếu đó thì lót thảm hén... Nói vui vậy thôi chứ cũng tùy người mà mình bán, cho chiến hữu thì khác chứ.
Quay lại VBA, vấn đề là như thế này:
Có ai đó mua 100 mét gạch 30x30. Nếu đó là gạch Đồng Tâm thì dễ lắm, họ đóng sẵn 11 viên trong 1 thùng. Nhưng WhiteHorse chẳng hạn thì lại đóng 15 viên 1 thùng. Mình phải làm sao cho máy hiểu rằng:
Tui xuất 100x11 = 1.100 viên gạch, tính tiền cho khách thì tính = 100m2, nhưng trừ hàng trong xuất nhập tồn thì làm ơn chỉ trừ 99m2 thôi (99 mới là con số đúng).
Hoặc lẻ hơn, ai đó mua 62 m2, xuất ra là 62x11 = 682 viên, tính tiền = 62 m2, nhưng tính tồn kho thì trừ 682x0,09 = 61,38m2 thôi.
Các bác hiểu chứ.
Việc này mà nói ra thì thật sự kỳ lắm, quê độ nữa, nhưng thực tế thì phải làm sao mà dạy cho máy nó "ăn gian" như mình?
 
Upvote 0
BNTT đã viết:
2. Trong kho tui còn tồn (là do đếm) 107 thùng và 4 viên lẻ. Vậy tui đang có bao nhiêu mét gạch?
Dùng MET(Sothung, Sovien, Sovientrong1thung, Kichthuoc)
= MET(107, 4, 6, 45x45)
cho ra đáp số là 103,41 m2.
Bác xem lại kết quả xem, KQ đúng là 130,815m2.
bác xem lại nhé!!!

Thân!
 
Upvote 0
Haha, MrBapOk mệt rồi. Bác ThuNghi có đó không giúp đỡ đi...
Công thức của bác chưa excel lắm. Ví dụ:
thungvien(20,25,28,1) = 0 thùng 20 viên
(gạch men 20x25 Bạch Mã đóng 28 viên/thùng, 1m2 = 20 viên)

Ai mà lại nói là 0 thùng bác ơi!!
 
Upvote 0
Mr Okebab đã viết:
Bác xem lại kết quả xem, KQ đúng là 130,815m2.
bác xem lại nhé!!!

Thân!

Sorry, sorry, vô cùng sorry.
Tại tui đâu có cho chạy hàm đâu, mà dùng Calculator bấm rồi gõ vào... Chính xác là 130,815. Cảm ơn bác.
 
Upvote 0
BNTT đã viết:
Công thức của bác chưa excel lắm. Ví dụ:
thungvien(20,25,28,1) = 0 thùng 20 viên

(gạch men 20x25 Bạch Mã đóng 28 viên/thùng, 1m2 = 20 viên)

Ai mà lại nói là 0 thùng bác ơi!!

Cái vụ nì thì bác cũng biết mà, 0 thùng thì đừng + "thung" vô kết quả, vien cũng vậy thôi, if then else bình thường thôi mà.
 
Upvote 0
SA_DQ đã viết:
Mã:
Hàm thứ nhất có thể như vầy:[code][B]
Public Function Thungvien(SOLUONG, DVT, KThuoc, QCach)[/B]
 Dim XThung As Double
 
 A = SOLUONG / DIENTICH(KThuoc)
 If UCase$(Left(DVT, 2)) = "TH" Then A = SOLUONG * QCach 'DVT: thùng
 
 
 XThung = Int(A \ QCach)
 XVien = A - XThung * QCach
 If XVien - Int(A - XThung * QCach) > 0.5 Then
    XVien = Int(A - XThung * QCach) + 1
 Else
    XVien = Int(A - XThung * QCach)
 End If
 Dim S1 As String, S2 As String
 If XThung > 0 Then S1 = " Thùng &"
 If XVien > 0 Then S2 = " viên."
 
 Thungvien = XThung & S1 & XVien & S2[B]
End Function[/B]

Dễ đọc & kiểm soát lỗi thôi, chứ nhanh chậm hơn kém nhau thì khoan nghỉ tới, nha!
Cũng giống như đã hỏi bác MrBapOk, trường hợp chẵn thùng (0 viên lẻ) và không đủ 1 thùng (0 thùng), chưa ổn lắm bác SA_DQ à. Nhưng dù sao, bác vẫn siêu hơn em.
 
Upvote 0
Đừng cười tui, không biết thì nói là không biết thôi chứ nói làm sao? Người ta dở người ta mới vào đây học hỏi chứ... Hic
Nhưng mà đã vậy thì các bác nãy giờ giúp tui đó, cho tui biết các bác là ai được không? Đặng mà cảm ơn cho phải phép thôi mà.
 
Upvote 0
Tôi cũng ko biết nữa... nhưng mà dám khẳng định rằng cả 3 người giúp bạn là những đại cao thủ thuộc hàng thượng thừa trên GPE này đó... chính vì thế mà khi nghe câu "nhưng dù sao, bác cũng siêu hơn em" làm tôi.. giật cả mình luôn... Hic.. hic... ko phải chê bạn dở đâu nha... đừng hiểu lầm... mà là... Nói sao mới đúng đây ta...
Ah.. quên! Ở đây cảm ơn đơn giản lắm... THANKS phát là xong... hi... hi..
ANH TUẤN
 
Upvote 0
Tui nói bác đừng cười tui chứ tui đâu có nói bác chê tui dở đâu, hai chuyện khác nhau mà. Nhưng mà đầu tháng 11 tui có chuyện đi Saigon đây, muốn chiêm ngưỡng dung nhan của các đại cao thủ đó thì phải làm sao? Ước gì... nhỉ...
 
Upvote 0
Rất đơn giản, anh có thể gọi điện thoại là xong hết. Em đề nghị anh gọi cha Bắp hoặc tùy anh...ai cũng được, nếu anh muốn.
 
Upvote 0
BNTT đã viết:
Haha, MrBapOk mệt rồi. Bác ThuNghi có đó không giúp đỡ đi...
Công thức của bác chưa excel lắm. Ví dụ:
thungvien(20,25,28,1) = 0 thùng 20 viên
(gạch men 20x25 Bạch Mã đóng 28 viên/thùng, 1m2 = 20 viên)

Ai mà lại nói là 0 thùng bác ơi!!

Bác sửa lại nhé .

PHP:
Public Function ThungVien(Dai As Integer, Rong As Integer, Thung As Integer, SMet As Integer) As String
    Dim SoThung As Single
    Dim SoVien As Single
    SoThung = Int(SMet / ((Dai * Rong / 10000) * Thung))
    SoVien = WorksheetFunction.RoundUp((SMet - ((Dai * Rong / 10000) * Thung) * SoThung) / (Dai * Rong / 10000), 0)
    
    ThungVien = Trim$(IIf(SoThung > 0, SoThung & " Thung", "") & IIf(SoVien > 0, " " & SoVien & " Vien", ""))
End Function

Thân!
 
Upvote 0
BNTT đã viết:
2. Trong kho tui còn tồn (là do đếm) 107 thùng và 4 viên lẻ. Vậy tui đang có bao nhiêu mét gạch?
Dùng MET(Sothung, Sovien, Sovientrong1thung, Kichthuoc)
= MET(107, 4, 6, 45x45)
cho ra đáp số là 130,815 m2.

Bác tham khảo nhé :
PHP:
Public Function SMET(SThung As Integer, SVienThung As Integer, SVien As Integer, Dai As Single, Rong As Single) As Single
    SMET = ((SThung * SVienThung + SVien) * Dai * Rong) / 10000
End Function

=Smet(107;6;4;45;45) = 130,815m2


Thân!
 
Upvote 0
BNTT đã viết:
Còn trường hợp này nữa các bác à. Thông thường, người ta bán gạch 30x30 theo kiểu 11 viên = 1m2 (tui cũng vậy %#^#$), mặc dù như vậy là ăn gian vì 11 viên chỉ = 0,99 m2 thôi, bán 100m2 theo kiểu đó thì ăn gian của khách hàng hết 1m2, vì 100 x 11 x 0,3 x 0,3 = 99m2, vậy còn 1m2 thiếu đó thì lót thảm hén... Nói vui vậy thôi chứ cũng tùy người mà mình bán, cho chiến hữu thì khác chứ.
Quay lại VBA, vấn đề là như thế này:
Có ai đó mua 100 mét gạch 30x30. Nếu đó là gạch Đồng Tâm thì dễ lắm, họ đóng sẵn 11 viên trong 1 thùng. Nhưng WhiteHorse chẳng hạn thì lại đóng 15 viên 1 thùng. Mình phải làm sao cho máy hiểu rằng:
Tui xuất 100x11 = 1.100 viên gạch, tính tiền cho khách thì tính = 100m2, nhưng trừ hàng trong xuất nhập tồn thì làm ơn chỉ trừ 99m2 thôi (99 mới là con số đúng).
Hoặc lẻ hơn, ai đó mua 62 m2, xuất ra là 62x11 = 682 viên, tính tiền = 62 m2, nhưng tính tồn kho thì trừ 682x0,09 = 61,38m2 thôi.
Các bác hiểu chứ.
Việc này mà nói ra thì thật sự kỳ lắm, quê độ nữa, nhưng thực tế thì phải làm sao mà dạy cho máy nó "ăn gian" như mình?

Cái vụ này cần phân tích rõ hơn. Còn không thì cứ 99% mà nhân vào thôi bác ạ.

Làm vừa thôi để tụi em còn . . . . xây nhà nhé.

Thân!
 
Upvote 0
Được không bác gì gì ơi ??? Để em còn lên ĐL mua gạch chứ ???

Thân!
 
Upvote 0
Mr Okebab đã viết:
Được không bác gì gì ơi ??? Để em còn lên ĐL mua gạch chứ ???

Thân!

Được quá đi chứ lị... Tôi đã nói rồi mà, với chiến hữu bao giờ cũng có giá ưu đãi và thời gian cho nợ là... (số 8 nằm ngang viết làm sao nhỉ?).
 
Upvote 0
Em mới làm kế toán bán hàng bên gạch men, vụ quy đổi này khá nhức đầu, bác BNTT có thể cho em xin chương trình này được ko?.
 
Upvote 0

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

Back
Top Bottom