Lấy đinh mức vật tư!

  • Thread starter Thread starter ThuNghi
  • Ngày gửi Ngày gửi
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
Kỳ trước anh NVSON có giúp mình lấy định mức theo hàng ngang và cột dọc theo từng mã hàng.
Nhờ các bạn bổ sung tiếp, làm sao lấy tên VT duy nhất của bảng định mức (Data2) theo hàng ngang của tất cả mã hàng theo Sh BKDinhMuc2.
vd:
mã hàng 01: VT A.....VT B....VT C
mã hàng 02: VT A.....VT B....VT D
->
.................VT A.....VT B....VT C....VTD
mã hàng 01:
mã hàng 02:
Nếu có thể cho thêm công thức nào kiểm tra là đã lấy đúng và đủ VT cần.
Xin cám ơn!
 

File đính kèm

Các bạn giúp hộ tôi với, hiện tôi làm theo PP thủ công là từ Data dùng Advance Filter theo những mã hàng cần lấy =danh mục vật tư cần. Copy danh mục này sang sh khác và dùng Advance Filter - unique record only => danh mục vật tư cần duy nhất, và cut từng cái lên dòng trên (sh dinhmuc) khi nào hết thôi.
Làm như vậy quá thủ công. mà trình độ VBA của tôi chỉ cỡ làm macro thôi nên không lường hết tình huống.
Xin cám ơn!
 
Upvote 0
Chào ThuNgi,

Trong sở mình làm máy không có Winrar, bạn có thể post lại cái file mẫu trong định dạng zip để mình coi nhé.

Để giải đáp nhanh chóng vấn đề cũa bạn, bạn cho mình biết cụ thể thông tin bạn muốn tìm luôn.

Mến chào
 
Upvote 0
Bổ sung file zip, tất cả yêu cầu đã nhập trong sh BKDinhMuc2
Xin cám ơn!
 

File đính kèm

Upvote 0
Chào bạn,

Làm bằng hàm XL functions thì hơi rắc rối. Dùng VBA thì ngắn gọn hơn. Bạn copy cái code sau đây vô 1 module trong VBA editor nhá.

--------------------------------
Sub ListVT()
Dim h As Integer
Dim c As Integer
Range("D65536").End(xlUp)(5, -1) = "Mahang"
Range("D65536").End(xlUp)(5, 0) = "Tenhang"
Range("D65536").End(xlUp)(5, 1) = "Tenvt"
Range("E65536").End(xlUp)(5, 1) = "Dinhmuc"
For h = 1 To Range("A4", Range("A4").End(xlDown)).Rows.Count Step 1
For c = 4 To Range("D4", Range("D4").End(xlToRight)).Columns.Count Step 1
If Cells(h + 3, c) > 0 And Not IsEmpty(Cells(2, c)) Then
Range("D65536").End(xlUp)(2, 1) = Cells(2, c).Value
Range("E65536").End(xlUp)(2, 1) = Cells(h + 3, c).Value
Range("D65536").End(xlUp)(1, -1) = Cells(h + 3, 1)
Range("D65536").End(xlUp)(1, 0) = Cells(h + 3, 2)
End If
Next c
Next h
End Sub
-----------------------------------

Sau khi chạy macro trên bảng thông tin VT được liệt kê bên dưới sheet BKDinhmuc2.

Mến chào
 
Upvote 0
Cám ơn nhiều. Có gắn Code vào nhưng chưa chạy được
Bạn cụ thể vào file luôn đi.
 
Upvote 0
Sau khi mày mò tôi thử dùng VBA (phần này chủ yếu học từ anh NVSON) để làm bài tính giá thành từ định mức vật tư.

Sub LayVT1()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'tham khao NVSON
Dim DataSheet As Worksheet
Sheets("bkdm").Select
Range("KetQuaLoc2").Select
Selection.ClearContents

Set DataSheet = Sheets("Data")
DataSheet.Activate
'xoa extract cu
Columns("G:J").Select
Selection.ClearContents
'tao ra ketqualoc
Range("BKDinhMuc").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Sheets("bkdm").Range("VungLoc"), CopyToRange:=Range("KetQuaLoc"), Unique:=False

With ActiveWorkbook
.Names("_FilterDatabase").Delete
.Names("Extract").Delete
End With
'tao ra ketqualoc2
Range("VungLoc1").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
"KetQuaLoc2"), Unique:=True

Range("KetQuaLoc").Select
Selection.ClearContents


Sheets("bkdm").Select
Sheets("bkdm").Names("Extract").Delete
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub Sub LayVT2()
'gan vao bang ke
Dim so_record As Integer
Dim so_mahang As Integer
Sheets("bkdm").Select
Range("D1:AQ11").Select
Selection.ClearContents
so_record = WorksheetFunction.CountA(Range("ketqualoc2")) - 1
so_mahang = WorksheetFunction.CountA(Range("vungloc")) - 1

