Lấy dữ liệu bảng có điều kiện (1 người xem)

Liên hệ QC

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

huudung123456

Thành viên chính thức
Tham gia
24/6/18
Bài viết
56
Được thích
11
Mình muốn nhờ mọi người giúp code một đoạn gộp chuỗi có điều kiện như sau:

8.png

Tức khi mình nhập các số 2, 1, 3,... vào các cột thì nó tự động gom dữ liệu vào cột bên cạnh. Tức các dữ liệu tên máy, công suất sẽ cố định, chỉ có số lượng máy thay đổi. Tuy nhiên, với ô không nhập nó sẽ không đưa vào. Ví dụ như ở trên khi khoan tay f42 không nhập vào thì ở ô tổng hợp sẽ không có nó. Các dữ liệu cột sẽ được ngăn cách bởi dấu / trong khi dữ liệu từng ô tương ứng được ngăn cách bằng dấu "-" như minh họa. Cái này ở trong Sheet LIST BB ở file.

Nhờ thứ hai là tách chuỗi.

Với chuỗi như trên Máy đào-125m3-2/Máy ủi-110CV-1/Đầm cóc- -6/Ô tô-7T-2/Cần cẩu-16T-1/Trạm trộn-30m3/h-1/Ô tô-12T-4/Đầm bàn- -1/Ô tô-20T-1

Mình cần một hàm tách chuỗi để đưa lần lượt vào các ô Loại thiết bị, Công Suất và Số lượng yêu cầu tại Sheet VL

1.png
Bài cũ mình nhờ cái khác nhưng giải thích nó khó quá và phải can thiệp bằng VBA nên thôi, chỉnh lại nội dung bài theo hướng khác để mọi người dễ hiểu hơn. Mình cảm ơn và xin lỗi nếu bài cũ mình giải thích chưa rõ ràng.
 

File đính kèm

Lần chỉnh sửa cuối:
Tại ô C35 sheet VL nhập
=IF(ISERROR(INDEX('LIST BB'!$Q$8:$Z$8,1,SMALL(IF('LIST BB'!$Q$13:$Z$13<>"",COLUMN('LIST BB'!$Q$8:$Z$8),1000)-COLUMN('LIST BB'!$Q$8)+1,ROW(A1)))),"",INDEX('LIST BB'!$Q$8:$Z$8,1,SMALL(IF('LIST BB'!$Q$13:$Z$13<>"",COLUMN('LIST BB'!$Q$8:$Z$8),1000)-COLUMN('LIST BB'!$Q$8)+1,ROW(A1))))
rồi ấn Ctrl+Shift+Enter. Xong rồi kéo xuống hết bảng
Các đơn vị và số lượng sử dụng hàm HLookup để xử lý theo cột C
 
Tại ô C35 sheet VL nhập
=IF(ISERROR(INDEX('LIST BB'!$Q$8:$Z$8,1,SMALL(IF('LIST BB'!$Q$13:$Z$13<>"",COLUMN('LIST BB'!$Q$8:$Z$8),1000)-COLUMN('LIST BB'!$Q$8)+1,ROW(A1)))),"",INDEX('LIST BB'!$Q$8:$Z$8,1,SMALL(IF('LIST BB'!$Q$13:$Z$13<>"",COLUMN('LIST BB'!$Q$8:$Z$8),1000)-COLUMN('LIST BB'!$Q$8)+1,ROW(A1))))
rồi ấn Ctrl+Shift+Enter. Xong rồi kéo xuống hết bảng
Các đơn vị và số lượng sử dụng hàm HLookup để xử lý theo cột C
Bạn mới chỉ làm được cho 1 dòng à. Mình muốn khi chuyển sang biên bản khác, mình nhập sang dòng khác nó cũng nhảy theo luôn mà. Tức biên bản số 2 mình sẽ nhập như vậy, biên bản số 4 sẽ nhập số lượng máy khác.

Hoặc bạn có thể giúp mình chuyển gộp các đối tượng này thành chuỗi như hình được không. Sau đó ở bảng bên Sheet VL tạo hàm tách chuỗi để điền từng giá trị ngăn cách bởi từng dấu/ vào từng hàng và từng đối tượng ngăn cách bởi dấu - vào từng ô

Ý mình là định link dòng gộp này vào ô Tiêu chuẩn, như vậy nó cũng sẽ thay đổi khi mình chuyển qua biên bản số khác và có dữ liệu để chỉnh sửa trong bảng tại Sheet VLfe.png
 
Lần chỉnh sửa cuối:
thì trong iêu cầu bạn nói sheet VL mà. Vậy cụ thể là thế nào.
1. Nhập liệu ở đâu và như thế nào (excel có tên hàng và cột): Trong đó sheet List BB q8:z13 thấy có 1 hàng số lượng
2. Lấy dữ liệu như nào, ở đâu.
 
thì trong iêu cầu bạn nói sheet VL mà. Vậy cụ thể là thế nào.
1. Nhập liệu ở đâu và như thế nào (excel có tên hàng và cột): Trong đó sheet List BB q8:z13 thấy có 1 hàng số lượng
2. Lấy dữ liệu như nào, ở đâu.
Tức cứ mỗi biên bản ví dụ 01/ĐVH1/MMTB mình sẽ nhập một số lượng máy vào và nó link qua bảng bên kia. Đến biên bản 02/DDVH?MMTB lại nhập tiếp một hàng số lượng máy nữa nhưng con số sẽ khác hoặc loại máy thay đổi. Và tất nhiên khi chuyển biên bản, bấm danh sách số ở phía trên thì dữ liệu trong bảng cũng sẽ thay đổi.
 
Chắc ít ai hiểu được bạn nói gì.
 
thì trong iêu cầu bạn nói sheet VL mà. Vậy cụ thể là thế nào.
1. Nhập liệu ở đâu và như thế nào (excel có tên hàng và cột): Trong đó sheet List BB q8:z13 thấy có 1 hàng số lượng
2. Lấy dữ liệu như nào, ở đâu.

Bạn hiểu nhầm ý mình rồi. với biên bản 01/ĐVH1/MMTB thì mình nhập như hình dưới

3.png

Thì biên bản với số bấm 2 sẽ ra như hình

fe.png

Và khi mình bấm sang số 4 ở ô phía trên SHeet VL với dữ liệu nhập ở 02/ĐVH/MMTB thì sẽ ra kết quả

4.png

Thế nên mình mới nói là cần phải can thiệp vào VBA, hoặc mình có thể tận dụng cái có sẵn là ô Tiêu chuẩn vì nó cũng sẽ thay đổi nội dung theo mình nhập khi mình chuyển biên bản. Nên mình mới có ý định gom dữ liệu thay đổi vào một ô để nó chuyển qua sheet VL, sau đó lại tách dữ liệu ra để nhập vào từng ô.
Bài đã được tự động gộp:

5.png

Cái này nó cũng giống như Vlookup vậy ấy bạn. Nhưng bản gốc nó xài VBA nên mình không biết chinh sao. Tức khi bấm chọn biên bản số 2 thì sẽ tương ứng với lấy dữ liệu ở hàng thứ tự 2 mình đánh dấu. Các dữ liệu này được đổ qua sheet VL. Khi mình chọn số khác thì nó cũng thay đổi theo.

6.png
 
Lần chỉnh sửa cuối:
Vậy dữ liệu ở sheet VL hiện đang được điền bằng cách nào khi click đổi giá trị ở combobox (Mình đang k dùng máy tính)
 
Vậy dữ liệu ở sheet VL hiện đang được điền bằng cách nào khi click đổi giá trị ở combobox (Mình đang k dùng máy tính)
Dữ liệu ở Sheet VL được đổ qua từ Sheet LIST BB. Còn dữ liệu Sheet BB thì mình nhập tay Các dữ liệu đã nhập sẽ được đổ qua Sheet VL. Nhưng riêng biên bản Máy móc nó yêu cầu khó hơn là phải đưa số lượng máy móc vào. Tùy vào từng hàng mà số lượng máy móc nó khác nhau. Nên mình mới phải nhập số liệu máy móc sang một dòng khác để đưa nó qua Sheet VL nhập vào bảng. Chứ số lượng biên bản rất là nhiều. Mà ô để chứa nó bản gốc chỉ cho 1 bảng. Hơn nữa, nếu nhập tay từng ô cũng sẽ rất lâu thay vì chỉ phải nhập số lượng máy theo từng dòng. Mong bạn giúp cho

Trong Sheet VL, khi nhấp vào ô Edit bạn sẽ thấy vị trí các ô sẽ thay đổi dữ liệu khi chuyển số như lênh Vlookup. Các vị trí thay đổi này dữ liệu được lấy từ Sheet LIST BB

Thí dụ như dữ liệu: Đối tượng kiểm tra nó sẽ lấy ở cột 3 trong Sheet LIST BB, Biên bản số là cột 4, rồi ngày tháng thời gian tương tự vậy. Ô tiêu chuẩn cũng sẽ thay đổi. Do ô Tiêu chuẩn biên bản máy móc nó không cần nên mình có thể tận dụng nó để đưa dữ liệu máy móc qua Sheet VL. RỒi tách nó vào từng ô.

File này Vlook UP nó xài bằng VBA nên mình gà VBA nên không biết chỉnh
 
Lần chỉnh sửa cuối:
Góp ý: Lúc đầu mà nội dung bạn nói rõ ràng, cụ thể, dễ hiểu (chứ bạn nên nghĩ ít ai ngồi ngâm kíu cái file của bạn làm những gì) và không nên nêu tình trạng GẤP của bạn lên thì mọi người có thể đã code giúp bạn xong rồi.
 
Mình đang chế biên bản nghiệm thu theo một mẫu có sẵn. Tuy nhiên, đến biên bản nghiệm thu máy móc thì gặp vấn đề đó là mình không thể nhập tên máy, và số lượng vào ô khi nó chỉ cho mình 1 bảng để nhập. Như trong hình. Nên mình mong các chuyên gia có thể giúp mình chỉnh sửa lại mẫu này vì mình cực gà VBA (gần như =0), mà công việc thì đang gấp.

Mình cần đưa dữ liệu vào bảng dưới tại Sheet VL. Dữ liệu được nhập ở Sheet LIST BB. Tuy nhiên, các sheet chỉ các biên bản kiểm tra máy móc mới nhập các dữ liệu này. Những công tác nào không nhập vào số máy thì sẽ bỏ qua và ghi máy tiếp theo trong hàng. Thí dụ như khoan tay không có, thì nó không ghi mà thay bằng ô tô 7 T vào. Mà mình thì không biết chỉnh lại VBA của biên bản (do đi xin trên mạng) để làm sao chuyển biên bản thì nó cũng chuyển theo. Mong anh em sửa giúp.

View attachment 199915

View attachment 199917
Góp ý cho bạn:
1/ Sheet LIST BB: Vùng L: Z bạn nên có dữ liệu khoảng 10 cái biên bản để người giúp có cái mà thử code (File của bạn chỉ có 1 dòng dữ liệu là 13).
2/ Sheet VL (biên bản): Bạn nên đưa dữ liệu thực tế của 1 cái biên bản vào cái bảng mẫu (số liệu bạn nhập chưa đúng với BB số 1) với các loại máy móc, phương tiện số lượng, tình trạng và lường trước số dòng có thể sảy ra khi lập biên bản.
3/ Bạn nên cụ thể Số biên bản lấy từ cột nào, trong Sheet LIST BB có 2 cột K và M (tôi không xem code).

Nếu bạn giải thích cụ thể, có dữ liệu đầy đủ, rõ ràng thì người giúp có hiểu, biết mới có giải pháp tốt nhất cho bạn và có thể thay thế 1 rừng code của bạn với code khác đơn giản, hiệu quả hơn.
 
Lần chỉnh sửa cuối:
Góp ý: Lúc đầu mà nội dung bạn nói rõ ràng, cụ thể, dễ hiểu (chứ bạn nên nghĩ ít ai ngồi ngâm kíu cái file của bạn làm những gì) và không nên nêu tình trạng GẤP của bạn lên thì mọi người có thể đã code giúp bạn xong rồi.
Mình đang trình bày lại
Góp ý cho bạn:
1/ Sheet LIST BB: Vùng L: Z bạn nên có dữ liệu khoảng 10 cái biên bản để người giúp có cái mà thử code (File của bạn chỉ có 1 dòng dữ liệu là 13).
2/ Sheet VL (biên bản): Bạn nên đưa dữ liệu thực tế của 1 cái biên bản vào cái bảng mẫu (số liệu bạn nhập chưa đúng với BB số 1) với các loại máy móc, phương tiện số lượng, tình trạng và lường trước số dòng có thể sảy ra khi lập biên bản.
3/ Bạn nên cụ thể Số biên bản lấy từ cột nào, trong Sheet LIST BB có 2 cột K và M (tôi không xem code).

Nếu bạn giải thích cụ thể, có dữ liệu đầy đủ, rõ ràng thì người giúp có hiểu, biết mới có giải pháp tốt nhất cho bạn và có thể thay thế 1 rừng code của bạn với code khác đơn giản, hiệu quả hơn.

Số biên bản để bấm chuyển là lấy ở cột A

Mình cảm ơn hai bạn.
 
Mình đang trình bày lại
Số biên bản để bấm chuyển là lấy ở cột A
Mình cảm ơn hai bạn.
Bài 11 tôi nói rồi, tôi không xem code, nên tôi mới hỏi 2 cột K và M ở Sheet LIST BB nó là cái gì? Có nghĩa là số Biên bản bạn dựa vào cột nào trong 2 cột này.
Tôi hỏi cái gì thì bạn cứ trả lời thẳng vào cái đó, vì có thể ý tưởng và cách làm của tôi ngược lại hoàn toàn với cái bạn đang làm nhưng cũng có thể ra được kết quả mong muốn.
Bài 11 tôi nêu vầy:
người giúp có hiểu, biết mới có giải pháp tốt nhất cho bạn và có thể thay thế 1 rừng code của bạn
Có nghĩa là nếu tôi giúp thì sẽ bỏ toàn bộ code trong File của bạn và làm lại và thay bằng 1 đoạn code mới có thể ra tất cả các loại biên bản cùng lúc và cũng chẳng cần đến việc sử dụng nhiều Userform như cách bạn làm.
 
Bài 11 tôi nói rồi, tôi không xem code, nên tôi mới hỏi 2 cột K và M ở Sheet LIST BB nó là cái gì? Có nghĩa là số Biên bản bạn dựa vào cột nào trong 2 cột này.
Tôi hỏi cái gì thì bạn cứ trả lời thẳng vào cái đó, vì có thể ý tưởng và cách làm của tôi ngược lại hoàn toàn với cái bạn đang làm nhưng cũng có thể ra được kết quả mong muốn.
Bài 11 tôi nêu vầy:

Có nghĩa là nếu tôi giúp thì sẽ bỏ toàn bộ code trong File của bạn và làm lại và thay bằng 1 đoạn code mới có thể ra tất cả các loại biên bản cùng lúc và cũng chẳng cần đến việc sử dụng nhiều Userform như cách bạn làm.

Trước tiên xin cảm ơn anh đã nhiệt tình hỗ trợ ạ.

Cột K em ghi các số vào để sau này tách công việc ra để in danh mục thôi ạ. Còn cột M là số biên bản nghiệm thu ạ. Nó hợp với các cột N, O để ra Tổ hợp số biên bản nghiệm thu ở cột D. Tại bên công trình em nó đòi ghi số biên bản dạng như vậy. Cột M là số thứ tự của số biên bản nghiệm thu, N là viết tắt hạng mục, O là viết tắt công việc
 
Trước tiên xin cảm ơn anh đã nhiệt tình hỗ trợ ạ.

Cột K em ghi các số vào để sau này tách công việc ra để in danh mục thôi ạ. Còn cột M là số biên bản nghiệm thu ạ. Nó hợp với các cột N, O để ra Tổ hợp số biên bản nghiệm thu ở cột D. Tại bên công trình em nó đòi ghi số biên bản dạng như vậy. Cột M là số thứ tự của số biên bản nghiệm thu, N là viết tắt hạng mục, O là viết tắt công việc
Giải thích như thế này thì tôi đã hiểu.
1/ Theo suy nghĩ của tôi muốn tự động hóa thì sẽ thay đổi lại cấu trúc 1 tí.
2/ Ý của bạn là muốn giữ nguyên cái mẫu theo quy định thì nó gồm những cột nào? Bạn phải cho biết mới tùy nghi ứng biến mà không làm ảnh hưởng đến cấu trúc của cái mẫu.
3/ Lưu ý với bạn là nếu dùng in biên bản hàng loạt thì trong File mới dùng đến Worksheet_Change, nếu sử dụng bình thường thì không nên sử dụng Worksheet_Change nếu File có dung lượng lớn do chứa nhiều dữ liệu sẽ làm cho File chậm chạp.
 
Lần chỉnh sửa cuối:
d
Giải thích như thế này thì tôi đã hiểu.
1/ Theo suy nghĩ của tôi muốn tự động hóa thì sẽ thay đổi lại cấu trúc 1 tí.
2/ Ý của bạn là muốn giữ nguyên cái mẫu theo quy định thì nó gồm những cột nào? Bạn phải cho biết mới tùy nghi ứng biến mà không làm ảnh hưởng đến cấu trúc của cái mẫu.
3/ Lưu ý với bạn là nếu dùng in biên bản hàng loạt thì trong File mới dùng đến Worksheet_Change, nếu sử dụng bình thường thì không nên sử dụng Worksheet_Change nếu File có dung lượng lớn do chứa nhiều dữ liệu sẽ làm cho File chậm chạp.

Dạ với Sheet LIST BB thì cần giữ các nội dung ở các cột từ C đến J. Nó là dữ liệu để đổ qua các biên bản khác như NB, PYC, A-B. Cột A là để đánh số thứ tự để chuyển biên bản. Còn B là đánh dấu để in ấn ạ.

Nếu mắc công anh quá thì anh giúp em cái hàm nó đơn giản như em đã sửa ở bài đầu tiên là được thôi ạ. Nó hợp chuỗi, tách chuỗi ạ. Em cảm ơn.
 
d


Dạ với Sheet LIST BB thì cần giữ các nội dung ở các cột từ C đến J. Nó là dữ liệu để đổ qua các biên bản khác như NB, PYC, A-B. Cột A là để đánh số thứ tự để chuyển biên bản. Còn B là đánh dấu để in ấn ạ.

Nếu mắc công anh quá thì anh giúp em cái hàm nó đơn giản như em đã sửa ở bài đầu tiên là được thôi ạ. Nó hợp chuỗi, tách chuỗi ạ. Em cảm ơn.
Góp ý trên chỉ là ý tưởng dùng code với Advanced Filter, sau khi chọn biên bản thì nó gán vào biên bản thôi.
Để tôi nghiên cứu lại nội dung các biên bản, rồi mới sửa lại cấu trúc Sheet LIST BB một tí cho phù hợp với tất cả các biên bản rồi mới viết code làm sao áp dụng code đó cho nhiều biên bản cùng lúc.
 
Ngon luôn rồi ạ. Em cảm ơn anh rất, rất nhiều ạ. Chúc anh sức khỏe và nhiều thành công trong công việc
 
Ngon luôn rồi ạ. Em cảm ơn anh rất, rất nhiều ạ. Chúc anh sức khỏe và nhiều thành công trong công việc
-Cái này thì cũng không linh hoạt khi vùng máy móc cột Q:Z có nhiều hơn các máy hiện có thì phải set lại vùng dữ liệu chứa máy đó.
-Bạn nên freezen ở hàng 5 để khi cuộn không mất điều khiển bên trên.
 
Web KT

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

Back
Top Bottom