Chuyển dữ liệu 1 dòng thành nhiều dòng theo điều kiện số lượng cho trước

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài
Những lý di để tránh dùng VBA jhi có thể dùng công thức:

1. Lý do quan trọng nhất: VBA làm cáu gì khi công thức hoặc thủ công có thể làm được. VBA khiến cái file trở thành nguy hiểm đối với hệ thống. Mõi lần tôi nhận mọt file xlsm từ người khác, tôi bắt họ phải bảo đảm tránh nhiệm vi rút trước khi tôi mở ra. Nhưng hình như dân GPE khong biết sợ thì phải.

2. Lý do đáng lẽ quan trọng nhưng ở GPE thì không thành vấn đề: người ta dùng code khi tự viết được, chỉ hỏi một vài điểm bí.

Những lý do chính để dân GPE dùng VBA:

1. Bên viết code ngứa tay. Tuy rằng có những bài code đã có sẵn lâu rồi, thậm chí code ấy do chiinhs mình viết, cũng vẫn thích code lại.

2. Bên nhờ thì quá dễ hiểu, công việc khỏe nhất.
Em vẫn thích dùng những hàm có sẵn, vì không hiểu làm sao người ta lại có thể ghép nối được các hàm như thế, hầu như các bài em đều nghĩ khoảng 1 tuần là không ra.
Trừ khi hàm chậm hoặc không thể hàm, thì em mới muốn đổi phương án.
 
"hiểu biết" gì? văn hóa hay kỹ thuật? hay cả hai?
Về cả hai vấn đề này, toio đều có thể moi lời bạn ra để chỉ trích rằng "hãy nhìn lại mình xem". Nhưng tôi nhường chio bạn ra tay trước đấy.
Thật ra thì anh không đáng để tôi phải mất thời gian.
Anh hiểu ý tôi chứ?! Vì thế cho nên tôi sẽ không tranh luận và dừng bài viết ở đây.
 
Thật ra thì anh không đáng để tôi phải mất thời gian.
Anh hiểu ý tôi chứ?! Vì thế cho nên tôi sẽ không tranh luận và dừng bài viết ở đây.
Cảm nhận hai bên là tương đồng.
Chỉ khác ở chỗ bạn thì sợ mất thời gian chính mình. Tôi thì e mất thời gian các bạn khác ở đây thôi.
 
Mình nghĩ nên dùng VBA trong bài này với các lý do:
- Đây là dạng yêu cầu biến đổi dữ liệu về một cấu trúc khác, dữ liệu mới đóng vai trò làm nguồn cho các mục đích khác. Vì vậy việc duy trì công thức cho mục đích này là không nên, nó sẽ làm file bị chậm. Có thể dùng công thức rồi sau khi làm xong thì thêm hành động Paste Values để bỏ công thức đi.
- Việc người sử dụng một tool hay code VBA để chạy làm sạch dữ liệu, chế biến dữ liệu không nhất thiết phải đưa code vào bên trong file dữ liệu, có thể để trong một file khác để chạy xử lý dữ liệu ở một file khác. Sản phẩm đầu ra chỉ là dữ liệu không có code VBA nên không làm ảnh hưởng gì đến vấn đề lo ngại có nguy hiểm hay không.
- Lo lắng người ứng dụng VBA hay công thức Excel không tự chế biến được khi dữ liệu nguồn thay đổi có thể lo lắng như nhau nếu công thức Excel trừu tượng, loằng ngoằng.

Nhìn chung thì Office có và duy trì tồn tại VBA là có lý do ứng dụng thực tiễn và lợi ích vô cùng lớn khi mở rộng tính năng của nó. Việc có ai đó dựa vào đó để tạo mã độc thì thì cũng như ai đó tạo mã độc trên các ứng dụng khác. Vì thế mới có các công cụ hay tổ chức kiểm tra file hay phần mềm có virus hay không. Cơ bản thì các công ty lớn hoặc yêu cầu bảo mật cao họ rất coi trọng tính an toàn vì vậy mới có cả bộ phận IT đảm bảo việc này.
 
Em cảm ơn các Anh Chị nhiều ạ
 
