Sắp lại dử liệu trong 1 cột có dòng rổng!

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,912
Giã sử tôi có 1 bãng tính, trong cột A có dử liệu khoảng vài trăm dòng và có những cell rổng nằm rãi rác trong cột A này... Thông thường nếu tôi muốn lọc ra 1 danh sách ko chứa cell rỗng thì tôi có thể dùng Advaned Filter sẽ ko có vấn đề... Nhưng giờ tôi muốn dùng công thức tại cột B đễ lọc ra danh sách ko có cell rổng từ cột A... tất nhiên là vẫn theo trật tự củ...
Các cao thủ góp ý với... Hãy xem file đễ hiểu rõ thêm yêu cầu
ANH TUẤN
 

File đính kèm

B2 =IF(A2<>0, ROW(A2)-1,"")
C2 = =IF(ROW(A2)-ROW(A$2)+1>COUNT(B$2:B$500),"",INDEX($A$2:$A$500,SMALL(B$2:B$500,1+ROW(A2)-ROW(A$2))))
Fill xuống à!

Còn 1 công thức mảng cùng dạng nữa thì phải.

Bác này toàn đố câu khó!
 
Một công thức duy nhất ko có cột phụ thôi các đồng chí ơi... thế mới hỏi chứ...
Vã lại nếu dùng hàm ROW() thì thua rồi... lở dử liệu cũa tôi ko bắt đầu từ dòng 2 thì sao đây?
Tóm lại: yêu cầu là"
1> Ko có cột phụ
2> Công thức luôn đúng với mọi dử liệu (tức dử liệu nằm ở đâu cũng dc)
ANH TUẤN
 
Không cột phụ thì có thể giải quyết bằng cách nhét nó vào name là được, khó ở chỗ dữ liệu nằm bất kỳ nên không thể dùng ROW được...gợi ý chút đi bác !
 
Uh... name hay cái gì cũng dc.. miễn sao ko dùng VBA và ko nhìn thấy bất kỳ thứ gì "phụ" trên bãng tính...
Dùng ROW hay ko là tùy... miễn sao tôi có thể áp dụng nó với mọi dử liệu... Cái này rất cần thiết cho những bạn hay hỏi về giãi pháp, nhưng khi ta làm xong thì họ lại áp dụng ko dc vào thực tế vì ko biết tùy biến cho đúng với dử liệu thật...
Tôi chưa nghĩ ra sẽ dùng công thức gì, nhưng dám chắc là dc
ANH TUẤN
 
Nếu chỉ dùng công thức cho các TH này thì em nghĩ chỉ nên giới hạn ở việc tìm hiểu sức mạnh của công thức, của name thôi.

Còn thực tế thì ta nên dùng VBA hoặc các công cụ của Excel, vì khi xử lý với khối lượng dữ liệu lớn thì công thức sẽ làm chậm đi rất nhiều.

Em cũng đã thử sức với một hàm mảng VBA cho ra DS duy nhất rồi, thấy cũng không đến nỗi nào.

Thân!
 
- Em giải quyết được khâu công thức luôn đúng với mọi dữ liệu (không nhất thiết phải ở hàng 2. Mắc một chỗ chưa đưa cột phụ (ROW) vào name được vì hàm SMALL không chạy đúng ở công thức mảng.
TIM=INDIRECT("A"&SMALL(B$4:B$502,1+ROW()-ROW(A$4)))
- Có cách nào nhét cái cột phụ này vào name không các bác ? Nếu được thì coi như bài toán được giải quyết xong.
 

File đính kèm

Bắp nói rất đúng, ở đây chỉ là tìm hiểu sức mạnh cũa công thức chứ ko nhất thiết sẽ giãi quyết vấn đề này bằng công thức đâu... Vì chỉ cần AF là ra kết quã trong 10s...
Bạn Phamnhukhang hãy tưởng tượng khi người dùng mở 1 file, chỉ cần hướng dẫn họ định vị cell đầu tiên, còn tất cã các name và công thức thì sẽ phụ thuộc vào cell định vị này... Lúc ấy chỉ cần copy name và công thức vào là chạy...
Lấy ví dụ trong file tôi, chỉ cần định vị A2 và đặt cho nó 1 name Start=$A$2
Sau khi hoàn tất name và công thức thì thoải mái dùng chuột nắm kéo vùng nguồn và đích chạy vòng vòng trên bãng tính cũng ko hề sai kết quã...
Hi... hi...
ANH TUẤN
 
Tôi xin gợi ý bài toán gồm các bước cơ bản sau:
1> Định vị cell đầu tiên cũa dử liệu:
Mã:
Start = địa chỉ cell đầu tiên
2> Tạo 1 vùng tạm gồm 1000 dòng tính từ cell Start (vì tôi đã cho trước dử liệu khoảng vài trăm dòng)
Mã:
TEMP =OFFSET(Start,,,1000,1)
3> Xác định dòng cuối cùng có dử liệu trong vùng tạm này:
Mã:
Er =MATCH(REPT("Z",255),TEMP)
4 Xác định vùng dử liệu:
Mã:
 DS =OFFSET(Start,,,Er,1)
5> Đặt điều kiện đễ lấy vị trí cũa cell có dử liệu:
Mã:
 VT =IF((DS<>"")*ROW(INDIRECT("1:"&Er))=0,"",(DS<>"")*ROW(INDIRECT("1:"&Er)))
Xong rồi đấy... Từ đây có thể INDEX danh sách theo SMALL của VT
Bạn tiếp đi... he... he...
ANH TUẤN
 
Em chưa hiểu chỗ này lắm, bác giải thích dùm:

Er =MATCH(REPT("Z",255),TEMP)
- Tại sao khi tìm dòng cuối cùng có dữ liệu phải lặp lại 255 lần ký tự "z" trong vùng TEMP ?
 
Các bạn tham khảo file này xem có chổ nào cần cải tiến ko nha!
Mến
ANH TUẤN
 

File đính kèm

Bạn ơi mấy bài tập kiểu này chỉ giành cho các bạn mới biết thôi chứ dễ quá bạn ạ!!!!
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom