Xin code Tìm và xóa dữ liệu trên file csv.

Trạng thái
Không mở trả lời sau này.

Ốc Yêu

Yêu THVBA
Em chào cả nhà. Trong file đính kèm e có 1 file main, 1 folder kết quả chứa file kết quả định dạng csv.
Em đang muốn 1 code với nội dung như sau mong cả nhà giúp đỡ ạ.
Trong file CSV có rất nhiều lable file thực tế có thể lên đến 400-500 lable và khi phân tích đôi khi ta chỉ cần 10-20 label tùy loại. Theo yêu cầu thì cần có 2 chức năng như sau ạ.
+Option 1: Giữ lại tất cả các cột của file CSV có label tương ứng với sheet Option 1.( Các cột khác xóa hết)
+ Option 2: Xóa tất cả các cột của file CSV có label tương ứng với sheest Option 2.
Trình tự như sau ạ:
B1: Chon foldel chứa file kết quả, Ví dụ folder sensor A.
B2: Chọn Option 1 hoặc 2
B3: Chọn sensor cần xử lý.- Các label tương ứng được load ra ở Sheets Main.
B4. tại thư mục chứa file Macro Tạo foldel Report. Trong Report tạo 1 folder Sensor_name và lưu file CSV đã xử lý vào đó.
Link file

Thanh ciu cả nhà !!!!!!!!!!!!!!!!!
 

Euler

Administrator
Thành viên BQT
Em chào anh. Anh có thể xác nhận nội dung dưới đây giúp em được không?
File kết quả sensor:
Anh nói là giữ lại tất cả các cột có label tương ứng.
Em thấy rằng cột 2 không có label nào. Cột 3 cũng không có label nào.
Tất cả các label đều được viết trên cột A theo cấu trúc: Sensor_A_1;Sensor_A_2;Sensor_A_3;...
Bạn cần đăng nhập để thấy hình ảnh

Em hiểu như sau: Từ cells A1 em lấy chuỗi ký tự Sensor_A_1;Sensor_A_2;Sensor_A_3;...
Các label có vị trí tương ứng trong chuỗi này thì ứng với cột đó. Ví dụ : Sensor_A_1 có vị trí số 1 trong chuỗi nên em hiểu cột 1 là Sensor_A_1.
Tương tự: Sensor_A_2 có vị trí số 2 trong chuỗi nên em hiểu cột 2 là Sensor_A_2
...
Câu hỏi 1: Vậy em hiểu như trên có đúng không?
Câu hỏi 2: Có khi nào chuỗi ký tự có 100 label, nhưng data thực tế chỉ có 99 cột dữ liệu hay không? File này là máy tạo ra hả anh? Nếu máy tạo ra thì mình yên tâm về số lượng label và số lượng cột data là khớp nhau. Nếu có được thông tin này thì chương trình không phải xử lý tình huống này nữa.
Câu hỏi 3: Anh nói rằng chọn folder có file kết quả, ví dụ folder sensor A. Em hiểu rằng em sẽ tìm tất cả các file trong folder A và xử lý chúng.
Trường hợp trong folder sensor A lại tồn tại một sub folder, bên trong sub folder này lại tiếp tục chứa file thì em không phải xử lý. Điều em hiểu như trên là đúng hay sai?
Câu hỏi 4: Chọn Option 1 hoặc 2. Tức là người dùng luôn luôn chỉ có thể chọn một Option. Không thể có chuyện cùng một lúc chọn hai Option hoặc là không chọn Option nào mà chạy chương trình, đúng không ạ.
Câu hỏi 5: Chọn sensor cần xử lý. Tại một thời điểm người dùng chỉ được chọn một sensor thôi hả anh? Ví dụ sensor A. Nếu như thiết kế chương trình cho phép người dùng chọn cùng lúc nhiều sensor thì ý anh như thế nào?
Bạn cần đăng nhập để thấy hình ảnh

Câu hỏi 6: Sheet option đều có cấu trúc như anh đã đưa. Dòng dữ liệu bắt đầu luôn là dòng số 3 đúng không? Các cột data được viết liên tiếp. Không có chuyện viết cách nhau bởi một cột trống đúng không? Tên sheet là cố định: Option_1 hoặc Option_2
Bạn cần đăng nhập để thấy hình ảnh

Câu hỏi 7: Giả sử Sensor A là cái cần xóa, nhưng nó nằm trên cột 1. Bây giờ xóa đi, data còn lại là:
Bạn cần đăng nhập để thấy hình ảnh

cells A1 chứa thông tin chuỗi sensor bây giờ bị xóa đi, mặc nhiên data còn lại không biết là của cái nào nữa rồi.
Nhìn vào đây thì đâu có hiểu cột dữ liệu nào là của sensor nào nữa. Kết quả output như thế có gây khó khăn cho anh không?
Em đề xuất, trước khi xóa thì thực hiện việc ghi sensor. Dữ liệu của sensor nào thì ta ghi sensor đó. Ví dụ:
Bạn cần đăng nhập để thấy hình ảnh

Ý anh thế nào?
Câu hỏi 8: Việc hoàn thành chương trình này có thể sẽ xong vào cuối tuần này. Điều đó có gây bất lợi cho công việc của anh không? Anh mong muốn xong vào khi nào?
 

Ốc Yêu

Yêu THVBA
Em chào anh. Anh có thể xác nhận nội dung dưới đây giúp em được không?
File kết quả sensor:
Anh nói là giữ lại tất cả các cột có label tương ứng.
Em thấy rằng cột 2 không có label nào. Cột 3 cũng không có label nào.
Tất cả các label đều được viết trên cột A theo cấu trúc: Sensor_A_1;Sensor_A_2;Sensor_A_3;...
Bạn cần đăng nhập để thấy hình ảnh

Em hiểu như sau: Từ cells A1 em lấy chuỗi ký tự Sensor_A_1;Sensor_A_2;Sensor_A_3;...
Các label có vị trí tương ứng trong chuỗi này thì ứng với cột đó. Ví dụ : Sensor_A_1 có vị trí số 1 trong chuỗi nên em hiểu cột 1 là Sensor_A_1.
Tương tự: Sensor_A_2 có vị trí số 2 trong chuỗi nên em hiểu cột 2 là Sensor_A_2
...
Câu hỏi 1: Vậy em hiểu như trên có đúng không?
Câu hỏi 2: Có khi nào chuỗi ký tự có 100 label, nhưng data thực tế chỉ có 99 cột dữ liệu hay không? File này là máy tạo ra hả anh? Nếu máy tạo ra thì mình yên tâm về số lượng label và số lượng cột data là khớp nhau. Nếu có được thông tin này thì chương trình không phải xử lý tình huống này nữa.
Câu hỏi 3: Anh nói rằng chọn folder có file kết quả, ví dụ folder sensor A. Em hiểu rằng em sẽ tìm tất cả các file trong folder A và xử lý chúng.
Trường hợp trong folder sensor A lại tồn tại một sub folder, bên trong sub folder này lại tiếp tục chứa file thì em không phải xử lý. Điều em hiểu như trên là đúng hay sai?
Câu hỏi 4: Chọn Option 1 hoặc 2. Tức là người dùng luôn luôn chỉ có thể chọn một Option. Không thể có chuyện cùng một lúc chọn hai Option hoặc là không chọn Option nào mà chạy chương trình, đúng không ạ.
Câu hỏi 5: Chọn sensor cần xử lý. Tại một thời điểm người dùng chỉ được chọn một sensor thôi hả anh? Ví dụ sensor A. Nếu như thiết kế chương trình cho phép người dùng chọn cùng lúc nhiều sensor thì ý anh như thế nào?
Bạn cần đăng nhập để thấy hình ảnh

Câu hỏi 6: Sheet option đều có cấu trúc như anh đã đưa. Dòng dữ liệu bắt đầu luôn là dòng số 3 đúng không? Các cột data được viết liên tiếp. Không có chuyện viết cách nhau bởi một cột trống đúng không? Tên sheet là cố định: Option_1 hoặc Option_2
Bạn cần đăng nhập để thấy hình ảnh

Câu hỏi 7: Giả sử Sensor A là cái cần xóa, nhưng nó nằm trên cột 1. Bây giờ xóa đi, data còn lại là:
Bạn cần đăng nhập để thấy hình ảnh

cells A1 chứa thông tin chuỗi sensor bây giờ bị xóa đi, mặc nhiên data còn lại không biết là của cái nào nữa rồi.
Nhìn vào đây thì đâu có hiểu cột dữ liệu nào là của sensor nào nữa. Kết quả output như thế có gây khó khăn cho anh không?
Em đề xuất, trước khi xóa thì thực hiện việc ghi sensor. Dữ liệu của sensor nào thì ta ghi sensor đó. Ví dụ:
Bạn cần đăng nhập để thấy hình ảnh

Ý anh thế nào?
Câu hỏi 8: Việc hoàn thành chương trình này có thể sẽ xong vào cuối tuần này. Điều đó có gây bất lợi cho công việc của anh không? Anh mong muốn xong vào khi nào?
Chào bạn, cám ơn bạn đã quan tâm và giúp m nhé.
Đầu tiên m xin giải thích lại cấu trúc file và mục đích của m rồi m sẽ trả lời các câu hỏi của bạn sau nhé.
File csv là do máy tạo ra có định dạng cố định như file result m gửi ở cell(i,1) là các label thực tế. File thực tế có thể lên đến 500 lable. hiện tại m đang đặt là đại diện là sensorA_1 vv.
Giờ bạn nhìn vào file Main. Vì phục vụ cho mục đích khác nhau nên m chia ra làm 2 chức năng Op1 và Op2.
Cấu trúc của sheets Op 1 và 2 giông nhau. dòng 3 là sensor name từ dòng 4 là các label của sensor ( chính là dòng số 1 trong file Csv), các label do m tự điền vì vậy sẽ k xuất hiện ô rỗng giữa các cells nhé.
-Việc đầu tiên là Add tất cả sensor name vào 1 list box ở sheets main range(C4). Số lượng sensor ở 2 Op1 và Op2 m sẽ tạo ra giống nhau nên chỉ cần add 1 lần là được nhé.
- Việc lấy các lable cần giữ hoặc cần xóa là do chủ đích hoặc do từng loại sensor vì vậy nó là ngẫu nhiên k theo quy luật nào cả.
*Tóm lại là, bạn làm cách nào cũng được miễn là sẽ ra kết quả như sau:
-Trong 1 lúc chỉ thực hiện Op1 hoặc Op2 và thực hiện với 1 sensor. Vì 1 ss có khi tới 20-30 file và mỗi file khoảng 100-150MB vì vậy dữ liệu khá nặng rồi.
+click chọn folder . Tất cả file CSV trong folder sẽ được đưa vào thực hiện trong macro.
+ có thể chọn sensor từ listbox. Dữ liệu ở sheets Op1 và Op2 có thể được cập nhật sau nếu thêm 1 sensor mới vào.
+ đối với OP1; Ví dụ với file result root1: sau khi chạy xong file chỉ giữ lại các cột có label giống với các label tương ứng sensor A tại sheets Op1
+ đối với OP2; Ví dụ với file result root1: sau khi chạy xong file sẽ xóa hết các cột có label giống với các label tương ứng sensor A tại sheets Op2
+Khi lưu file không làm thay đổi file gốc. tạo ra 1 folder Report trong report tạo 1 folder với tên là sensor đang thực hiện rồi lưu file mới vào đó. Định dạng file lưu là Csv.
M có thêm 2 file output mình mong muốn nhé.
Output 1; Giữ lại 24 nhãn m muốn. từ 1 đến 24
Output 2; Xóa 24 nhãn m muốn. từ 1 đến 24
Việc giải thích có hơi loằng ngoằng nếu bạn chưa hiểu chỗ nào cứ comment nhé. Bạn rảnh khi nào thì làm hộ m, kì hạn k quan trọng @@
thanh ciu nha!!!!!!.
 

Euler

Administrator
Thành viên BQT
Anh đọc lại các câu hỏi của em và trả lời vào từng câu hỏi có được không? Anh không hiểu câu hỏi nào có thể phản hồi lại.
Ngoài ra em vừa xem file output của anh thì như vậy chương trình phải tính được là còn nhãn nào để tạo ra một string, ghi vào cells A1 nhỉ.
Bạn cần đăng nhập để thấy hình ảnh
 

vbano1

SMod
Thành viên BQT
Bạn trả lời giúp mình câu hỏi này nhé. Mình chưa hiểu mục đích của bạn @Ốc Yêu
Bạn cần đăng nhập để thấy hình ảnh
 

Ốc Yêu

Yêu THVBA
Bạn trả lời giúp mình câu hỏi này nhé. Mình chưa hiểu mục đích của bạn @Ốc Yêu
Bạn cần đăng nhập để thấy hình ảnh
Chào bạn, cho load cái list này ra mục đích để kiểm tra lại các lable 1 lần nữa. Vì project này có thể khác nhãn vs project khác. k phải để cho đẹp nhé. Nếu thừa hoặc thiếu thì m sẽ thêm hoặc xóa ở sheets Op1 hoặc 2.
Thanks!
 

Ốc Yêu

Yêu THVBA
Anh đọc lại các câu hỏi của em và trả lời vào từng câu hỏi có được không? Anh không hiểu câu hỏi nào có thể phản hồi lại.
Ngoài ra em vừa xem file output của anh thì như vậy chương trình phải tính được là còn nhãn nào để tạo ra một string, ghi vào cells A1 nhỉ.
Bạn cần đăng nhập để thấy hình ảnh
Chào bạn, cells A1 của m là nhãn Sensor_A_1 mà. Làm gì có chuỗi dài như của bạn đâu nhỉ. Còn bạn hỏi m làm sao để ctrinh tính được thì m cũng đầu hàng nha. Yêu cầu như thế mà. Bạn có thể ghi chuỗi ra 1 file khác, 1 dòng khác hoặc 1 mảng khác cũng được mà.
 

Euler

Administrator
Thành viên BQT
Chào bạn, cells A1 của m là nhãn Sensor_A_1 mà. Làm gì có chuỗi dài như của bạn đâu nhỉ. Còn bạn hỏi m làm sao để ctrinh tính được thì m cũng đầu hàng nha. Yêu cầu như thế mà. Bạn có thể ghi chuỗi ra 1 file khác, 1 dòng khác hoặc 1 mảng khác cũng được mà.
Anh xem lại file anh gửi cho mọi người ấy. Kéo rộng cái cột A ra hết cỡ xem nó dài như nào.
Bạn cần đăng nhập để thấy hình ảnh
 

Ốc Yêu

Yêu THVBA
Anh đọc lại các câu hỏi của em và trả lời vào từng câu hỏi có được không? Anh không hiểu câu hỏi nào có thể phản hồi lại.
Ngoài ra em vừa xem file output của anh thì như vậy chương trình phải tính được là còn nhãn nào để tạo ra một string, ghi vào cells A1 nhỉ.
Bạn cần đăng nhập để thấy hình ảnh
M trả lời chi tiết câu hỏi của bạn nhé
Câu 1: Bạn k được sửa định dạng file vì như thế sẽ dẫn đến sai dữ liệu. Thực tế là m k thể biết được cái nhãn m cần giữ nó ở vị trí bao nhiêu. m chỉ biết có ở trong file thôi nhé. chỉ biết là nếu nó k có trong danh sách thì xóa đi hoặc giữ lại tùy Op.
Câu 2: File do máy tạo. Nhãn do người cần tùy mục đích. các Label đã được kiểm tra chính xác khi nhập vào list ở Op1 và 2. Chương trình cứ thực hiện đúng là được. Nếu có lỗi do sai label hoặc gì đó thì do thằng tạo dữ liệu sai.
Câu 3: Đúng. Dữ liệu xử lý trong folder A. sub k xử lý.
Câu 4 và 5: Chỉ xử lý 1 trong 2 chức năng với 1 sensor trong 1 lần. Để xử lý dữ liệu cho 3 4 sensor cùng lúc thì rất phức tạp do các nhãn là khác nhau và khối lượng dữ liệu lớn. Vả lại cũng k có nhiều dữ liệu như thế cùng 1 lúc. vì vậy 1 vs 1 cho nhẹ nhàng nhé.
Câu 6. Tên sheets cố định. Đảm bảo k có dòng trống cột trống giữa các label với nhau. Nếu sai do thằng nhập dữ liệu, Chương trình k có lỗi.
Câu 7: Theo như hình của bạn thì các nhãn ở cells(i,1) mất hết rồi. sau khi lưu lại thì sẽ k biết cái nào ra cái nào nữa.
Câu 8: Tùy ý bạn nhé, giúp m là tốt lắm rồi.
Thanh ciu !!!!!!!!!
 

Euler

Administrator
Thành viên BQT
M trả lời chi tiết câu hỏi của bạn nhé
Câu 1: Bạn k được sửa định dạng file vì như thế sẽ dẫn đến sai dữ liệu. Thực tế là m k thể biết được cái nhãn m cần giữ nó ở vị trí bao nhiêu. m chỉ biết có ở trong file thôi nhé. chỉ biết là nếu nó k có trong danh sách thì xóa đi hoặc giữ lại tùy Op.
Em dựa vào điều kiện nào để biết Sensor_A_2 ở cột nào? Anh hãy chỉ rõ bằng hình ảnh giúp em.
 

Ốc Yêu

Yêu THVBA
Em dựa vào điều kiện nào để biết Sensor_A_2 ở cột nào? Anh hãy chỉ rõ bằng hình ảnh giúp em.
Thực tế là m không thể biết là Sensor_A_2 nằm ở cột nào trong file Csv. Mình chỉ biết được rằng trong khoảng 500-600 cột dữ liệu có cái nhãn đó thôi. Vì tùy điều kiện lúc test mà thứ tự các label nó thay đổi.
 

tuhocvba

Administrator
Thành viên BQT
Hic file nào vậy bạn, ở cột A1 chỉ có 1 nhãn duy nhất thôi là ssA1 thôi mà. hix
Chú xem lại file đi. Anh mở lên thì đúng là chỉ có nhãn ghi ở cells A1 thôi. Chứ cells B1,C1 làm gì có. Hay cách mở của anh cũng có vấn đề à? Double click mở file thôi.
Bạn cần đăng nhập để thấy hình ảnh
 

Euler

Administrator
Thành viên BQT
Thực tế là m không thể biết là Sensor_A_2 nằm ở cột nào trong file Csv. Mình chỉ biết được rằng trong khoảng 500-600 cột dữ liệu có cái nhãn đó thôi. Vì tùy điều kiện lúc test mà thứ tự các label nó thay đổi.
Nếu phải làm bằng tay, nhận chỉ thị xóa Sensor_A_2 thì anh xóa cột nào? Anh không làm được bằng tay thì máy hiểu thế nào để làm?
 

tuhocvba

Administrator
Thành viên BQT
Bạn cần đăng nhập để thấy hình ảnh

File như thế này mà a!!
Thế file trên mạng bị sao à? Máy anh mở nó cũng hiển thị dồn hết vào A1. Mà anh có làm gì đâu. double click thôi. Như vậy vấn đề hiển thị phải làm rõ nguyên nhân trước, không thì lại tùm lum dữ liệu. Thế chú mở thế nào. Mà dùng excel bản bao nhiêu đấy? 2013 à? Dùng camtasia quay màn hình, convert ra file gif cho anh và mọi người xem nào.
 

Euler

Administrator
Thành viên BQT
File đây cơ mà a!! Sao a mở nó lại ra thế kia nhỉ.
Mở bình thường mà 3 người mở ra kết quả khác nhau thế này nguy hiểm quá. Anh quay màn hình convert ra ảnh gif rồi upload lên
Thôi em đi ngủ đây.
 

Ốc Yêu

Yêu THVBA
E dùng OF2016 cũng chỉ có double click để mở thui mà.
Bạn cần đăng nhập để thấy hình ảnh
 

Ốc Yêu

Yêu THVBA
Mở bình thường mà 3 người mở ra kết quả khác nhau thế này nguy hiểm quá. Anh quay màn hình convert ra ảnh gif rồi upload lên
Thôi em đi ngủ đây.
Nếu mọi người mở bị sai định dạng thì có thể tự điền lại label cho file rồi xử lý nhé. Coi như m đã biết định dạng chuẩn rồi. Hix
 

Ốc Yêu

Yêu THVBA
Bạn cần đăng nhập để thấy hình ảnh

File như thế này mà a!!
Chú xem lại file đi. Anh mở lên thì đúng là chỉ có nhãn ghi ở cells A1 thôi. Chứ cells B1,C1 làm gì có. Hay cách mở của anh cũng có vấn đề à? Double click mở file thôi.
Bạn cần đăng nhập để thấy hình ảnh
Có gì đó k ổn rồi, e để ý thấy dữ liệu file a mở vs file của e sao khác nhau hoàn toàn thế kia nhỉ :(. Cột A e để là 1, 2,3,4 sao của a nó lại ra 1;0 2;0 thế kia. Các cột khác cũng khác hoàn toàn. hix
 
Trạng thái
Không mở trả lời sau này.
Top