For i = 1 To so_record

Cells(1, 2 * i + 2).Value = Cells(24 + i, 4).Value
Cells(2, 2 * i + 2).Value = "Dinh Muc"
Cells(2, 2 * i + 3).Value = "SLVatTu"

For k = 0 To so_mahang - 1
Cells(3 + k, 2 * i + 2).Value = "=SUMPRODUCT((MAHANG=RC1)*(TENVT=R1C)*DINHMUC)"
Cells(3 + k, 2 * i + 3).Value = "=RC3*RC[-1]"
Next k
'dong tong
Cells(3 + so_mahang, 2 * i + 2).Value = "=SUM(R3C:R[-1]C)"
Cells(3 + so_mahang, 2 * i + 3).Value = "=SUM(R3C:R[-1]C)"

Next i

Range("d0" & so_mahang + 3 & ":AQ0" & so_mahang + 3).Select
Selection.Font.Bold = True
End Sub
Nhờ các anh chị xem giúp và chỉnh sửa lại các Code trên, với mục đích tính đúng và đủ giá thành theo định mức (chưa áp giá). Chỉnh lại những điều kiện thừa và vô nghĩa (gọt dũa) hộ.
Mong được trả lời sớm, vì đây là một ứng dụng khá thực tế trong việc tạm tính GT XNK. Xin cám ơn và hậu tạ!
 
Lần chỉnh sửa cuối:
Upvote 0
Rất cám ơn bạn. Code của bạn chỉ mới làm 1 phần thôi là chỉ lấy tenvt cho các loại mã hàng (mới là phần Ad Filter). Cụ thể MH01 có tenvt A và MH02 cũng có tenvt A (đm khác) nên khi copy lên trên thì sẽ có 2 tenvt A.
Nên phải có thêm code xóa bỏ tenvt trùng trong list VT.
Trong code của bạn có điều này, nếu chỉ có 1 MH thôi thì nó sẽ liệt kê tenvt 2 lần.
Bạn xem lại hộ nhé. Bạn có thể dịch cho tôi cái code nhé. Chưa hiểu lắm.
 
Upvote 0
Cái code trên áp dụng loop 2 chiều.( cột đi ngang và dòng từ trên đi xuống) để lấy thông tin VT trên dòng màu vàng. khi các ô có trị giá lớn hơn 0.

Mình vừa đọc qua lời trả lời của bạn hôm nay nhưng cũng chưa nắm rõ ý bạn nói gì.

Nếu bạn có thề giải thích thêm bằng cách dùng kết quả sau khi chạy macro và cho thí dụ (trên sheet) kết quả bạn muốn có.
 
Upvote 0
Quên mất, trên phần màu vàng là KQ của tenvt cần sx các mặt hàng theo mahang. bạn có thể xem qua file TinhGiaThanhTuDinhMuc mình up lên, đưa ra hộ cách ngắn gọn và chính xác hộ.
Cám ơn!
 
Upvote 0
Bạn có thể post lại cái file mẫu (TinhGiaThanhTuDinhMuc) trong định dạng zip để mình coi nhé.
 
Upvote 0
Đã thay file.zip rồi, sao bạn o tải WinRar về.
Cám ơn!
 
Upvote 0
Bạn ThuNgi,

Mình đã down xuống cái file TinhGiaThanhTuDinhMuc và xem qua mà cũng không hiễu ý bạn hỏi. Macro chạy dừng giữa chừng báo lỗi.

Cách hay nhất là bạn minh họa 1 thí dụ nhỏ trong XL từng bước y như khi bạn đang làm công việc này bằng phương cách thủ công để mọi người có thể nắm được các thao tác cần thiết từ đó mới có thề tìm cách tự động hoá nguyên quá trình.

Mình không cài được winrar. Với lại Windows XP hỗ trợ định dạng zip. Vì thế ai cũng ai cũng mở và tạo zip file mà không cần software nén riêng.
 
Upvote 0
Sao không ai giúp mình cả, trong file mình đã có yêu cầu rồi mà, mục đích của cv là, khi có một đơn hàng sx MH01, MH02, căn cứ định mức ở sh data để đưa tên vt vào dòng đầu (vàng) và định mức từng loại theo, hàm sumproduct.
 
Lần chỉnh sửa cuối:
Upvote 0
ThuNghi đã viết:
Sao không ai giúp mình cả, trong file mình đã có yêu cầu rồi mà, mục đích của cv là, khi có một đơn hàng sx MH01, MH02, căn cứ định mức ở sh data để đưa tên vt vào dòng đầu (vàng) và định mức từng loại theo, hàm sumproduct.

Qủa thực đọc mấy bài trên cũng chưa hiểu lắm về câu hỏi (hình như dạo này mình hơi ngu ngu)

Có thể nói rõ hơn không ??
 
Upvote 0
Trong file TinhGiaThanhTheoDinhMuc có 2 sh, Data và BKDM
- Sh Data có cấu trúc sau: tenvtvà dinhmuc là tên vật tư và định mức sx 1 mặt hàng theo mahang
mahang_______tenhang---------tenvt-------dinhmuc
01------------MH01-------------A01--------2
01------------MH01-------------A02--------3
03------------MH03-------------A03--------1
03------------MH03-------------A01--------4
.....
- Sh BKDM có cấu trúc
......A..........B...........C......D.........E.........F..........G.........H...........I
1/-------------------------A01.................A02.................A03
2/mahang..tenhang..SLSX..D/muc..TổngVT..D/muc..TổngVT..D/muc..TổngVT
3/...01...............(nhập vào)..???...$c3*d3...????....$c3*g3
4/...03...............(nhập vào)..????????
Làm sao khi ta nhập tại sh BKDM tại A3 or A4 or A5 (nếu có nhiều mahang cần tính định mức). Chạy Code Gan_DMVT thì D1->H1 update tên vật tư cần tiêu thụ (chữ đỏ), D3->H3, D4->H4 phải cập nhật định mức.
Các ô C3...Cn là số lượng hàng 01....n cần sx, phần này tự nhập theo yêu cầu.
Nhờ các bạn giúp hộ xử lý những vấn đề sau, trong code tôi làm có vướng mắc về (hay báo lỗi)
Names("_FilterDatabase")
Names("Criteria")
Names("Extract")
Do tôi dùng kết quả của Ad Fil này làm điều kiện cho Ad Fil khác. Tôi không biết dùng dòng lệnh nào.
File này ứng dụng trong tạm tính giá XK, xin C/O form A để XK, dự trù trước để ký hợp đồng có chấp nhận phải có C/O form A?? Nên nội địa hóa bao nhiêu vật tư.....
(Yêu cầu vật tư sản xuất hàng XK có nguồn gốc <= 50% giá XK)
Yêu cầu trên là tính được sl và gt vật tư sản xuất những mặt hàng (01, 03) theo hợp đồng sẽ ký.
Các bạn cố gắng giúp nhé!
 
Upvote 0
ThuNghi đã viết:
Trong file TinhGiaThanhTheoDinhMuc có 2 sh, Data và BKDM
- Sh Data có cấu trúc sau: tenvtvà dinhmuc là tên vật tư và định mức sx 1 mặt hàng theo mahang
mahang_______tenhang---------tenvt-------dinhmuc
01------------MH01-------------A01--------2
01------------MH01-------------A02--------3
03------------MH03-------------A03--------1
03------------MH03-------------A01--------4
.....
- Sh BKDM có cấu trúc
......A..........B...........C......D.........E.........F..........G.........H...........I
1/-------------------------A01.................A02.................A03
2/mahang..tenhang..SLSX..D/muc..TổngVT..D/muc..TổngVT..D/muc..TổngVT
3/...01...............(nhập vào)..???...$c3*d3...????....$c3*g3
4/...03...............(nhập vào)..????????
Làm sao khi ta nhập tại sh BKDM tại A3 or A4 or A5 (nếu có nhiều mahang cần tính định mức). Chạy Code Gan_DMVT thì D1->H1 update tên vật tư cần tiêu thụ (chữ đỏ), D3->H3, D4->H4 phải cập nhật định mức.
Các ô C3...Cn là số lượng hàng 01....n cần sx, phần này tự nhập theo yêu cầu.
Nhờ các bạn giúp hộ xử lý những vấn đề sau, trong code tôi làm có vướng mắc về (hay báo lỗi)
Names("_FilterDatabase")
Names("Criteria")
Names("Extract")
Do tôi dùng kết quả của Ad Fil này làm điều kiện cho Ad Fil khác. Tôi không biết dùng dòng lệnh nào.
File này ứng dụng trong tạm tính giá XK, xin C/O form A để XK, dự trù trước để ký hợp đồng có chấp nhận phải có C/O form A?? Nên nội địa hóa bao nhiêu vật tư.....
(Yêu cầu vật tư sản xuất hàng XK có nguồn gốc <= 50% giá XK)
Yêu cầu trên là tính được sl và gt vật tư sản xuất những mặt hàng (01, 03) theo hợp đồng sẽ ký.
Các bạn cố gắng giúp nhé!

Không biết đã đúng ý chưa ??
 

File đính kèm

Upvote 0
Bạn thử thêm file sau!
Cách sử dụng:
Nhập tên "tenhang" ở cột B sheet BKDinhMuc2, đặt chuột vào ô đó rồi chạy macro "LayVL_5"

 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom