Sao không mô tả kĩ 1 chút. Bạn mô tả chỉ mình bạn hiểu àNhờ các cao nhân giúp code VBA tìm kiếm và thay thế vùng dữ liệu
Có cao khỉ nữa bác ạ.Ngoài cao hổ cốt chưa từng thấy nói tới cao chó, cao mèo, cao bò ... Cao nhân thì nghe nói tới nhiều nhưng không biết có tốt như cao hổ không.
Hóa ra có nhiều cái tôi còn không biết. Hoặc quên rồi.Có cao khỉ nữa bác ạ.
Em là người mới, chưa nắm được các thông tin cũng như các thức... rất mong các bác thông cảmView attachment 272054
Tiêu đề chung chung là phạm quy luật diễn đàn. Viết toàn chữ hoa là phản cảm (nhức mắt người đọc). Dùng từ "cao nhân" là tự hạn chế số người muốn giúp.
Sao không mô tả kĩ 1 chút. Bạn mô tả chỉ mình bạn hiểu à
Em sẽ giải thích lại cho các bác dễ hiểu hơn thế này ạNhờ các cao nhân giúp code VBA tìm kiếm và thay thế vùng dữ liệu
Sao trong bài 1 kết quả có nhiều cột còn trong bài này kết quả chỉ cần 2 cột?Em sẽ giải thích lại cho các bác dễ hiểu hơn thế này ạ
Sr bác. Cần nhiều cột bác ạSao trong bài 1 kết quả có nhiều cột còn trong bài này kết quả chỉ cần 2 cột?
Bơ ở đây lại trúng bơ thiu mới phê cho người nhận chứ....
"Sr bác = Sờ rờ bác" là gì vậy? . Sao cứ viết tắt và dùng từ kiểu cơm trộn bơ vậy? ...
Vụ ví dụ hơi bậy nha.Nhắc bạn:
Sao không dùng những từ "các thầy, cô " hay là "các Anh,chị, em, các bạn" thay cho những cách gọi "cao nhân, tiền bối"? và nếu dùng "các thầy, cô,....." có kém trang trọng và cầu thị hơn so với cách dùng những từ" cao nhân,..." không?
"Sr bác = Sờ rờ bác" là gì vậy? . Sao cứ viết tắt và dùng từ kiểu cơm trộn bơ vậy? hay bạn là tín đồ của giáo sư Bùi Hiển
Bạn đã đọc bài của anh @VetMini rồi? tại sao không sửa?
Mình vừa vào group nên không biết. rất cảm ơn sự đóng góp của bạn. Hi vọng bạn không vội vàng so sánh hay kết luận. Cảm ơn bạn nhiều.Nhắc bạn:
Sao không dùng những từ "các thầy, cô " hay là "các Anh,chị, em, các bạn" thay cho những cách gọi "cao nhân, tiền bối"? và nếu dùng "các thầy, cô,....." có kém trang trọng và cầu thị hơn so với cách dùng những từ" cao nhân,..." không?
"Sr bác = Sờ rờ bác" là gì vậy? . Sao cứ viết tắt và dùng từ kiểu cơm trộn bơ vậy? hay bạn là tín đồ của giáo sư Bùi Hiển
Bạn đã đọc bài của anh @VetMini rồi? tại sao không sửa?
Tôi không có ý nhận xét hay đánh giá bạn thế nào đâu, mà chỉ là nhắc bạn cho bạn biết thôi để bạn sửa và hy vọng nhận được lời giải thôi:Mình vừa vào group nên không biết. rất cảm ơn sự đóng góp của bạn. Hi vọng bạn không vội vàng so sánh hay kết luận. Cảm ơn bạn nhiều.
Bài đã được tự động gộp:
Mình là người mới, cũng chưa có thời gian đọc qua các nội quy cũng như là cách viết câu từ. rất cảm ơn sự đóng góp của mọi người. Có gì chưa đúng, chưa phải rất mong mọi người thông cảm. Ai có thể thì giúp mình với, thấy khá nhiều bình luận nhưng lại chỉ toàn đi soi câu từ thế này cũng hơi buồn.
Nếu có gì mạo phạm thì cho tôi xin lỗi nhé. Ý của tôi là không nên dùng tiếng Tây tiếng ta lẫn lộn thôi mà.Vụ ví dụ hơi bậy nha.
Người Lâm Đồng, Đắc Lắc vẫn có ăn cơm với bơ (quả bơ) là bình thường, (mình ăn còn thấy ngon).
Rất khó bắt một máy tự động làm việc khi mà cấu trúc dữ liệu đầu vào thay đổi liên tục như thời tiết hay như tâm trạng của bé ở độ tuổi dậy thì. Chỉ có máy chạy bằng cơm chấp nhận kiểu dữ liệu như vậy thôi.Sr bác. Cần nhiều cột bác ạ
Tại sao có 5 dòng giống nhau:Nhờ các cao nhân giúp code VBA tìm kiếm và thay thế vùng dữ liệu
80SAQ511 | 34.ASAQB.006 |
Cái này chắc là lười gõ dữ liệu. Gõ xong 1 ô thì kéo xuống dưới thành 5 giá trị.Tại sao có 5 dòng giống nhau:
80SAQ511 34.ASAQB.006
Tức là trên GPE cũng có nhiều người siêng, sẵn sàng sửa giùm cho những người rất lười ấy?Cái này chắc là lười gõ dữ liệu. Gõ xong 1 ô thì kéo xuống dưới thành 5 giá trị.
Xét cấu trúc thôi chứ về giá trị thì rất nhiều người rất lười, nhập xong 1 dòng thì kéo xuống thành 10 dòng y như nhau.
Tiên học lễ.. ... ....chưa có thời gian đọc qua các nội quy
Lễ ốc gạo.Tiên học lễ.. ... ....
Thì tiên học lễ. Ở đây ai là tiên giơ tay xem.Tiên học lễ.. ... ....
Tiên bác nói ở đây là 13-18 tuổi, là các cô số 8, hay là các tay thợ "bẹp"?Thì tiên học lễ. Ở đây ai là tiên giơ tay xem.![]()
Ăn, ngủ thời nay nó không có nghĩa đen xì như thế. Chưa chắc ăn mà cũng chưa chắc ngủ. Có thể là thú ăn chơi, ăn nằm (không phải là ăn ở tư thế nằm đâu nhé) với ai đó.Chú 2: ngày xưa có câu "ăn được ngủ được là tiên". Ngày nay ăn ngủ nhiều coi chừng đột biến, bệnh tim, tiểu đường,...
Vâng, đúng rồi bác ơi, là em đã sửa lại sai. Đúng là nó chỉ xuất hiện 1 lần thôi ạRất khó bắt một máy tự động làm việc khi mà cấu trúc dữ liệu đầu vào thay đổi liên tục như thời tiết hay như tâm trạng của bé ở độ tuổi dậy thì. Chỉ có máy chạy bằng cơm chấp nhận kiểu dữ liệu như vậy thôi.
Trong tập tin bài 8 có
View attachment 272088
Rõ ràng bán thành phẩm Nhôm tổng hợp được liệt kê 3 lần, mỗi lần cho 1 sản phẩm hoàn chỉnh: Điện thoại, Quạt điện và Lò vi sóng.
Bán thành phẩm Nhôm tổng hợp được cấu thành từ 3 vật liệu là Nhôm nguyên chất, Vật liệu A10 và Vật liệu A11. Chả lý gì lại liệt kê 3 lần như nhau.
Trong bài 1 cả hai sản phẩm 80SAQ511 và 81SAQ511 đều dùng bán thành phẩm 55SAQA01, và bán thành phẩm đó chỉ được liệt kê 1 lần trong khung đỏ. Liệt kê 1 lần dù dùng chung bởi 2 sản phẩm.
View attachment 272089
Tôi nghĩ cấu trúc dữ liệu phải như bài 1. Tức mỗi bán thành phẩm chỉ liệt kê 1 lần cho dù có được dùng chung bởi nhiều sản phẩm. Hơn thế nữa trước tiên phải là các mã sản phẩm hoàn chỉnh (vd. 80SAQ511 và 81SAQ511 ) rồi sau đó mới là các bán thành phẩm, mỗi bán thành phẩm chỉ liệt kê 1 lần. Nếu theo tiêu chuẩn này thì dữ liệu bài 8 phải là
View attachment 272090
Tôi nghĩ rằng lúc này mới thay máy chạy bằng cơm bằng máy tự động chạy bằng điện.
Nhưng tôi nói về 2 vấn đề chứ không chỉ về "nó chỉ xuất hiện 1 lần".Vâng, đúng rồi bác ơi, là em đã sửa lại sai. Đúng là nó chỉ xuất hiện 1 lần thôi ạ
Không cần theo thứ tự thành phẩm mới tới bán thành phẩm vẫn xử lý được mờNhưng tôi nói về 2 vấn đề chứ không chỉ về "nó chỉ xuất hiện 1 lần".
Tức tôi kiến nghị:
1. Mỗi bán thành phẩm chỉ liệt kê 1 lần cho dù có được dùng chung bởi nhiều sản phẩm hoàn chỉnh.
2. Trước tiên phải là các mã sản phẩm hoàn chỉnh (vd. 80SAQ511 và 81SAQ511 ) rồi sau đó mới là các bán thành phẩm.
3. Cấu trúc như hình cuối cùng trong bài #16
Chưa có chỗ nào tôi nói là không có điều kiện abc thì không xử lý được. Chắc bạn không hiểu tôi muốn nói gì nên tôi giải thích.Không cần theo thứ tự thành phẩm mới tới bán thành phẩm vẫn xử lý được mờ
Chỗ tôi người ta còn nấu cao trăn nữa.Có cao khỉ nữa bác ạ.
Bác ơi,Nhưng tôi nói về 2 vấn đề chứ không chỉ về "nó chỉ xuất hiện 1 lần".
Tức tôi kiến nghị:
1. Mỗi bán thành phẩm chỉ liệt kê 1 lần cho dù có được dùng chung bởi nhiều sản phẩm hoàn chỉnh.
2. Trước tiên phải là các mã sản phẩm hoàn chỉnh (vd. 80SAQ511 và 81SAQ511 ) rồi sau đó mới là các bán thành phẩm.
3. Cấu trúc như hình cuối cùng trong bài #16
Giúp em với nhé bác ơiKhông cần theo thứ tự thành phẩm mới tới bán thành phẩm vẫn xử lý được mờ
Bác kia nói là chuyện vẫn xảy ra từ xưa (khoảng thế kỷ 19 trở đi đến phần tư thế kỷ trước 21 thì tôi gọi là xưa).Chỗ tôi người ta còn nấu cao trăn nữa.
Với dữ liệu tự chế lung tung không thể viết code chuẩnBác ơi,
1. Mỗi bán thành phẩm chỉ xuất hiện 1 lần dù được dùng chung cho nhiều sản phẩm hoàn chỉnh. cái này thì đúng ạ
2. Xếp theo thứ tự xuất hiện lần lượt thì file mặc định mà em cần nó sẽ không xuất hiện như vậy. Tuy nhiên em đã kiểm tra, nếu sort theo thứ tự cũng có thể ạ.
Bác cố gắng giúp em với nhé.
Bài đã được tự động gộp:
Giúp em với nhé bác ơi
Biết bạn dư sức viết code nên mới gợi ý, trước đây có viết dạng nầy rồi, nhưng bài nầy thấy chủ topic sao sao đó nên không có hứng thú viết lạiChưa có chỗ nào tôi nói là không có điều kiện abc thì không xử lý được. Chắc bạn không hiểu tôi muốn nói gì nên tôi giải thích.
Thường là thế này. Nếu không có thêm điều kiên abc thì ta giải theo cách A. Nếu có thêm điều kiện abc thì ngoài cách A cho trường hợp tổng quát hơn ta có thể giải theo cách B cho trường hợp cụ thể hơn. Nhiều khi cách B đơn giản hơn cách A chút ít. Vậy thì nếu đúng là LUÔN LUÔN thỏa điều kiện abc thì tội gì phải dùng cách A, sao không dùng cách B?
Chuyện cách B có đơn giản hơn cách A hay không, nếu có thì đơn giản hơn nhiều hay chỉ chút ít thì khó nói ngay từ đầu, khi chưa bắt tay vào việc. Nhưng hỏi kỹ về các kiểu dữ liệu có mất cái gì đâu. Chỉ có lợi mà thôi.
Bạn là người mà tôi thấy nhiều khi tác giả không mô tả kỹ vẫh làm. Không đúng ý thì sửa. Tính tôi khác. Tôi hay hỏi kỹ. Bạn không thể bắt tôi như bạn được.
Mà thôi, bạn có vẻ đã làm xong rồi nhỉ. Tôi dừng ở đây cho bạn giúp chủ thớt nhé. Tha hồ mà thể hiện.
Dữ liệu chuẩn đây nhé bác. vì nó quá khó giải thích nên em mới phải làm ví dụ như vậy.Với dữ liệu tự chế lung tung không thể viết code chuẩn
Em nói rồi mà, em vừa vào là viết bài nhờ cậy mọi người luôn. có gì không đúng, không phải thì mong bác và mọi người bỏ qua và không chấp những thứ nhỏ nhặt. cảm ơn bác nhiều.Biết bạn dư sức viết code nên mới gợi ý, trước đây có viết dạng nầy rồi, nhưng bài nầy thấy chủ topic sao sao đó nên không có hứng thú viết lại
Bài #17 mình có hỏi, không thấy trả lời nên mất hứngDữ liệu chuẩn đây nhé bác. vì nó quá khó giải thích nên em mới phải làm ví dụ như vậy.
ví dụ dòng 16 mã bôi màu tím là bán thành phẩm của MO 55. nhưng chính nó cũng có các vật liệu tạo thành. em cần thay mã 60 màu tím đó thành các vật liệu tạo ra nó
Bài đã được tự động gộp:
Em nói rồi mà, em vừa vào là viết bài nhờ cậy mọi người luôn. có gì không đúng, không phải thì mong bác và mọi người bỏ qua và không chấp những thứ nhỏ nhặt. cảm ơn bác nhiều.
Định nghĩa "vừa vào" của bạn là thế nào?Em nói rồi mà, em vừa vào là viết bài nhờ cậy mọi người luôn.
...
Thử hỏi, thành viên đã hơn 5 năm mà còn tự xưng mình là "người mới [sic]". Trong suốt hơn 5 năm vẫn "chưa có thời gian đọc qua nội quy [sic]". Rõ ràng là họ dùng thời gian cao su, và xem nội quy như trò bày vẽ không cần thiết.
Khi bạn bỏ công ra hỏi về dữ liệu là tôi biết bạn muốn giúp chủ thớt. Mà bạn lại biết làm nữa thì cứ giúp chủ thớt đi chứ quan tâm tôi làm gì. Chỉ những lúc nào tôi nhầm lẫm, ở bất cứ chủ đề nào, ở bất cứ thời điểm nào, thì tôi rất mong mọi người quan tâm và góp ý. Tôi rất rạch ròi, khi tôi sai về kiến thức mà có ai chỉ ra để sửa và học hỏi thì chỉ có cám ơn mà thôi.Biết bạn dư sức viết code nên mới gợi ý, trước đây có viết dạng nầy rồi, nhưng bài nầy thấy chủ topic sao sao đó nên không có hứng thú viết lại
Giúp em với bác ơiBài #17 mình có hỏi, không thấy trả lời nên mất hứng
Mình không hiểu rõ lắm về nguyên lý trên. Ở đây là trong lĩnh vực sản xuất. Mỗi sản phẩm hoặc bán sản phẩm đều được tạo ra bởi các nguyên vật liệu cố định. nhưng trong bảng thông số kỹ thuật lại chỉ hiển thị theo cấp cao nhất. dẫn đến việc khi muốn nhìn chi tiết lại khó khăn nên cần tìm và thay thế cả 1 mảng dữ liệu bạn ạ. Giống như 1 chiếc tivi họ chỉ nói là cần màn hình và vỏ. nhưng mình lại cần biết nó dùng tất cả bao nhiêu cân nhựa, bao nhiêu cân sắt tính cho toàn bộ các linh kiện tạo thành ra nó.Bài này dành cho những ai trãi hóa học hữu cơ:
Ta thường gặp các nguyên tố C, H, O , N, P & S
Từng ý thứ thôi, ta có thể tạo ra nhóm chức -OH (để say xỉn), hay -COOH (để làm loét bao tử), v.v. . . .
Rồi từ ROH & RCOOH có thể kết hợp lại tạo ra ete hay este,. . . .
Theo nguyên lý tương tự thì tác giả bài đăng nên phân loại hay nhóm chúng chăng?
Bạn không hiểu người khác nói gì à?Giúp em với bác ơi
Tức người ta muốn giúp nhưng do không hiểu nên người ta có câu hỏi ở bài 17. Không nhận được câu trả lời cho câu hỏi ở bài 17 nên người ta mất hứng. Muốn người ta giúp thì phải làm cho người ta có hứng lại. Chả nhẽ người khác còn phải chỉ cho bạn cách làm cho người ta có hứng lại? Viết thế mà không hiểu thì bó tay.Bài #17 mình có hỏi, không thấy trả lời nên mất hứng
Hình như lúc ấy tự ái dâng cao quá nên cứ cho câu hỏi ở bài #17 là "phê bình" mình. Không muốn khai rõ là do "kéo ẩu".Bạn không hiểu người khác nói gì à?
...
Không thuyết phục. Cứ cho là lúc ấy (bài 17 - Thứ sáu lúc 05:30) tự ái dâng cao quá, nhưng bây giờ (bài 35 - Hôm nay (thứ Ba) lúc 14:33) vẫn "lờ" đi là sao. Chả nhẽ "dâng cao" từ thứ Sáu tới thứ Ba?Hình như lúc ấy tự ái dâng cao quá nên cứ cho câu hỏi ở bài #17 là "phê bình" mình. Không muốn khai rõ là do "kéo ẩu".
Chỗ đó em viết sai nhé bác. file gốc đính kèm. bác xem giúp em với ạTại sao có 5 dòng giống nhau:
80SAQ511 34.ASAQB.006
cảm ơn bạn nhé@Chủ bài đăng: Đến đây & tìm cách xem được các hình trong nớ, có thể có ích cho bạn:
Kế toán sản xuất – chế biến Bán thành phẩm – Hướng dẫn từ iPOS
huongdan.ipos.vn
Không biết bài toán của bạn có giống hình bên dưới không nhỉ ?Dữ liệu chuẩn đây nhé bác. vì nó quá khó giải thích nên em mới phải làm ví dụ như vậy.
ví dụ dòng 16 mã bôi màu tím là bán thành phẩm của MO 55. nhưng chính nó cũng có các vật liệu tạo thành. em cần thay mã 60 màu tím đó thành các vật liệu tạo ra nó
Bài đã được tự động gộp:
Em nói rồi mà, em vừa vào là viết bài nhờ cậy mọi người luôn. có gì không đúng, không phải thì mong bác và mọi người bỏ qua và không chấp những thứ nhỏ nhặt. cảm ơn bác nhiều.
Bài của mình đúng như bạn mô tả và đúng là nó sẽ còn xuất hiện ở sản phẩm Y. Bạn xem giúp mình với nhé. Mình cũng k cần quá nhanh đâu. miễn là nó có thể tự động được.Không biết bài toán của bạn có giống hình bên dưới không nhỉ ?
Trong file BOM có nhiều sp để đơn giản giả xử có SPX SPY
trong sơ đồ SPX là gốc A1 , A2...là các cái ngọn
Lần này bạn muốn loại bỏ hết những cái trung gian như A , B , B2 chỉ còn để lại gốc và ngọn phải không nhỉ?
Nếu vậy 1 vấn đề là những cái trung gian A B B2 ... có xuất hiện ở các sp khác không. vd trong SPY sẽ có A và do đó cái ngọn của nó sẽ có A1 A2
Nếu không xuất hiện ở SPY bài toán rất đơn giản ... chương trình chạy nhanh
Nếu có xuất hiện ở SPY bài toán rất phức tạp hơn 1 chút ... và chương trình sẽ hơi chậm vì lượng dữ liệu hơi lớn 12k dòng
Code không xử lý sản phẩm sử dụng lẫn nhau (A --> . . . --> A), các sản phẩm nầy sẽ được thong báo và tính nguyên vật liệu thiếuDữ liệu chuẩn đây nhé bác. vì nó quá khó giải thích nên em mới phải làm ví dụ như vậy.
ví dụ dòng 16 mã bôi màu tím là bán thành phẩm của MO 55. nhưng chính nó cũng có các vật liệu tạo thành. em cần thay mã 60 màu tím đó thành các vật liệu tạo ra nó
Bài đã được tự động gộp:
Em nói rồi mà, em vừa vào là viết bài nhờ cậy mọi người luôn. có gì không đúng, không phải thì mong bác và mọi người bỏ qua và không chấp những thứ nhỏ nhặt. cảm ơn bác nhiều.
Option Explicit
Dim res(), sArr(), dic As Object, k&
Sub XYZ()
Dim d As Object, sRow&, i&, iKey
Const TP$ = "5,8,9" 'Tham Pham xet theo ký tu dau
Application.ScreenUpdating = False
Set dic = CreateObject("scripting.dictionary")
Set d = CreateObject("scripting.dictionary")
With Sheets("Sheet1")
sArr = .Range("A2", .Range("C" & Rows.Count).End(xlUp)).Value
End With
sRow = UBound(sArr)
ReDim res(1 To 100000, 1 To 3) 'Ket qua 100.000 dòng
For i = 1 To sRow
iKey = sArr(i, 1)
dic.Item(iKey) = dic.Item(iKey) & "|" & i
If InStr(1, TP, Mid(iKey, 1, 1)) > 0 Then d.Item(iKey) = ""
sArr(i, 3) = -sArr(i, 3)
Next
k = 0
For Each iKey In d.keys
Call TaoDinhMuc(iKey, iKey, 1)
Next iKey
With Sheets("Sheet1")
i = .Range("G" & Rows.Count).End(xlUp).Row
If i > 1 Then .Range("G2:I" & i).ClearContents
If k > 0 Then .Range("G2").Resize(k, 3) = res
End With
Application.ScreenUpdating = True
Set dic = Nothing: Set d = Nothing
Erase sArr, res
End Sub
Private Sub TaoDinhMuc(ByVal sp$, ByVal tmp$, ByVal sl As Double)
Dim S, iKey$, i&, j&, ik&
S = Split(dic.Item(tmp), "|")
For i = 1 To UBound(S)
j = Val(S(i))
If Not dic.exists(sArr(j, 2)) Then
iKey = sp & "|" & sArr(j, 2)
ik = dic.Item(iKey)
If ik = 0 Then
k = k + 1
ik = k
dic.Item(iKey) = k
End If
res(ik, 1) = sp
res(ik, 2) = sArr(j, 2)
res(ik, 3) = res(ik, 3) + sl * sArr(j, 3)
Else
If sArr(j, 2) = sp Then MsgBox ("San Pham " & sp & " va " & tmp & " bi tinh vong!"): Exit Sub
Call TaoDinhMuc(sp, sArr(j, 2), sl * sArr(j, 3))
End If
Next i
End Sub
Tôi không làm chuyên môn này nên có thắc mắc.Code không xử lý sản phẩm sử dụng lẫn nhau (A --> . . . --> A), các sản phẩm nầy sẽ được thong báo và tính nguyên vật liệu thiếu
Thành phẩm và bán thành phẩm chỉ là khái niệm tương đối, chỉ có doanh nghiệp mới xác định chuẩn, ví dụ doanh nghiệp giấy, dùng một ít thành phẩm giấy làm bao bì, là nguyên liệu của sản phẩm khác, nhưng giấy vẫn gọi là thành phẩm vì mục đích sản xuất là bán ra ngoài, nếu chủ yếu dùng sản xuất nội bộ và bán ra ngoài là thứ yếu thì gọi là bán thành phẩmTôi không làm chuyên môn này nên có thắc mắc.
Sau khi chạy code cho tập tin ở bài #44 thì có kết quả như hình dưới, tức 55.LVD12.MGA là sản phẩm hoàn chỉnh.
View attachment 272194
Nhưng theo như dòng 9216 ở hình tiếp theo
View attachment 272195
thì 55.LVD12.MGA là bán thành phẩm của sản phẩm 57.LVD12.G03 chứ không thể là sản phẩm hoàn chỉnh.
Đó là cách hiểu của người ngoại đạo như tôi. Vậy chuyên môn về BOM là như thế nào, và lý thuyết có thể đọc ở đâu?
For i = 1 To sRow
iKey = sArr(i, 1)
dic.Item(iKey) = dic.Item(iKey) & "|" & i
d.Item(iKey) = ""
sArr(i, 3) = -sArr(i, 3)
Next
For i = 1 To sRow
If d.exists(sArr(i, 2)) Then
d.Remove (sArr(i, 2))
End If
Next
k = 0
For Each iKey In d.keys
q = 0
Call TaoDinhMuc(iKey, iKey, 1)
Next iKey
Vì thế tôi cho là chủ thớt phải mô tả thật kỹ càng. Họ có thể có khái niệm riêng của họ mà theo đấy 55.LVD12.MGA KHÔNG là sản phẩm hoàn chỉnh (hình như trong tập tin chủ thớt tô mầu chữ để nhấn mạnh đó là Bán thành phẩm). Tôi muốn biết rõ trước khi viết code: sản phẩm hoàn chỉnh là gì, cách phát hiện, bán thành phẩm là gì và cách phát hiện. Vì với một người ngoại đạo như tôi mà không giải thích thì tôi chỉ còn cách đoán mò, tự hiểu. Mà ở thời điểm này tôi hiểu thế này - theo lôgíc của tôi thôi:Thành phẩm và bán thành phẩm chỉ là khái niệm tương đối, chỉ có doanh nghiệp mới xác định chuẩn, ví dụ doanh nghiệp giấy, dùng một ít thành phẩm giấy làm bao bì, là nguyên liệu của sản phẩm khác, nhưng giấy vẫn gọi là thành phẩm vì mục đích sản xuất là bán ra ngoài, nếu chủ yếu dùng sản xuất nội bộ và bán ra ngoài là thứ yếu thì gọi là bán thành phẩm
Trong file bạn gửi mình có thử viết qua code nhưng do chương trình chạy chậm quá nên mình moi xử lý sp đầu tiên.Bài của mình đúng như bạn mô tả và đúng là nó sẽ còn xuất hiện ở sản phẩm Y. Bạn xem giúp mình với nhé. Mình cũng k cần quá nhanh đâu. miễn là nó có thể tự động được.
Em cảm ơn bác nhiều ạ.Code không xử lý sản phẩm sử dụng lẫn nhau (A --> . . . --> A), các sản phẩm nầy sẽ được thong báo và tính nguyên vật liệu thiếu
Mã:Option Explicit Dim res(), sArr(), dic As Object, k& Sub XYZ() Dim d As Object, sRow&, i&, iKey Const TP$ = "5,8,9" 'Tham Pham xet theo ký tu dau Application.ScreenUpdating = False Set dic = CreateObject("scripting.dictionary") Set d = CreateObject("scripting.dictionary") With Sheets("Sheet1") sArr = .Range("A2", .Range("C" & Rows.Count).End(xlUp)).Value End With sRow = UBound(sArr) ReDim res(1 To 100000, 1 To 3) 'Ket qua 100.000 dòng For i = 1 To sRow iKey = sArr(i, 1) dic.Item(iKey) = dic.Item(iKey) & "|" & i If InStr(1, TP, Mid(iKey, 1, 1)) > 0 Then d.Item(iKey) = "" sArr(i, 3) = -sArr(i, 3) Next k = 0 For Each iKey In d.keys Call TaoDinhMuc(iKey, iKey, 1) Next iKey With Sheets("Sheet1") i = .Range("G" & Rows.Count).End(xlUp).Row If i > 1 Then .Range("G2:I" & i).ClearContents If k > 0 Then .Range("G2").Resize(k, 3) = res End With Application.ScreenUpdating = True Set dic = Nothing: Set d = Nothing Erase sArr, res End Sub Private Sub TaoDinhMuc(ByVal sp$, ByVal tmp$, ByVal sl As Double) Dim S, iKey$, i&, j&, ik& S = Split(dic.Item(tmp), "|") For i = 1 To UBound(S) j = Val(S(i)) If Not dic.exists(sArr(j, 2)) Then iKey = sp & "|" & sArr(j, 2) ik = dic.Item(iKey) If ik = 0 Then k = k + 1 ik = k dic.Item(iKey) = k End If res(ik, 1) = sp res(ik, 2) = sArr(j, 2) res(ik, 3) = res(ik, 3) + sl * sArr(j, 3) Else If sArr(j, 2) = sp Then MsgBox ("San Pham " & sp & " va " & tmp & " bi tinh vong!"): Exit Sub Call TaoDinhMuc(sp, sArr(j, 2), sl * sArr(j, 3)) End If Next i End Sub
Cảm ơn bác, Đúng như bác HieuCD giải thích. TP và Bán Thành Phẩm chỉ là khái niệm tương đối thôi ạ. Khi nó được tạo ra và bán cho công ty khác thì nó là thành phẩm, nhưng khi nó lại đem vào làm một bộ phận cho một sản phẩm khác thì nó lại được coi là bán thành phẩm.Tôi không làm chuyên môn này nên có thắc mắc.
Sau khi chạy code cho tập tin ở bài #44 thì có kết quả như hình dưới, tức 55.LVD12.MGA là sản phẩm hoàn chỉnh.
View attachment 272194
Nhưng theo như dòng 9216 ở hình tiếp theo
View attachment 272195
thì 55.LVD12.MGA là bán thành phẩm của sản phẩm 57.LVD12.G03 chứ không thể là sản phẩm hoàn chỉnh.
Đó là cách hiểu của người ngoại đạo như tôi. Vậy chuyên môn về BOM là như thế nào, và lý thuyết có thể đọc ở đâu?
Cảm ơn bạn nhiều nhé, mình sẽ kiểm tra kết quảTrong file bạn gửi mình có thử viết qua code nhưng do chương trình chạy chậm quá nên mình moi xử lý sp đầu tiên.
bạn check xem có đúng ý bạn không nhé !
Code của bác đúng cái mà em cần rồi ạ. Cảm ơn bác rất nhiều!Code không xử lý sản phẩm sử dụng lẫn nhau (A --> . . . --> A), các sản phẩm nầy sẽ được thong báo và tính nguyên vật liệu thiếu
Mã:Option Explicit Dim res(), sArr(), dic As Object, k& Sub XYZ() Dim d As Object, sRow&, i&, iKey Const TP$ = "5,8,9" 'Tham Pham xet theo ký tu dau Application.ScreenUpdating = False Set dic = CreateObject("scripting.dictionary") Set d = CreateObject("scripting.dictionary") With Sheets("Sheet1") sArr = .Range("A2", .Range("C" & Rows.Count).End(xlUp)).Value End With sRow = UBound(sArr) ReDim res(1 To 100000, 1 To 3) 'Ket qua 100.000 dòng For i = 1 To sRow iKey = sArr(i, 1) dic.Item(iKey) = dic.Item(iKey) & "|" & i If InStr(1, TP, Mid(iKey, 1, 1)) > 0 Then d.Item(iKey) = "" sArr(i, 3) = -sArr(i, 3) Next k = 0 For Each iKey In d.keys Call TaoDinhMuc(iKey, iKey, 1) Next iKey With Sheets("Sheet1") i = .Range("G" & Rows.Count).End(xlUp).Row If i > 1 Then .Range("G2:I" & i).ClearContents If k > 0 Then .Range("G2").Resize(k, 3) = res End With Application.ScreenUpdating = True Set dic = Nothing: Set d = Nothing Erase sArr, res End Sub Private Sub TaoDinhMuc(ByVal sp$, ByVal tmp$, ByVal sl As Double) Dim S, iKey$, i&, j&, ik& S = Split(dic.Item(tmp), "|") For i = 1 To UBound(S) j = Val(S(i)) If Not dic.exists(sArr(j, 2)) Then iKey = sp & "|" & sArr(j, 2) ik = dic.Item(iKey) If ik = 0 Then k = k + 1 ik = k dic.Item(iKey) = k End If res(ik, 1) = sp res(ik, 2) = sArr(j, 2) res(ik, 3) = res(ik, 3) + sl * sArr(j, 3) Else If sArr(j, 2) = sp Then MsgBox ("San Pham " & sp & " va " & tmp & " bi tinh vong!"): Exit Sub Call TaoDinhMuc(sp, sArr(j, 2), sl * sArr(j, 3)) End If Next i End Sub
Code của bạn đang chưa đúng cái mình muốn. ví dụ như mã 55.LVX61.DG2, trong mã đó còn có mã 60.LVX61.F01 mã đó cũng là thành phẩm/bán thành phẩm, nên lại phải thay toàn bộ nguyên liệu trong mã 60 đó vào trong mã 55.LVX61.DG2 nữa cơ bạn ạ.Trong file bạn gửi mình có thử viết qua code nhưng do chương trình chạy chậm quá nên mình moi xử lý sp đầu tiên.
bạn check xem có đúng ý bạn không nhé !
Bác rất cẩn thận, em chưa biết đọc nhiều ngôn ngữ VBA, bác có ghi thêm phần ghi chú nên em cần thêm mã đầu 60 vào thành phẩm/bán thành phẩm thì cũng có thể tự thêm vào được. Cảm ơn bác nhiều ạThành phẩm và bán thành phẩm chỉ là khái niệm tương đối, chỉ có doanh nghiệp mới xác định chuẩn, ví dụ doanh nghiệp giấy, dùng một ít thành phẩm giấy làm bao bì, là nguyên liệu của sản phẩm khác, nhưng giấy vẫn gọi là thành phẩm vì mục đích sản xuất là bán ra ngoài, nếu chủ yếu dùng sản xuất nội bộ và bán ra ngoài là thứ yếu thì gọi là bán thành phẩm
Lúc đầu mình dùng các lệnh sau để xác định thành phẩm, như thấy không ổn nên mới chỉnh lại như code trên
Mã:For i = 1 To sRow iKey = sArr(i, 1) dic.Item(iKey) = dic.Item(iKey) & "|" & i d.Item(iKey) = "" sArr(i, 3) = -sArr(i, 3) Next For i = 1 To sRow If d.exists(sArr(i, 2)) Then d.Remove (sArr(i, 2)) End If Next k = 0 For Each iKey In d.keys q = 0 Call TaoDinhMuc(iKey, iKey, 1) Next iKey
trong sheet ket qua minh thay mã 60.LVX61.F01 thanh ma 72.50048.001 la nguyên liệu cua no vao trong 55.LVX61.DG2 roi nhi ?Code của bác đúng cái mà em cần rồi ạ. Cảm ơn bác rất nhiều!
Bài đã được tự động gộp:
Code của bạn đang chưa đúng cái mình muốn. ví dụ như mã 55.LVX61.DG2, trong mã đó còn có mã 60.LVX61.F01 mã đó cũng là thành phẩm/bán thành phẩm, nên lại phải thay toàn bộ nguyên liệu trong mã 60 đó vào trong mã 55.LVX61.DG2 nữa cơ bạn ạ.
Bài đã được tự động gộp:
Bác rất cẩn thận, em chưa biết đọc nhiều ngôn ngữ VBA, bác có ghi thêm phần ghi chú nên em cần thêm mã đầu 60 vào thành phẩm/bán thành phẩm thì cũng có thể tự thêm vào được. Cảm ơn bác nhiều ạ
Thông thường doanh nghiệp cần định mức của tất cả sản phẩm bao gồm thành phẩm và bán thành phẩm, sau đó cần cụ thể sản phẩm gì sẽ bóc tách ra sau, lúc đó không cần phân loại thành phẩm và bán thành phẩmTôi chạy code cho hình
View attachment 272196
thì không có kết quả. Dù là thế nào cũng phải có kết quả chứ nhỉ. Ít ra là San pham 1 và San pham 2 là sản phẩm hoàn chỉnh, nếu doanh nghiệp không cho là Vat lieu 1 và Vat lieu 2 cũng là sản phẩm. Nhưng đây là không có kết quả gì.
Tôi không hiểu rõ lắm Const TP$ = "5,8,9" 'Tham Pham xet theo kư tu dau
Nếu phải liệt kê gì đó mà với dữ liệu của tác giả hàng chục nghìn dòng thì rất có thể phải liệt kê rất rất nhiều. Nhưng như tôi đã viết, tôi không tìm hiểu xem TP nó là gì vì thực ra tôi cũng không quan tâm.
Vì thế tôi cho là chủ thớt phải mô tả thật kỹ càng. Họ có thể có khái niệm riêng của họ mà theo đấy 55.LVD12.MGA KHÔNG là sản phẩm hoàn chỉnh (hình như trong tập tin chủ thớt tô mầu chữ để nhấn mạnh đó là Bán thành phẩm). Tôi muốn biết rõ trước khi viết code: sản phẩm hoàn chỉnh là gì, cách phát hiện, bán thành phẩm là gì và cách phát hiện. Vì với một người ngoại đạo như tôi mà không giải thích thì tôi chỉ còn cách đoán mò, tự hiểu. Mà ở thời điểm này tôi hiểu thế này - theo lôgíc của tôi thôi:
- Những mã ở cột A mà không có ở cột B thì là Sản phẩm. Và chỉ chúng mới là Sản phẩm.
- Những mã có ở cột A và cả ở cột B thì là Bán thành phẩm.
- Những mã chỉ có ở cột B thì là nguyên liệu.
Cho tới khi chủ thớt không mô tả, không định nghĩa gì cả thì mọi code chưa chắc đúng ý. Chủ thớt có thể có định nghĩa Sản phẩm, Bán thành phẩm và Nguyên liệu của RIÊNG MÌNH (với tư cách là doanh nghiệp anh ta xác định chuẩn như thế), không cần giống ai. Nhưng lúc đó phải định nghĩa rõ ràng, và chỉ ra cách xác định mã thế nào là Sản phẩm, Bán thành phẩm và Nguyên liệu.
Có những nhà máy dùng một số bán thành phẩm của họ như thành phẩm.Thông thường doanh nghiệp cần định mức của tất cả sản phẩm bao gồm thành phẩm và bán thành phẩm, sau đó cần cụ thể sản phẩm gì sẽ bóc tách ra sau, lúc đó không cần phân loại thành phẩm và bán thành phẩm
Code xét: Const TP$ = "5,8,9" 'Tham Pham xet theo kư tu dau
Chỉ phán đoán dựa vào đặc điểm bộ mã thực tế, nếu dữ liệu khác cần cách nhận diện khác
À, đúng rồi bạn ạ. vậy phần code đã chạy đúng rồi bạn nhé. Mình cần thêm 1 đoạn nữa chạy cho số lượng. ví dụ như là trong mã 55.LVX61.DG2 dùng 3 mã 60.LVX61.F01 thì toàn bộ số lượng nguyên liệu của mã 60.LVX61.F01 sẽ nhân với 3. bạn nghĩ thêm giúp mình với nhétrong sheet ket qua minh thay mã 60.LVX61.F01 thanh ma 72.50048.001 la nguyên liệu cua no vao trong 55.LVX61.DG2 roi nhi ?![]()