Làm thế nào nhập số liệu chi tiết qua các sheet khác nhau từ 1 file gốc một cách nhanh gọn (1 người xem)

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

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

Nam168

Thành viên chính thức
Tham gia
11/4/22
Bài viết
82
Được thích
5
Giới tính
Nữ
Em chào các anh chị!
Anh chị cho em hỏi hiện tại khi nhận thông tin từ file "Lệnh đính bộ" em phải nhập số lô, các thông tin chi tiết của mặt hàng qua các sheet tương ứng của file "số lô bộ chi tiết". Em đang nhập tay nên nhờ anh chị giúp em có các nào nhập nhanh được không ạ?
Em cảm ơn!
 

File đính kèm

Kiểu như không biết nhập chỗ nào vào chỗ nào á
à em gải thích rõ hơn, từ file " lệnh đính bộ" - lệnh này có nhiều bộ khác nhau, cùng với tên sản phẩm - lot sản phẩm, em sẽ lấy các thông tin từ file góc này nhập vào các sheet theo bộ tương ứng ở file "số lô bộ chi tiết", em có tô cùng màu (ví dụ: màu vàng ở file "lệnh đính bộ" sẽ nhập vào sheet màu vàng ở file "số lô bộ chi tiết" cho dễ hiểu hơn rồi đó ạ
 

File đính kèm

à em gải thích rõ hơn, từ file " lệnh đính bộ" - lệnh này có nhiều bộ khác nhau, cùng với tên sản phẩm - lot sản phẩm, em sẽ lấy các thông tin từ file góc này nhập vào các sheet theo bộ tương ứng ở file "số lô bộ chi tiết", em có tô cùng màu (ví dụ: màu vàng ở file "lệnh đính bộ" sẽ nhập vào sheet màu vàng ở file "số lô bộ chi tiết" cho dễ hiểu hơn rồi đó ạ
Thông tin không nhất quán nên không làm được.
Sheet màu đỏ thì căn cứ theo mã Tp
1650416546599.png
Sheet màu nâu thì căn cứ theo gì không biết
1650416591979.png
các sheet còn lại thì theo tên
1650416636937.png
 
Dạ do em ghi thiếu mã TP ở sheet đó ạ
Nếu tạm bỏ qua sheet nâu thì có cách nào nhập liệu nhanh anh có thể gợi ý cho e với ạ
Bài đã được tự động gộp:

Các sheet có ghi tên và mã mình cứ quan tâm mã là được ạ
 
Lần chỉnh sửa cuối:
Dạ do em ghi thiếu mã TP ở sheet đó ạ
Nếu tạm bỏ qua sheet nâu thì có cách nào nhập liệu nhanh anh có thể gợi ý cho e với ạ
Bài đã được tự động gộp:

Các sheet có ghi tên và mã mình cứ quan tâm mã là được ạ
Các sheet kia nhất thiết phải ghi như vậy chứ không ghi mã số như sheet màu đỏ được sao bạn?
 
Dạ được chứ ạ, đúng ra là phải qui về 1 cách ghi giống nhau, tại file e đặt cho dễ nhớ tên sp thôi ạ, e bỏ vẫn được ạ
 

File đính kèm

Dạ được chứ ạ, đúng ra là phải qui về 1 cách ghi giống nhau, tại file e đặt cho dễ nhớ tên sp thôi ạ, e bỏ vẫn được ạ
Gửi file cho bạn. Có mấy việc tôi đã sửa mới code được, bạn cần biết để sửa cho chuẩn cách bố trí bảng biểu và để code chạy đúng:
1. Tên sheet của file tổng hợp (Số lô bộ chi tiết) phải theo mã thành phẩm
2. Dòng bắt đầu của dữ liệu file tổng hợp phải là dòng 7.
3. Các cột số lô chi tiết file tổng hợp không theo trình tự của file chi tiết (lệnh đính bộ) nên buộc phải tìm kiếm. Do đó buộc phải ghi đúng mã bên file chi tiết. Bạn muốn ghi nhớ kiểu nào tùy bạn nhưng dòng số 6 đó phải như vậy mới chạy đúng.
 

File đính kèm

Gửi file cho bạn. Có mấy việc tôi đã sửa mới code được, bạn cần biết để sửa cho chuẩn cách bố trí bảng biểu và để code chạy đúng:
1. Tên sheet của file tổng hợp (Số lô bộ chi tiết) phải theo mã thành phẩm
2. Dòng bắt đầu của dữ liệu file tổng hợp phải là dòng 7.
3. Các cột số lô chi tiết file tổng hợp không theo trình tự của file chi tiết (lệnh đính bộ) nên buộc phải tìm kiếm. Do đó buộc phải ghi đúng mã bên file chi tiết. Bạn muốn ghi nhớ kiểu nào tùy bạn nhưng dòng số 6 đó phải như vậy mới chạy đúng.
Em cảm ơn anh
Hiện tại em chưa check được file mới nên anh có thể giải thích giùm em cách nhập dữ liệu trên file mới anh tạo code được hông anh
 
Em cảm ơn anh
Hiện tại em chưa check được file mới nên anh có thể giải thích giùm em cách nhập dữ liệu trên file mới anh tạo code được hông anh
Bạn cứ nhập như bình thường vẫn nhập. Chỉ là tôi đã đổi tên sheet, tiêu đề dưới số lô chi tiết, đã chèn dòng 1 số bảng cho đúng. Bạn đọc kỹ 3 điều tôi viết và làm đúng như thế.
 
Bạn cứ nhập như bình thường vẫn nhập. Chỉ là tôi đã đổi tên sheet, tiêu đề dưới số lô chi tiết, đã chèn dòng 1 số bảng cho đúng. Bạn đọc kỹ 3 điều tôi viết và làm đúng như thế.
Dạ anh cho em hỏi cách mới có khác, nhập nhanh hoặc kiểm soát việc mình nhập sai so với cách nhập trước của em hông ạ. Điều 1, 3 thì em hiểu nè vì trước em cũng làm như vậy mà tại e làm không đồng loạt các sheet, điều 2 thì em chưa hiểu. Anh đừng phiền khi em hỏi nhiều nha :(
 
Dạ anh cho em hỏi cách mới có khác, nhập nhanh hoặc kiểm soát việc mình nhập sai so với cách nhập trước của em hông ạ. Điều 1, 3 thì em hiểu nè vì trước em cũng làm như vậy mà tại e làm không đồng loạt các sheet, điều 2 thì em chưa hiểu. Anh đừng phiền khi em hỏi nhiều nha :(
Không sai nếu mọi thông tin của lệnh đính bộ là đúng (VD mã số nguyên liệu phải đúng. Nếu sai là thôi rồi). Và tất nhiên khi chạy code xong thì phải lướt qua 1 lượt chứ đâu có bỏ thí được.

Điều 2 có nghĩa là ở mấy sheet đầu thì biểu tổng hợp bắt đầu nhập dữ liệu ở dòng 7, nhưng mấy sheet sau thì lại bố trí ở dòng 4 và tôi đã chèn 3 dòng bên trên bảng cho dòng đầu bảng đúng dòng 7. Code của tôi cần tìm mã nguyên liệu ở dòng 6 từ cột D trở đi. Nếu không đúng như thế thì code không tìm thấy cột để điền dữ liệu. Vậy đó.
 
Dạ vậy nếu phát sinh mã TP bộ mới thì tạo sheet mới với tên đúng với mã TP đó thì vẫn chạy được đúng hông anh
 
Dạ vậy nếu phát sinh mã TP bộ mới thì tạo sheet mới với tên đúng với mã TP đó thì vẫn chạy được đúng hông anh
Đúng rồi bạn. Ban đầu tôi định gán mã cố định trong code, nhưng như thế thì khi thêm sheet lại khó cho bạn. Chừ cứ thêm thoải mái miễn sao đúng cấu trúc mà tôi đã nói.
 
Đúng rồi bạn. Ban đầu tôi định gán mã cố định trong code, nhưng như thế thì khi thêm sheet lại khó cho bạn. Chừ cứ thêm thoải mái miễn sao đúng cấu trúc mà tôi đã nói.
Dạ cảm ơn anh đã nhiệt tình giúp em. Chúc anh thiệt nhiều sức khoẻ :)
 
Gửi file cho bạn. Có mấy việc tôi đã sửa mới code được, bạn cần biết để sửa cho chuẩn cách bố trí bảng biểu và để code chạy đúng:
1. Tên sheet của file tổng hợp (Số lô bộ chi tiết) phải theo mã thành phẩm
2. Dòng bắt đầu của dữ liệu file tổng hợp phải là dòng 7.
3. Các cột số lô chi tiết file tổng hợp không theo trình tự của file chi tiết (lệnh đính bộ) nên buộc phải tìm kiếm. Do đó buộc phải ghi đúng mã bên file chi tiết. Bạn muốn ghi nhớ kiểu nào tùy bạn nhưng dòng số 6 đó phải như vậy mới chạy đúng.Em
Dạ anh @Maika8008 ơi, hôm nay em mới check file mới anh làm giúp em, nhưng mà em vẫn chưa hiểu hết, em chỉ hiểu là anh đã đặt lại tên các sheet cho đồng nhất với tên bộ của file" lệnh đính bộ", đồng nhất tên mã TP, các dòng ở các sheet. Và em vẫn nhập tay bình thường (em thấy vẫn như lúc trước em nhập) Vậy em đang sai ở đâu vậy anh?

Em chờ phản hồi từ anh ạ.
 
Dạ anh @Maika8008 ơi, hôm nay em mới check file mới anh làm giúp em, nhưng mà em vẫn chưa hiểu hết, em chỉ hiểu là anh đã đặt lại tên các sheet cho đồng nhất với tên bộ của file" lệnh đính bộ", đồng nhất tên mã TP, các dòng ở các sheet. Và em vẫn nhập tay bình thường (em thấy vẫn như lúc trước em nhập) Vậy em đang sai ở đâu vậy anh?

Em chờ phản hồi từ anh ạ.
Chưa hiểu bạn hỏi gì?
 
Chưa hiểu bạn hỏi gì?
Dạ là ngoại trừ anh có thay đổi tên sheet, mã tp ở hàng 6 trong các bảng thì em vẫn nhập giống như cũ nên là không biết do em không hiểu hiểu cách dùng file hay sao ạ, em thấy anh có viết code mà em hông hiểu gì cả :)
 
Tôi hiểu là cái file lệnh đính bộ là do bạn nhận của người khác, và muốn mang dữ liệu sang file số lô bộ chi tiết của bạn.

Bài #1 muốn gì thì chạy code nó sẽ làm y vậy. Nếu nhập bằng tay thì viết code làm gì.
 
Dạ, mà em không biết chạy thế nào đó anh
Ủa, chạy 1 code mà bạn chưa biết sao? Bạn bấm Alt+F8 chọn tên code để chạy.

Còn chuyện không phải chạy đồng loạt các sheet hay phải chọn sheet nào để chạy thì lẽ ra bạn phải nói từ đầu và mô tả tỉ mỉ chứ không để đến mấy chục bài rồi mới nói.
 
Ủa, chạy 1 code mà bạn chưa biết sao? Bạn bấm Alt+F8 chọn tên code để chạy.

Còn chuyện không phải chạy đồng loạt các sheet hay phải chọn sheet nào để chạy thì lẽ ra bạn phải nói từ đầu và mô tả tỉ mỉ chứ không để đến mấy chục bài rồi mới nói.
Xin lỗi anh, em không biết gì về code cả nên trao đổi có chút khó hiểu

Hiện tại khi em nhận được lệnh, lệnh có mã TP bộ nào em sẽ tìm sheet tên bộ đó để nhập số lô chi tiết, sheet bộ nào có rồi thì nhập lô tiếp theo, bộ mới thì tạo sheet mới, anh hướng dẫn giúp em chạy code như anh viết đi ạ

Em cảm ơn anh
 
Xin lỗi anh, em không biết gì về code cả nên trao đổi có chút khó hiểu

Hiện tại khi em nhận được lệnh, lệnh có mã TP bộ nào em sẽ tìm sheet tên bộ đó để nhập số lô chi tiết, sheet bộ nào có rồi thì nhập lô tiếp theo, bộ mới thì tạo sheet mới, anh hướng dẫn giúp em chạy code như anh viết đi ạ

Em cảm ơn anh
Code lấy hết những gì có trong file lệnh. Cứ chạy thử đi, xem nó thế nào rồi đã hỏi.
 
2. Dòng bắt đầu của dữ liệu file tổng hợp phải là dòng 7.
Anh ơi, nhờ anh xem lại giúp em, khi em chạy code thì số lô chi tiết copy từ lệnh nhưng mà không copy vào hàng 7 mà lại nằm ở hàng 6 nên làm mất tiêu đề tên ở hàng 6.
Em cảm ơn ạ
 
Anh ơi, nhờ anh xem lại giúp em, khi em chạy code thì số lô chi tiết copy từ lệnh nhưng mà không copy vào hàng 7 mà lại nằm ở hàng 6 nên làm mất tiêu đề tên ở hàng 6.
Em cảm ơn ạ
Thay:
Rich (BB code):
rw = tSh.Range("B65536").End(xlUp).Row + 1
bằng:
Rich (BB code):
                If tSh.Range("B65536").End(xlUp).Row <= 5 Then
                    rw = 7
                Else
                    rw = tSh.Range("B65536").End(xlUp).Row + 1
                End If
 
Thay:
Rich (BB code):
rw = tSh.Range("B65536").End(xlUp).Row + 1
bằng:
Rich (BB code):
                If tSh.Range("B65536").End(xlUp).Row <= 5 Then
                    rw = 7
                Else
                    rw = tSh.Range("B65536").End(xlUp).Row + 1
                End If
Dạ cảm ơn anh, em đã sửa và chạy bước đầu đúng, nhưng khi em tổng hợp lại lần 2 thì code thực hiện copy lần 2 (dữ liệu như lần 1), vậy làm sao để ghi nhớ được dữ liệu đã tổng hợp rồi mà không copy lại lần 2 ạ ( điểm nhận diện là mỗi bộ chỉ có duy nhất 1 số lô bộ- không trùng nhau)
 

File đính kèm

Dạ cảm ơn anh, em đã sửa và chạy bước đầu đúng, nhưng khi em tổng hợp lại lần 2 thì code thực hiện copy lần 2 (dữ liệu như lần 1), vậy làm sao để ghi nhớ được dữ liệu đã tổng hợp rồi mà không copy lại lần 2 ạ ( điểm nhận diện là mỗi bộ chỉ có duy nhất 1 số lô bộ- không trùng nhau)
Tôi viết code theo cách nghĩ là khi bạn nhận lệnh đính bộ thì dữ liệu trong đó là mới toàn bộ, do đó hễ đã có dữ liệu trong lệnh đính bộ là đưa vào hết. Bạn chạy lại lần 2 thì nó tổng hợp 2 lần. Người nhập dữ liệu vào lênh đính bộ phải xóa hết cái cũ đi trước khi nhập mới chứ.
 
Tôi viết code theo cách nghĩ là khi bạn nhận lệnh đính bộ thì dữ liệu trong đó là mới toàn bộ, do đó hễ đã có dữ liệu trong lệnh đính bộ là đưa vào hết. Bạn chạy lại lần 2 thì nó tổng hợp 2 lần. Người nhập dữ liệu vào lênh đính bộ phải xóa hết cái cũ đi trước khi nhập mới chứ.
Dạ bởi vì 1 file sẽ lưu nhiều lệnh cộng dồn trong 1 tháng đó ạ, khi chạy lệnh mới thì lệnh cũ đang lưu trong file cũng chạy lại
Bài đã được tự động gộp:

Tôi viết code theo cách nghĩ là khi bạn nhận lệnh đính bộ thì dữ liệu trong đó là mới toàn bộ, do đó hễ đã có dữ liệu trong lệnh đính bộ là đưa vào hết. Bạn chạy lại lần 2 thì nó tổng hợp 2 lần. Người nhập dữ liệu vào lênh đính bộ phải xóa hết cái cũ đi trước khi nhập mới chứ.
Dạ bởi vì 1 file sẽ lưu nhiều lệnh cộng dồn trong 1 tháng đó ạ, khi chạy lệnh mới thì lệnh cũ đang lưu trong file cũng chạy lại
 
@Maika8008 anh cho em xin sđt với. Cảm ơn anh đã giúp em ạ :)
 
Bạn thử lại file, chỉ ghi bộ mới.
Anh @Maika8008 xin lỗi em lại làm phiền nhờ anh xem lại file giúp em với ạ.
Hôm trước anh đã sữa code không chạy lại những bộ đã chạy ( nhận biết là bộ cùng số lô),
Mục đính tổng hợp của em là những mã bộ nào + số lô bộ đã tổng trước đó thì không chạy nữa, nhưng bây giờ mã bộ đó xuất hiện lần 2 và khác lô thì lại không tổng hợp (có 1 trường hợp trong file đính kèm là mã đó chạy đủ số lần xuất hiện còn các mã khác chỉ chạy đúng 1 lần dù lần 2 xuất hiện và khác lô)

Nhờ anh xem lại giúp em với ạ
Em cảm ơn anh
 

File đính kèm

Anh @Maika8008 xin lỗi em lại làm phiền nhờ anh xem lại file giúp em với ạ.
Hôm trước anh đã sữa code không chạy lại những bộ đã chạy ( nhận biết là bộ cùng số lô),
Mục đính tổng hợp của em là những mã bộ nào + số lô bộ đã tổng trước đó thì không chạy nữa, nhưng bây giờ mã bộ đó xuất hiện lần 2 và khác lô thì lại không tổng hợp (có 1 trường hợp trong file đính kèm là mã đó chạy đủ số lần xuất hiện còn các mã khác chỉ chạy đúng 1 lần dù lần 2 xuất hiện và khác lô)

Nhờ anh xem lại giúp em với ạ
Em cảm ơn anh
Lẽ ra cột I không được trùng chứ, sao ở đây lại cùng 2010129-20129? (tức 2 lô khác nhau sao lại cũng số?)
1652160282532.png
 
Chỗ nào bạn chỉ cụ thể ra tôi mới dò lỗi được.
1652161890688.png
ví dụ như hình trên anh gửi, dù e sửa lại lô khác thì trên lệnh có tới 6 mã TMP296 (khác lô) sau khi tổng hợp chỉ cho kết quả 1 lô như hình này, còn 5 lô còn lại không tổng hợp được ạ
 

File đính kèm

Đã sửa code. Số lô ở sheet 02005 lệnh đính bộ bị đặt sai cột rồi nghe bạn.
Cảm ơn anh, file hiện tại đã tổng hợp đầy đủ rồi ạ
Anh cho em hỏi thêm, nội dung code khi anh copy phần dữ liệu từ lệnh qua cột "ghi chú" là gì vậy ạ, em muốn thử tập viết để copy 1 số nội dung từ bên lệnh qua ạ (ví dụ em muốn bổ sung " ngày xuât", "số phiếu" vào bảng tổng hợp)
 
Cảm ơn anh, file hiện tại đã tổng hợp đầy đủ rồi ạ
Anh cho em hỏi thêm, nội dung code khi anh copy phần dữ liệu từ lệnh qua cột "ghi chú" là gì vậy ạ, em muốn thử tập viết để copy 1 số nội dung từ bên lệnh qua ạ (ví dụ em muốn bổ sung " ngày xuât", "số phiếu" vào bảng tổng hợp)
1/ Nếu cột đã cố định như số lượng thì viết tSh.Cells(rw, 3) = sSh.Range("H" & d) tức là cột 3 của dòng rw của sheet đích = ô cột H dòng d của sheet nguồn (viết là Cells(d, "H") hay là Cells(d, 8) cũng được)
2/ Còn cột ghi chú là không cố định. Nó phụ thuộc vào số cột nguyên liệu chi tiết nên phải viết là:
tSh.Cells(rw, tSh.Cells(6, 4).End(xlToRight).Column + 1) = sSh.Range("B5")
Trong đó riêng cột phải xác định bằng câu lệnh tSh.Cells(6, 4).End(xlToRight).Column + 1 có nghĩa là tại sheet đích, từ Cells(6, 4) tức là ô D6, chạy con trỏ qua phải đến khi trước ô không có số liệu thì lấy số thứ tự của cột đó + 1 (End(xlToRight) tương đương với tổ hợp phím Ctrl+mũi tên phải)
VD: Theo hình dưới thì từ D6 chạy đến F6 thì lấy số cột là 6 + 1 = 7 (vì G6 là bằng rỗng, chữ GHI CHÚ là của ô G5 bị gộp ô với G6)
1652170481542.png
 
1/ Nếu cột đã cố định như số lượng thì viết tSh.Cells(rw, 3) = sSh.Range("H" & d) tức là cột 3 của dòng rw của sheet đích = ô cột H dòng d của sheet nguồn (viết là Cells(d, "H") hay là Cells(d, 8) cũng được)
2/ Còn cột ghi chú là không cố định. Nó phụ thuộc vào số cột nguyên liệu chi tiết nên phải viết là:
tSh.Cells(rw, tSh.Cells(6, 4).End(xlToRight).Column + 1) = sSh.Range("B5")
Trong đó riêng cột phải xác định bằng câu lệnh tSh.Cells(6, 4).End(xlToRight).Column + 1 có nghĩa là tại sheet đích, từ Cells(6, 4) tức là ô D6, chạy con trỏ qua phải đến khi trước ô không có số liệu thì lấy số thứ tự của cột đó + 1 (End(xlToRight) tương đương với tổ hợp phím Ctrl+mũi tên phải)
VD: Theo hình dưới thì từ D6 chạy đến F6 thì lấy số cột là 6 + 1 = 7 (vì G6 là bằng rỗng, chữ GHI CHÚ là của ô G5 bị gộp ô với G6)
View attachment 275739
CẢM ƠN ANH RẤT NHIỀU
EM ĐÃ LÀM THÀNH CÔNG THEO NHƯ GỢI Ý CỦA ANH Ạ. :)
 

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

Back
Top Bottom