Ý em không phải bộ phận IT chỉ làm việc đó nhưng họ có có thể chịu trách nhiệm việc an toàn thông tin trong công ty.
Không thằng IT nào ngu mà chịu trách nhiệm kiểu này cả.
Lý do:
- Một phần mềm C# được viết ra thì thằng quản lý đồ án hoặc quản lý sản phẩm chịu trách nhiệm vì nó có chữ ký, có hồ sơ đàng hoàng. Không có nguồn cơ, chữ ký thì thằng IT nào cho chạy là thằng ngu., bảo sếp hệ thống đuổi quách.
- Một khúc code khoảng 100 dòng VBA có thể nằm trong một file xlsm chuyển cho hằng chục người. Nhất là code lấy từ GPE về chả ai buồn ký tên, chả ai buồn chú thích. Có thể một vài năm sau mới có người rớ tới. Có thể lúc mở file ra là code chạy rần rần mà người dùng không hề hay biết.
Cái khác nhau là phần mềm C# (hay cái gì gì đó) phải có chuẩn từ IT mới được dùng. VBA thì thằng cha căng chú kiết nào cũng có thể viết được và chuyển nhiều người. Và ai cũng có thẻ "bấm mổ phát" cho nó chạy - trừ phi bị ác min chặn qua Group Policy.. Thằng IT nào kiểm soát nổi cái này thì không nên làm việc ở VN nữa mà nên đi vào tư vấn cho các doanh nghiệp tầm cỡi, ăn lương từ 200 ngàn đô đến nửa triệu.

Túm lại, VBA chỉ tiện dụng đối với cấp dưới, dân cắc ké. Dân cấp trên người ta dùng rất dè dặt. Vả lại, dân cấp trên bi giờ có Power BI, rất it khi phải đụng tới VBA.

Lưu ý là tôi không hề nói VBA hết chỗ xài. Tôi đã từng tham dự đồ án VBA viết cho công ty tài chính bao rộng hằng trăm modules, có những modules chứa hằng chục Subs/Functions, có những class modules cả trăm phương thức (methods) và thuộc tính (properties).
 
Em cảm ơn các Anh Chị nhiều ạ
Góp vui 1 công thức nhé bạn
Mã:
I2=IF(I1=$A$1,A2,IF(COUNTIF($I$1:I1,I1)<VLOOKUP(I1,$A$2:$B$11,2,0),I1,INDEX($A$2:$A$11,MATCH(I1,$A$2:$A$11,0)+1)))
Đếm thì dùng countif
Cơ bản thì giống của bạn @cantl
Mã=IF(D1=$A$1;A2;INDEX($A$1:$B$3;IF(COUNTIF($D$1:D1;D1)=VLOOKUP(D1;$A$1:$B$3;2;FALSE);MATCH(D1;$A$1:$A$3;0)+1;MATCH(D1;$A$1:$A$3;0));1))
SL=COUNTIF($D$1:D2;D2)
Nếu cần thì thêm điều kiện ở trước để làm đẹp cột
Mã:
IF(ROW()-1>SUM($B$2:$B$11),"",...
 
Nếu cần thì thêm điều kiện ở trước để làm đẹp cột
Cũng có lý, nhưng nên để cột xấu để chịu khó kéo xuống kiểm tra 1 lần. VD dữ liệu nhiều, rồi bị bỏ trống thì còn biết mà xoá bớt cho chuẩn tí.
 
Không thằng IT nào ngu mà chịu trách nhiệm kiểu này cả.
Lý do:
...

Thực tế em thấy nhiều công ty bộ phận IT đóng vai trò kiểm duyệt cho phép nhân viên cài cái gì vào trong máy tính của công ty, với máy tính cá nhân của nhân viên thì tùy thoải mái hơn hoặc không kiểm duyệt. Còn chạy code VBA thì một số công ty yêu cầu file có VBA phải open source cho IT kiểm tra, họ làm như thế nào, bao lâu là việc của họ. Tóm lại lại bộ phận IT họ vẫn phải đảm nhiệm tính bảo mật dữ liệu trên máy tính của công ty họ theo cơ chế nào đó, linh hoạt như thế nào cũng tùy vào mỗi công ty, vì tính cấp bách công việc công ty, vì công viêc của họ thì việc ai đó bảo ngu hay dại họ vẫn phải làm thôi, thực tế nó là vậy.
 
Web KT
Back
Top Bottom