Tính GT từ định mức

Liên hệ QC

ThuNghi

Hãy cho rồi sẽ nhận!
Thành viên đã mất
Tham gia
16/8/06
Bài viết
3,808
Được thích
4,449
Tôi file DM như sau:
1/ Bánh in:(/cái)
- Bot : 5
- Duong : 2
- phugia: 1

2/ Bánh Snack:(/gói)
- Bot : 3
- Duong : 1
- phugia: 1
- Dau : 0.5
3/....

Vậy khi tôi sx
- 05 bánh in
- 03 bánh Snack

Các bạn tạo giúp bảng vật tư sd (Bot, duong...)
Cụ thể khi tôi nhập bánh in tại A1 thì B1...Bi hiện các NVL
Next
bánh snack tại A(1+i) thì B...B hiện các NVL
....

Hay là các bạn nghỉ thêm cách nhập liệu.
Trước nay mình chỉ làm như sau:
Tại A2-An : Tên SP (bánh...)
Tại B2-Bn : SL SP (bánh...)
Tại C1-xxxx1 : Tên NVL và DM
Nhưng như vậy chỉ thích hợp với những SP có NVL gần giống và số lọai NVL ít (<10), chớ nhiều thì bảng này lớn quá, không quan sát hết

Xin cám ơn, cố gắng ít sd VBA.
 
Mình lại rất thích sử dụng VBA
Nếu bạn thích thì sử dụng code sau (còn không thích ----> tham khảo)
Mã:
Option Explicit
Public Sub LayVL()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim Mahieu, i1 As Integer, i2 As Integer
Dim baseSheet As Worksheet, MySheet As Worksheet
Set baseSheet = Sheets("Data")
Set MySheet = ActiveWorkbook.ActiveSheet
Mahieu = ActiveCell.Value
baseSheet.Activate
Dim row1 As Integer, row2 As Integer
row1 = baseSheet.UsedRange.Row
row2 = baseSheet.UsedRange.Row - 1 + baseSheet.UsedRange.Rows.Count
For i1 = row1 To row2
    If LCase(baseSheet.Cells(i1, "B")) = LCase(Mahieu) Then Exit For
Next
    
i2 = i1
Do
     i2 = i2 + 1
Loop Until Not IsEmpty(baseSheet.Cells(i2, "A")) Or i2 > row2
baseSheet.Range("B" & i1 + 1 & ":C" & i2 - 1).Select
Selection.Copy
MySheet.Activate
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
 

File đính kèm

Cám ơn nvson rất nhiều, vấn đề là chỉ cần vậy thôi tức là khi nhập tp thì sẽ cho ra NVL và định mức, quá hay. Bạn diễn giải chi tiết hộ Sub đó nhé, và triển khai thêm worksheet_change khi nhập sl TP thì hiện bảng NVL và SL NVL*SL sp
Cám ơn, vì mình chưa đủ sức để triển khai Sub trên
 
Tôi vận dụng Sub của bạn nvson để lấy VL theo hàng ngang mà không được, Sh GT2, nhờ bạn chỉ giúp. Cám ơn
 
Lần chỉnh sửa cuối:
Nếu bạn muốn giải theo hàng ngang thì sử dụng code sau:
Mã:
Option Explicit
Public Sub LayVL_3()
Dim i As Long, j As Long, row1 As Long, row2 As Long, row3 As Long
Dim rngData As Range
Dim baseSheet As Worksheet
Dim tenBanh
tenBanh = ActiveCell.Value
Set baseSheet = Sheets("Data")
row1 = WorksheetFunction.Match(tenBanh, baseSheet.Range("B:B"), 0)
row2 = WorksheetFunction.Min(baseSheet.Cells(row1, "A").End(xlDown).Row - 1, _
baseSheet.UsedRange.Rows.Count + baseSheet.UsedRange.Row - 1)
Set rngData = baseSheet.Range("B" & row1 + 1, "C" & row2)
row3 = 0
For i = 1 To rngData.Rows.Count
    For j = 1 To rngData.Columns.Count
        row3 = row3 + 1
        ActiveCell.Offset(0, row3).Value = rngData.Cells(i, j)
    Next j
Next i
End Sub

(Mình băn khoăn hỏi tại sao bạn không làm 1 hàng ở trên là tên của tất cả vật liệu làm bánh. Từ những dòng sau thì ứng với mỗi loại bánh có vật liệu gì thì để vào cột đó....)
 
to nvson: Trong sheet data của tôi có thêm cột là số lượng, đơn giá.. và muốn trong sheet kết quả tôi cũng muốn lấy những số liệu đó mà như anh đã làm với cột C. Vì cái này liên quan đến định mức mà tôi gặp. Mong anh chỉ giáo
 
Bạn thay đổi dòng lệnh này nhé (thay chữ C đậm đỏ bằng tên cột khác):
Mã:
baseSheet.Range("B" & i1 + 1 & ":[B][COLOR=red]C[/COLOR][/B]" & i2 - 1).Select
 
Web KT

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

Back
Top Bottom