Hàm tự tạo tổng hợp xuất nhập tồn theo đơn vị là chai & ly rượu

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

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia
8/6/06
Bài viết
14,576
Được thích
22,898
Nghề nghiệp
U80
PHP:
 Option Explicit
Function ChaiVaLi(TonDau As String, Nhap As String, Xuat As Range) As String
 Const Ch As String = "CHAI":             Const Li As String = "LY"
 Const KT As String = " ":                Dim Cls As Range
 Dim SoChai As Double, SoLi As Double, VTr As Byte
Tòn:
 VTr = InStr(UCase$(TonDau), Ch)
 If VTr > 0 Then
   SoChai = SoChai + CByte(Trim(Left(TonDau, VTr - 1)))
   TonDau = Mid(TonDau, VTr + 4, 9)
 End If
 VTr = InStr(UCase$(TonDau), Li)
 If VTr > 0 Then
   SoLi = SoLi + CByte(Trim(Left(TonDau, VTr - 1)))
 End If
Nhap:
 VTr = InStr(UCase$(Nhap), Ch)
 If VTr > 0 Then
   SoChai = SoChai + CByte(Trim(Left(Nhap, VTr - 1)))
   Nhap = Mid(Nhap, VTr + 4, 9)
 End If
 VTr = InStr(UCase$(Nhap), Li)
 If VTr > 0 Then
   SoLi = SoLi + CByte(Trim(Left(Nhap, VTr - 1)))
 End If
Xuát:
 For Each Cls In Xuat
   VTr = InStr(UCase$(Cls.Value), Ch)
   If VTr > 0 Then
      SoChai = SoChai - CByte(Trim(Left(Cls.Value, VTr - 1)))
   End If
   VTr = InStr(UCase$(Cls.Value), Li)
   If VTr > 0 Then
      SoLi = SoLi - CByte(Trim(Left(Cls.Value, VTr - 1)))
   End If
   If SoLi < 1 Then
      SoChai = SoChai - 1
      SoLi = SoLi + 5
   End If
 Next Cls
 ChaiVaLi = CStr(SoChai) & KT & Ch & IIf(SoLi = 0, "", KT & CStr(SoLi) & KT & Li)
End Function
 

File đính kèm

Bài này cũng "ngộ" nhưng bị vô thùng rác mất rồi
Tham gia một hàm "xi- ma- chao"
Mã:
Public Function Ton(Nhap, Xuat)
    Dim Cll, I, KqX, KqN, Kq
        For Each Cll In Nhap
            Cll = UCase(Cll)
                If InStr(1, Cll, "LY") Then
                    Cll = Evaluate(Replace(Replace(Cll, "CHAI", "*5+"), "LY", ""))
                Else
                    Cll = Evaluate(Replace(Cll, "CHAI", "*5"))
                End If
            KqN = KqN + Cll
        Next Cll
            For I = 1 To 4
                KqX = KqX + IIf(I Mod 2 = 0, Val(Trim(Left(Xuat(I), InStr(1, Xuat(I), " ")))) * 5, Val(Trim(Left(Xuat(I), InStr(1, Xuat(I), " ")))))
            Next
     Kq = KqN - KqX
     Kq = IIf(Kq Mod 5 = 0, Int(Kq / 5) & " Chai", Int(Kq / 5) & " Chai " & Kq Mod 5 & " ly")
  Ton = Kq
End Function
Có chơi ăn gian khai báo tồn với nhập thành một cho đỡ cực
To Thầy Sa: chai "dụ" của Thầy bữa hổm còn tồn có một chút xíu hè, hôm nào Thầy nhập cho một chai nhé
 

File đính kèm

Upvote 0
/-(ình như rượu của cò già là rượu Thạch sanh thì fải?

Tồn|Nhập|Li Bán|Chai bán|Li xuất|Chai Xuất|Cò Già tính:| Ghi chú
3 chai 2 ly|1 ly||2 Chai |4 ly ||0 chai 4 ly| OK!
2 chai 3 ly|4 ly||1 Chai |4 ly |01 chai 1 ly |0 chai 3 ly| !!
1 chai 3 ly|5 ly|| |5 ly |1 chai 1 ly |0 chai 3 ly| !!
 
Upvote 0
Tồn|Nhập|Li Bán|Chai bán|Li xuất|Chai Xuất|Cò Già tính:| Ghi chú
3 chai 2 ly|1 ly||2 Chai |4 ly ||0 chai 4 ly| OK!
2 chai 3 ly|4 ly||1 Chai |4 ly |01 chai 1 ly |0 chai 3 ly| !!
1 chai 3 ly|5 ly|| |5 ly |1 chai 1 ly |0 chai 3 ly| !!
Híc, Thầy ơi:
Phần XUẤT ==> BÁN & NỘI BỘ
BÁN (NỘI BỘ) ==> LY & CHAI (riêng biệt)==> sẽ không có trường hợp: 1 Chai 2 ly, 7 chai 1 ly..vv..xảy ra đâu Thầy
Chính ra ở phần Xuất chủ topic ghi : 1 ly, 3 Chai, 4 ly.....là thừa, đáng lẽ chỉ được ghi số thôi vì tiêu đề đã ghi rất rõ đơn vị tính rồi
Nếu có cách tính để thành "dụ" Thạch sanh chắc đã lắm hé Thầy
 
Upvote 0
Web KT

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

Back
Top Bottom