Các câu hỏi về lọc ra danh sách duy nhất (loại bỏ dữ liệu trùng) (1 người xem)

Liên hệ QC

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

Với tệp có dung lượng, số liệu lớn mà dùng công thức thì chết ặc. chậm như rua
 
Hi mấy bác, mấy bác giúp em có hàm nào lọc ra dữ liệu mà ko bị trùng ko? Máy bác xem file đính kèm của em.
Không cần dùng hàm bạn bôi tất cả vùng cần lọc ra dữ liệu. bạn vào Data/Filter/Advanced filter... hiện ra hộp thông báo. kích vào chữ copy to another location. trong mục Copy to: bạn đưa đến vùng cần đưa dữ liệu lọc đến. tích vào mục Unique records only rồi ok.
nó sẽ lọc những ô không trùng nhau sang. Nhớ là lấy cả những ô tiêu đề nha. và khi sang vùng chứa dữ liệu lọc nó cũng hiện cả những dòng tiêu đề đó.
Chúc bạn vui.
 
hỏi về lọc dữ liệu

Khi mình vào Data/Filter/Advanced filter... đúng ra phải co danh sách cho mình lọc nhưng may chỉ báo vỏn vẹn co 2 dong Top và fiilter sandra....ai biết vì sao???chỉ mình với ah
 
Khi mình vào Data/Filter/Advanced filter... đúng ra phải co danh sách cho mình lọc nhưng may chỉ báo vỏn vẹn co 2 dong Top và fiilter sandra....ai biết vì sao???chỉ mình với ah
fiilter sandra là cái gì vậy bạn ---> Chưa từng nghe bao giờ
 
fiilter sandra là cái gì vậy bạn ---> Chưa từng nghe bao giờ
sorry mọi người nha là chữ " FITER STANDARD " có lẽ dốt quá nên cũng chẳng " DIẾT" được đúng con chữ nữa,,,,xin lỗi,,,,nhờ mọi người cho ý kiến về vấn đề của mình ah
 
sorry mọi người nha là chữ " FITER STANDARD " có lẽ dốt quá nên cũng chẳng " DIẾT" được đúng con chữ nữa,,,,xin lỗi,,,,nhờ mọi người cho ý kiến về vấn đề của mình ah
Tôi chắc đến 99% là bạn dùng Open Office ---> Vì trong Excel chẳng có mục nào là FITER STANDARD cả
Nếu đúng thế thì xem tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?p=207132
 
Tôi có bài toán thế này nhờ các bạn giải giùm!
Cột A gồm tên các bút toán như sau:
A 2: Phải trả lương
A 3: Phải trả lương
A 4: Phải trả lương
A 5: Xuất quỹ chi lương
Cột B và C có các bút toán như sau:
B 2: Nợ 661; C 2: Có 334
B 3: Nợ 661; C 3: Có 334
B 4: Nợ 661; C 4: Có 334
B 5: Nợ 334; C 5: Có 111
Cột D số tiền:
D 2: 1000
D 3: 1000
D 4: 1000
D 5: 3000
Bây giờ tôi muốn lấy số liệu sang cột E là:
E 2: Phải trả lương
E 3:
E 4:
E 5: Xuất quỹ chi lương
Số liệu cột F là:
F 2: 3000
F 3:
F 4:
F 5: 3000
Mong các bạn chỉ dùm!
 
Tôi có bài toán thế này nhờ các bạn giải giùm!
Cột A gồm tên các bút toán như sau:
A 2: Phải trả lương
A 3: Phải trả lương
A 4: Phải trả lương
A 5: Xuất quỹ chi lương
Cột B và C có các bút toán như sau:
B 2: Nợ 661; C 2: Có 334
B 3: Nợ 661; C 3: Có 334
B 4: Nợ 661; C 4: Có 334
B 5: Nợ 334; C 5: Có 111
Cột D số tiền:
D 2: 1000
D 3: 1000
D 4: 1000
D 5: 3000
Bây giờ tôi muốn lấy số liệu sang cột E là:
E 2: Phải trả lương
E 3:
E 4:
E 5: Xuất quỹ chi lương
Số liệu cột F là:
F 2: 3000
F 3:
F 4:
F 5: 3000
Mong các bạn chỉ dùm!
Bạn thử dùng vài cái cơ bản sau:
- Cột E (Ô E2): =IF(A2=A1,"",A2)
- Cột F (Ô F2): =IF(D2=D1,"",SUM(D2:$D$5)-SUM(F3:$F$6))
 

File đính kèm

Trích lọc danh sách từ một danh sách có sẵn chỉ lấy 1 kết quả nếu trùng

Chào các bạn! mình muốn làm 1 danh sách từ một danh sách có sẵn, danh sách đó chỉ lấy 1 mãu tin nếu có 2 mẫu tin trùng nhau!
Bạn nào biết gíup mình với. mình có post lên một ví dụ mẫu các bạn xem giúp nhe!
 

File đính kèm

Lần chỉnh sửa cuối:
Chào các bạn! mình muốn làm 1 danh sách từ một danh sách có sẵn, danh sách đó chỉ lấy 1 mãu tin nếu có 2 mẫu tin trùng nhau!
Bạn nào biết gíup mình với. mình có post lên một ví dụ mẫu các bãnem giúp nhe!
Câu hỏi dạng này đã có quá nhiều người hỏi rồi ---> Nếu bạn "không ngại khó", hãy nghiên cứu Advanced Filter trước xem ---> Chú ý mục check "Unique Records only"... đây là chức năng chuyên dùng để trích lọc duy nhất đấy
 
Danh sách sau khi trích lọc không tự cập nhật

Anh có cách nào làm cho danh sách sau khi lọc thì nội dung tự cập nhật không, tại vì danh sách gốc lúc nào cũng phát sinh mới, nên mỗi khi bổ sung mẫu tin mới thì danh sách trích lọc không được cập nhật.
 
Dùng hàm này: =COUNTIF($B$4:B8,B8). Sau đó lọc ra những dòng = 1 là xong.
 
Anh có cách nào làm cho danh sách sau khi lọc thì nội dung tự cập nhật không, tại vì danh sách gốc lúc nào cũng phát sinh mới, nên mỗi khi bổ sung mẫu tin mới thì danh sách trích lọc không được cập nhật.

Bạn tham khảo file đính kèm có 2 cách
-Dùng Hàm
-Dùng Pivote (Muốn cho nó cập nhật dữ liệu bạn phải bấm vào Refresh nhé)
 

File đính kèm

File đính kèm

Mọi người giúp mình lọc dữ liệu trùng nhau với

Mình có file công nợ này nhưng không lọc được dữ liệu từ CTCN sang CNKH mà không bị trùng số hoá đơn. Các bạn giúp mình nhé .Cảm ơn nhiều!
 

File đính kèm

Mình có file công nợ này nhưng không lọc được dữ liệu từ CTCN sang CNKH mà không bị trùng số hoá đơn. Các bạn giúp mình nhé .Cảm ơn nhiều!

Cái chỗ này mà dùng Pivot, thì ...?
Xem thử file (tôi bố trí 2 kiểu cho bạn chọn hoặc kéo và thả ...)
 

File đính kèm

Cám ơn bạn nhiều, cách của bạn rất hay. Nhung mình muốn bạn giúp mình lần nữa, để cho mỗi một số hoá đơn chỉ thể hiện một hàng thôi. số tiền thì là tổng của tất cả hoá đơn đó. Mà có cách nào làm bằng công thức không bạn. Cám ơn nhiều nhé!

Cách làm Pvot như thế nào hả bạn. Mình muốn tìm hiểu cách làm của bạn để tự mình chỉnh sủa lại theo ý.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Mình làm cũng gần được, còn một chút nữa bạn giúp mình.

Ở cột thành tiền với cột thanh toán mình mãi không làm ra được như file tren của bạn, bạn hướng dẫn mình nhé. Cám ơn
 

File đính kèm

Lần chỉnh sửa cuối:

File đính kèm

ý mình muốn bạn chỉ cho mình cách làm ý. làm thế nào để cột thành tiền và thanh toán và còn nợ vào được trường DATA như bạn làm ý và cột còn nợ thì bằng thành tiền trừ đi thanh toán.
 
Mọi người nói về việc lọc dữ liệu có vẻ rắc rối quá nhỉ, tôi thì thường dùng lệnh if để lọc dữ liệu (cái nào bị trùng thì ra 0, còn lại không trùng ra 1), sau đó fillter những thằng số 1 là ok thui.
 
Chào các bạn.
Mình có một bảng dữ liệu gồm 4 cột: Tên khách hàng, Ngày giao hàng, Số lượng và Hạn thanh toán.
Mình muốn tạo hai báo cao sau:
1. Ngày giao hàng cuối cùng cho tất cả các khách hàng.
2. Các khách hàng đến hạn thanh toán
Rất mong được các bạn giúp đỡ
 
Chào các bạn.
Mình có một bảng dữ liệu gồm 4 cột: Tên khách hàng, Ngày giao hàng, Số lượng và Hạn thanh toán.
Mình muốn tạo hai báo cao sau:
1. Ngày giao hàng cuối cùng cho tất cả các khách hàng.
2. Các khách hàng đến hạn thanh toán
Rất mong được các bạn giúp đỡ
Thì bạn cứ viết ví dụ ra vừa dễ hiểu, vừa nhanh. Nhất cử tam tứ tiện.
 
Nếu không bắt buộc thì ta có thể thêm 2 cột phụ màu vàng rồi dùng công thức sử lý là được. Bạn xem nhé.
 

File đính kèm

File đính kèm

Lần chỉnh sửa cuối:
Cảm ơn các bạn đã giúp đỡ, để mình áp dụng vào bài toán thực tế. nhưng có lẽ cách xử lý hạn chế các bảng trung gian ngắn gọn hơn.
Mình nhớ đã nghe đâu đó có cách giải quyết bài toàn này dựa trên ý tưởng dùng mảng:

1. Thêm 1 cột, Tại mỗi dòng của cột sẽ so sánh ngày giao hàng của dòng đó với MAX(Mảng các giá trị Ngày gồm các phần tử = "" nếu tên Khách hàng khác dòng cần tìm và giữ nguyên giá trị ngày nếu ngược lại). Nếu = MAX thì gán giá trị ROWS của dòng đó, ngược lại gán =0
2. Dùng hàm count của cột mới để tìm xem có bao nhiêu khách hàng giao hàng gần đây nhất
3. Dùng hàm Index để lấy về giá trị từ vị trí ROWS tìm được

Nhưng mình không biết cách viết ra thành hàm như thế nào. Mong được các bạn giúp đỡ
 
Lần chỉnh sửa cuối:
{=IF(J3<>"",MAX(IF($A$2:$A$13=$J3,B2:B13,0)),"")}
Bạn lưu ý cái công thức mảng trên nó làm đủ các yêu cầu của bạn rồi, ta chẻ nó ra 1 chút nhé:
1/=IF(J3<>"",…………..) Đoạn này chỉ nhằm nếu không có mã thì trả về chuỗi rỗng chứ đừng trả về 0, vì 0 trong định dạng ngày nó lại có kết quả khác.
2/IF($A$2:$A$13=$J3,B2:B13,0) Tạo 1 mảng trung gian có kích thước là 12 phần tử tương ứng với 12 dòng dữ liệu của bạn. Nếu cột mã bằng với mã so sánh thì điền vào phần tử tương ứng là ngày giao hàng, nếu khác mã thì điền 0.
3/ Max trong mảng này, tức là ngày giao hàng muộn nhất của mã.

Bạn thấy không, cái hàm mảng này quá ư là phù hợp với yêu cầu của bạn thay vì bạn phải tạo ra cột phụ, dùng công thức để nhặt ngày tương ứng với mã. Sau đó dùng hàm Max để chọn giá trị lớn nhất. Chưa hết nhé, cách của bạn còn phải mỗi mã 1 cột phụ vậy thì vài trăm mã thì đi đứt cột phụ à.
 
Cảm ơn bạn. Mình gửi bảng ví dụ, các bạn giúp mình nhé

Với dữ liệu & yêu cầu của bạn (giả sử công nợ khách hàng lớn mà dùng công thức thì máy chạy đến bao giờ)
=> Một giải pháp cho bạn - đó là dùng Pivot
Xem file thế nào?
 

File đính kèm

Cảm ơn các bạn đã giúp đỡ.
Với dữ liệu & yêu cầu của bạn (giả sử công nợ khách hàng lớn mà dùng công thức thì máy chạy đến bao giờ)
=> Một giải pháp cho bạn - đó là dùng Pivot
Sử dụng Pivot mình cũng làm thử nhưng hình như dữ liệu mỗi lần cập nhật thêm lại phải update lại nguồn cho Pivot. Có thể do mình chưa biết sử dụng tính năng này.

{=IF(J3<>"",MAX(IF($A$2:$A$13=$J3,B2:B13,0)),"")}
Bạn lưu ý cái công thức mảng trên nó làm đủ các yêu cầu của bạn rồi, ta chẻ nó ra 1 chút nhé:
1/=IF(J3<>"",…………..) Đoạn này chỉ nhằm nếu không có mã thì trả về chuỗi rỗng chứ đừng trả về 0, vì 0 trong định dạng ngày nó lại có kết quả khác.
2/IF($A$2:$A$13=$J3,B2:B13,0) Tạo 1 mảng trung gian có kích thước là 12 phần tử tương ứng với 12 dòng dữ liệu của bạn.
3/ Max trong mảng này, tức là ngày giao hàng muộn nhất của mã.
Cám ơn bạn sealand rất nhiều, Đúng là mình đang muốn giải quyết theo cách của bạn, Nhân tiện Bạn cho mình hỏi hôm trước mình cũng đã sử dụng thêm 1 cột với hàm
{=MAX(IF($C$2:$C$13=$C$2:$C$13,$D$2:$D$13,""))}
Nhưng kết quả chỉ trả về một giá trị ngày lớn cho tất cả các khách hàng (file gửi kèm). Không biết vì sao, Bạn có thể hướng dẫn giúp mình được không.
 

File đính kèm

Lần chỉnh sửa cuối:
Sử dụng Pivot mình cũng làm thử nhưng hình như dữ liệu mỗi lần cập nhật thêm lại phải update lại nguồn cho Pivot. Có thể do mình chưa biết sử dụng tính năng này.

Thì làm mở rộng trước nguồn khoảng 5000 dòng đủ không? Sau đó đưa cái "dấu chấm than" - Refresh Data ra ngoài...
Mỗi lần cập nhật dữ liệu thì chỉ cần nhấn cái "dấu chấm than" là được !
 
Cảm ơn các bạn đã giúp đỡ.

Sử dụng Pivot mình cũng làm thử nhưng hình như dữ liệu mỗi lần cập nhật thêm lại phải update lại nguồn cho Pivot. Có thể do mình chưa biết sử dụng tính năng này.


Cám ơn bạn sealand rất nhiều, Đúng là mình đang muốn giải quyết theo cách của bạn, Nhân tiện Bạn cho mình hỏi hôm trước mình cũng đã sử dụng thêm 1 cột với hàm
{=MAX(IF($C$2:$C$13=$C$2:$C$13,$D$2:$D$13,""))}
Nhưng kết quả chỉ trả về một giá trị ngày lớn cho tất cả các khách hàng (file gửi kèm). Không biết vì sao, Bạn có thể hướng dẫn giúp mình được không.

Công thức sai mất rồi, bạn xem lại nhé.
 

File đính kèm

Khi dùng Pivot mình hay chọn tới row cuối cùng, không sợ bị thiếu, cứ thêm vào vô tư
 
Các câu hỏi về trích lọc dữ liệu duy nhất được post ở đây.

mình có 1 cột cần trích sang cột mới mà những số trùng nhau chỉ lấy 1 lân.nhờ các bạn chỉ giúp. thanks
 

File đính kèm

-Cho e hỏi tý.E cũng định dùng Advanced Filter nhưng không biết điều kiện là gì để lọc ra các bạn sinh cùng tháng?
 

File đính kèm

  • untitled.JPG
    untitled.JPG
    126.8 KB · Đọc: 214
Mình có dữ liệu dạng như thế này nhờ moi nguoi gip do 10+000.00-2.06410.62CHUYỂN SANG DỮ LIỆU DẠNG NHƯ THẾ NÀY===>0+000.00 20+000.00-1.864211.12Existingground:eg30+000.00-1.32911.16 -2.06410.6240+000.00011.26 -1.864211.1250+000.001.850711.21 -1.32911.1660+000.002.425411.16 011.2670+000.002.641610.81 1.850711.2180+017.35-1.914910.99 2.425411.1690+017.35-1.396311.13 2.641610.81100+017.35011.260+017.35 110+017.351.699911.13Existingground:eg120+017.352.175111.08 -1.914910.99130+017.352.371310.82 -1.396311.13140+039.09-2.212510.38 011.26150+039.09-1.977510.94 1.699911.13160+039.09-1.472911.02 2.175111.08170+039.09011.16 2.371310.82180+039.091.535311.050+039.09 190+039.092.045810.97Existingground:eg200+039.092.139110.73 -2.212510.38210+052.09-2.607111.33 -1.977510.94220+052.09-1.425611.06 -1.472911.02230+052.09011.06 011.16240+052.091.889910.95 1.535311.05250+052.092.149710.97 2.045810.97260+052.092.370610.75 2.139110.730+052.09 Existingground:eg -2.607111.33 -1.425611.06 011.06 1.889910.95 2.149710.97 2.370610.75
 
Lần chỉnh sửa cuối:
giúp em loại dữ liệu trùng

giúp em loại bỏ dữ diệu trùng nhau , chỉ chừa lại 1 liệu

VD :

A B

music nhac
music nhac
music nhac

loại thành

music nhac

anh em giúp em file này
 

File đính kèm

giúp em loại bỏ dữ diệu trùng nhau , chỉ chừa lại 1 liệu

VD :

A B

music nhac
music nhac
music nhac

loại thành

music nhac

anh em giúp em file này

Bạn nên sử dụng công cụ sẵn có là Advance filter, PivotTable, consolidate.... để thực hiện bài toán này.
 
Chào các anh, em mới ra trường và tập tọe đi làm, sếp giao cho công việc nhập dữ liệu xe máy hàng ngày, em dùng Data Validation và hàm OFFSET, mà không hiểu lỗi ở đâu, ban đầu rất tốt nhưng sau đó ễcl báo lỗi, mong các bác giải quyết giúp em nhé!

Chân thành cám ơn các anh!View attachment SAO LAI THE.xls
 
Chào các anh, em mới ra trường và tập tọe đi làm, sếp giao cho công việc nhập dữ liệu xe máy hàng ngày, em dùng Data Validation và hàm OFFSET, mà không hiểu lỗi ở đâu, ban đầu rất tốt nhưng sau đó ễcl báo lỗi, mong các bác giải quyết giúp em nhé!

Chân thành cám ơn các anh!View attachment 53903
Công thức cho ô B2 trên Sheet1 chỉ cần như vầy là đủ (sau đó copy ô này và dán cho các ô còn lại trong cột B):
=VLOOKUP(A2,Sheet2!$A$2:$B$14,2,0)
Bạn lưu ý: Khi dùng các hàm OFFSET, MATCH, VLOOKUP, HLOOKUP, COUNTIF, SUMIF,..., bạn cần sử dụng linh hoạt các loại địa chỉ (tuyệt đối, tương đối, hỗn hợp) tại tham số vùng tham chiếu nhé. Bạn thử xem các tham số tương ứng tại B2 và B3 trong file của bạn sẽ thấy điều này.
 
mình bị lỗi tìm chỗ này nhờ các ac giúp mình với,cám ơn nhiều
 

File đính kèm

Lần chỉnh sửa cuối:
Em chân thành cám ơn anh Hoàng Nghĩa Phúc đã trả lời câu hỏi giúp em!
 
mình bị lỗi tìm chỗ này nhờ các ac giúp mình với,cám ơn nhiều
Ô B4 sheet S2: =SUMPRODUCT(('2'!$A$4:$A$15='S2'!A4)*('2'!$B$4:$B$14='S2'!B3)*('2'!F4:F14)); số dòng không đồng nhất + địa chỉ: ('2'!F4:F14) khi copy xuống sẽ "trớt quớt", + các ô A10:F14 không có dữ liệu ...
Tương tự Ô C4: =SUMPRODUCT(('2'!$A$4:$A$5000='S2'!$A4)*('2'!$B$4:$B$5000='S2'!$B3)*('2'!$F$4:$F$5000))
vùng A10:F5000 có gì đâu mà Sum...
 
vậy các ac giúp mình đối với bài đó làm cách nào được không ạh vì mình làm hoại không được,cám ơn nhiều nhiều lắm
 
vậy các ac giúp mình đối với bài đó làm cách nào được không ạh vì mình làm hoại không được,cám ơn nhiều nhiều lắm
Thử làm với dữ liệu đến dòng thứ 60 sheet GPE nhé.
Sheet GPE phải có dữ liệu đầy đủ, liên tục, có bao nhiêu dòng thì Sumproduct() bấy nhiêu thôi.
 

File đính kèm

File đính kèm

đầu tiên mình cảm ơn 2 bác nhiều lắm ah , kế tiếp mình nhờ giúp mình tiếp cũng file trên nhưng làm công thức gì để nó đuợc liên tục theo các dòng mà bỏ các dòng trống đi vì file của mình link với sheet khác để chọn lọc, cảm ơn các bạn trước.
 

File đính kèm

Các Bác chỉ giúp em cách dán dữ liệu xuyên qua những ô bị ẩn
VD: ở Sheet 1 em có dữ liệu nằm ở ô: A1,B1,C1,D1,E1
em copy dữ liệu này sang sheet 2 mà ở sheet 2 cột B1, C1 bị ẩn.
Em muốn khi dán dữ liệu vào sheet 2 thì dữ liệu sẽ nằm ở các ô A1, D1,E1,F1,G1
 
Các Bác chỉ giúp em cách dán dữ liệu xuyên qua những ô bị ẩn
VD: ở Sheet 1 em có dữ liệu nằm ở ô: A1,B1,C1,D1,E1
em copy dữ liệu này sang sheet 2 mà ở sheet 2 cột B1, C1 bị ẩn.
Em muốn khi dán dữ liệu vào sheet 2 thì dữ liệu sẽ nằm ở các ô A1, D1,E1,F1,G1
Unhide dòng cột trước khi paste còn không thì lập trình VBA thôi ---> Tùy bạn quyết định
 
-Cho e hỏi tý.E cũng định dùng Advanced Filter nhưng không biết điều kiện là gì để lọc ra các bạn sinh cùng tháng?

Bạn có thêm 1 cột "Tháng oe oe" với công thức tại E8 là = month( "ngày oe oe") (địa chỉ ô cùng cột vơi ngày sinh), sau đó lọc tự động (Data\Autofilter), chọn tháng nào là tùy.
 
Lần chỉnh sửa cuối:
giúp em tìm lọc dữ liệu trùng

em có file dữ liệu cần nhập rất nhiều nên hơi nặng mọi người giúp em thêm hàm trong file. cám ơn mọi người.
 

File đính kèm

Bạn thử tìm hiểu về Advanced Filter đi .
100000 dòng ,thật là kinh khủng ,công thức chắc à ì ạch ...
 
Vân vấn đề là vậy. nếu dùng advance filter nó sẽ là thao tác tay không tự động. em không thể có ngay kết quả khi nhập dữ liệu.
 
Vậy thì tham khảo cách này đi nhen bạn
 

File đính kèm

thật cảm ơn nhiều ....
Cái này đúng cái em đang tìm...thật excel hàm đa dạng quá kết hợp phức tạp mới ra cái mình cần.
 
Em áp dụng công thức trong file này cho file công việc rất tốt. chỉ là không hiểu về nó lắm.. cái này hơi chuyên sâu nhỉ?
Có thể giải thích cho em hàm indirect dùng như thế nào và trong trường hợp như thế nào mới dùng. kèm ví dụ đơn giản được không ạ? Em đọc nhiều về hàm này nhưng vẫn cảm thấy lơ tơ mơ....

chỉ có excel 2007 trở lên mới có số dòng này thôi bác volga à
Em sử dụng Office 2010 bác ạ....
 
Chỉnh sửa lần cuối bởi điều hành viên:
em có file dữ liệu cần nhập rất nhiều nên hơi nặng mọi người giúp em thêm hàm trong file. cám ơn mọi người.
Bài lọc dữ liệu trùng thường dùng Advanced Filter, Consolidate....để lọc. Nếu dữ liệu lớn mà dùng công thức thì e rằng file sẽ nặng và chạy không nỗi.
Thêm cho Bạn 1 cách dùng Consolidate để lọc.
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  With Range("[COLOR=red]B2[/COLOR]:C" & [[COLOR=red]B65536[/COLOR]].End(xlUp).Row)
     Range("[COLOR=red]F2[/COLOR]").Consolidate .Address(, , 2), Function:=xlSum, LeftColumn:=True
  End With
End Sub
 

File đính kèm

Bài lọc dữ liệu trùng thường dùng Advanced Filter, Consolidate....để lọc. Nếu dữ liệu lớn mà dùng công thức thì e rằng file sẽ nặng và chạy không nỗi.
Thêm cho Bạn 1 cách dùng Consolidate để lọc.
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  With Range("[COLOR=red]B2[/COLOR]:C" & [[COLOR=red]B65536[/COLOR]].End(xlUp).Row)
     Range("[COLOR=red]F2[/COLOR]").Consolidate .Address(, , 2), Function:=xlSum, LeftColumn:=True
  End With
End Sub

Theo bài này thì dữ liệu bảng tính không hiểu khi có thêm loại giày mới bác ạ?
 
Theo bài này thì dữ liệu bảng tính không hiểu khi có thêm loại giày mới bác ạ?
Bạn cứ thử sửa lại như vầy xem sao:
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("[COLOR=red]F2:G65536[/COLOR]").Clear
  With Range("[COLOR=red]B2:C[/COLOR]" & [[COLOR=red]B65536[/COLOR]].End(xlUp).Row)
     Range("[COLOR=red]F2[/COLOR]").Consolidate .Address(, , 2), Function:=xlSum, LeftColumn:=True
  End With
End Sub
 

File đính kèm

Em áp dụng công thức trong file này cho file công việc rất tốt. chỉ là không hiểu về nó lắm.. cái này hơi chuyên sâu nhỉ?
Có thể giải thích cho em hàm indirect dùng như thế nào và trong trường hợp như thế nào mới dùng. kèm ví dụ đơn giản được không ạ? Em đọc nhiều về hàm này nhưng vẫn cảm thấy lơ tơ mơ....


Em sử dụng Office 2010 bác ạ....
nếu 2010 thì thử cái recode này xem 150000 dòng đấy
PHP:
Private Sub CommandButton1_Click()
  With Application
 .ScreenUpdating = False
  ActiveSheet.Range("e:f").Clear
  Range("B2:C" & [B150000].End(xlUp).Row + 1).Copy
[e2].PasteSpecial Paste:=xlPasteValuesAndNumberFormats: [f3].FormulaR1C1 = "=SUMIF(C[-4],RC[-1],C[-3])"
: [f3].AutoFill Destination:=Range("F3:F" & [f150000].End(xlUp)): Range("$E1:$f150000").RemoveDuplicates Columns:=1
selection.Copy
    selection.PasteSpecial Paste:=xlPasteValues
    .CutCopyMode = False
    .ScreenUpdating = True
   End With
End Sub
xem thêm file
 

File đính kèm

Bạn cứ thử sửa lại như vầy xem sao:
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("[COLOR=red]F2:G65536[/COLOR]").Clear
  With Range("[COLOR=red]B2:C[/COLOR]" & [[COLOR=red]B65536[/COLOR]].End(xlUp).Row)
     Range("[COLOR=red]F2[/COLOR]").Consolidate .Address(, , 2), Function:=xlSum, LeftColumn:=True
  End With
End Sub
Nâng lên 65000 dòng và # 1000 mã thì dùng Dictionary nhanh nhiều hơn đó. Nhanh hơn cả AdFi. Còn kg biết Ex 2010 thì thế nào.
PHP:
Sub thuDic()
Dim t, i As Long, s As Long, Dic As Object, Arr, ArrKQ(1 To 65000, 1 To 2)
Set Dic = CreateObject("Scripting.Dictionary")
t = Timer
Range("I2:J65536").Clear
Arr = Range("B2:C" & [B65536].End(xlUp).Row)
s = 0
For i = 1 To UBound(Arr, 1)
  If Not Dic.Exists(Arr(i, 1)) Then
    s = s + 1
    ArrKQ(s, 1) = Arr(i, 1)
    Dic.Add Arr(i, 1), s
  End If
  ArrKQ(Dic.Item(Arr(i, 1)), 2) = ArrKQ(Dic.Item(Arr(i, 1)), 2) + Arr(i, 2)
Next i
Range("I2").Resize(s, 2) = ArrKQ
Erase Arr, ArrKQ: Set Dic = Nothing
MsgBox Timer - t
End Sub
 
Anh ThuNghi có thể giải thích từng dòng lệnh để Anh em học hỏi được không (sao thấy giống như đưa vào mảng quá) nhưng không hiểu nhiều dòng lệnh? Thấy cái CreateObject("Scripting.Dictionary")anh NDU và Anh hay dùng để lọc hay quá.
 
Anh ThuNghi có thể giải thích từng dòng lệnh để Anh em học hỏi được không (sao thấy giống như đưa vào mảng quá) nhưng không hiểu nhiều dòng lệnh? Thấy cái CreateObject("Scripting.Dictionary")anh NDU và Anh hay dùng để lọc hay quá.

đúng rồi Bác thu nghi hưỡng dẫn từng dòng lệnh cho anh em học với
cái code cua bác chạy có 0.203125 giây à kể cả khi em sửa range lên đến 165536 . phải nói là cực nhanh.
còn code của Minh công hết 65.58594 giây , le duythương hết -72716.66.
 
Lần chỉnh sửa cuối:
Nâng lên 65000 dòng và # 1000 mã thì dùng Dictionary nhanh nhiều hơn đó. Nhanh hơn cả AdFi. Còn kg biết Ex 2010 thì thế nào.
Chắc chắn Dictionary luôn nhanh hơn luôn, cho dù Excel 2007 hoặc Excel 2010 có dùng Advanced Filter hay RemoveDuplicate cũng vẫn chậm
-------------------------
Anh ThuNghi có thể giải thích từng dòng lệnh để Anh em học hỏi được không (sao thấy giống như đưa vào mảng quá) nhưng không hiểu nhiều dòng lệnh? Thấy cái CreateObject("Scripting.Dictionary")anh NDU và Anh hay dùng để lọc hay quá.
đúng rồi Bác thu nghi hưỡng dẫn từng dòng lệnh cho anh em học với
cái code cua bác chạy có 0.203125 giây à kể cả khi em sửa range lên đến 165536 . phải nói là cực nhanh.
còn code của Minh công hết 65.58594 giây , le duythương hết -72716.66.
Dictionary Object đã được nói rất nhiều lần rồi (kê cả diễn giải chi tiết)... giờ xin đưa 1 code đơn giản nhất cho các bạn tham khảo nhằm hiểu thêm
- Đầu tiên mở 1 bảng tính mới, gõ công thức này vào cell A1:
PHP:
=CHAR(INT(RAND()*5)+65)
- Kéo fill công thức đến cell A30 (mục đích là tạo các ký tự ngẫu nhiên từ A đến E)
- Copy A1:A30 rồi Paste Special\Values vào chính nó
- Xong, chạy thử code này
PHP:
Sub TestDic()
  Dim Clls As Range, Dic, i As Long
  Set Dic = CreateObject("Scripting.Dictionary")
  For Each Clls In Range("A1:A30")
    Clls.Select
    If Not Dic.Exists(Clls.Value) Then  ''<--- kiem tra xem Clls.Value có ton tại trong Dictionary hay khong?
      MsgBox "Gia tri '" & Clls.Value & "' chua ton tai trong Dictionary"
      Dic.Add Clls.Value, ""  ''<--- Add giá tri Clls.Value vào Dictionary (vì nó chua ton tai)
      i = i + 1
      Cells(i, "C") = Clls.Value
    Else
      MsgBox "Gia tri '" & Clls.Value & "' da ton tai trong Dictionary"
    End If
  Next
End Sub
MsgBox dùng để diễn giải, các bạn tự suy nghĩ thêm nhé
 
Lần chỉnh sửa cuối:
Anh ThuNghi có thể giải thích từng dòng lệnh để Anh em học hỏi được không (sao thấy giống như đưa vào mảng quá) nhưng không hiểu nhiều dòng lệnh? Thấy cái CreateObject("Scripting.Dictionary")anh NDU và Anh hay dùng để lọc hay quá.
Hình như bài này Thu Nghi chỉ sử dụng "đít to" làm điều kiện để gán dữ liệu từ mảng Arr sang mảng ArrKQ _dùng "đít to" kiểm tra xem dữ liệu nào là duy nhất ở mảng Arr thì "xơi" nó đem gán qua "thằng" ArrKQ _
Lấy kết quả ở mảng ArrKQ chứ không lấy ở "đit to"
Xin phép Thu Nghi sửa lại code đó một tí tẹo cho Minh Công & Duy Thương dễ nhìn, dễ hiểu ( hình như tốc độ cũng được cải thiện)
Mã:
Sub thuDic2()
    Dim t, i As Long, s As Long, Dic As Object, Arr, ArrKQ(1 To 65000, 1 To 2)
    Set Dic = CreateObject("Scripting.Dictionary")
    t = Timer
        Range("I2:J65536").Clear
        Arr = Range("B2:C" & [B65536].End(xlUp).Row)
            For i = 1 To UBound(Arr, 1)
                If Not Dic.Exists(Arr(i, 1)) Then
                    s = s + 1
                    ArrKQ(s, 1) = Arr(i, 1)
                    ArrKQ(s, 2) = Arr(i, 2)
                    Dic.Add Arr(i, 1), s
                Else
                    ArrKQ(s, 2) = ArrKQ(s, 2) + Arr(i, 2)
                End If
            Next i
    Range("I2").Resize(s, 2) = ArrKQ
    Erase Arr, ArrKQ: Set Dic = Nothing
[i1] = Timer - t
End Sub
 
Hình như bài này Thu Nghi chỉ sử dụng "đít to" làm điều kiện để gán dữ liệu từ mảng Arr sang mảng ArrKQ _dùng "đít to" kiểm tra xem dữ liệu nào là duy nhất ở mảng Arr thì "xơi" nó đem gán qua "thằng" ArrKQ _
Lấy kết quả ở mảng ArrKQ chứ không lấy ở "đit to"
Xin phép Thu Nghi sửa lại code đó một tí tẹo cho Minh Công & Duy Thương dễ nhìn, dễ hiểu ( hình như tốc độ cũng được cải thiện)
Mã:
Sub thuDic2()
    Dim t, i As Long, s As Long, Dic As Object, Arr, ArrKQ(1 To 65000, 1 To 2)
    Set Dic = CreateObject("Scripting.Dictionary")
    t = Timer
        Range("I2:J65536").Clear
        Arr = Range("B2:C" & [B65536].End(xlUp).Row)
            For i = 1 To UBound(Arr, 1)
                If Not Dic.Exists(Arr(i, 1)) Then
                    s = s + 1
                    ArrKQ(s, 1) = Arr(i, 1)
                    ArrKQ(s, 2) = Arr(i, 2)
                    Dic.Add Arr(i, 1), s
                Else
                    ArrKQ(s, 2) = ArrKQ(s, 2) + Arr(i, 2)
                End If
            Next i
    Range("I2").Resize(s, 2) = ArrKQ
    Erase Arr, ArrKQ: Set Dic = Nothing
[i1] = Timer - t
End Sub
Code này sai nha anh!
Sai ở chổ này:
ArrKQ(s, 2) = ArrKQ(s, 2) + Arr(i, 2)
Định vị như thế vô tình chỉ có "em cuối cùng" được cộng dồn mà thôi
Phải như ThuNghi:
ArrKQ(Dic.Item(Arr(i, 1)), 2) = ArrKQ(Dic.Item(Arr(i, 1)), 2) + Arr(i, 2)
thì mới chính xác
 
Code này sai nha anh!
Sai ở chổ này:
ArrKQ(s, 2) = ArrKQ(s, 2) + Arr(i, 2)
Định vị như thế vô tình chỉ có "em cuối cùng" được cộng dồn mà thôi
Phải như ThuNghi:
ArrKQ(Dic.Item(Arr(i, 1)), 2) = ArrKQ(Dic.Item(Arr(i, 1)), 2) + Arr(i, 2)
thì mới chính xác
Hình như dữ liệu trong bài của chủ topic đã được sắp xếp . Code này vẫn chạy đúng mà Thầy, nó cộng dồn "thằng" nào không duy nhất thôi, S luôn đúng vì không đổi cho tới khi "đít to" tìm ra "thằng" duy nhất tiếp theo chứ không phải chỉ cộng dồn em cuối cùng đâu
Híc
 
Hình như dữ liệu trong bài của chủ topic đã được sắp xếp . Code này vẫn chạy đúng mà Thầy, nó cộng dồn "thằng" nào không duy nhất thôi, S luôn đúng vì không đổi cho tới khi "đít to" tìm ra "thằng" duy nhất tiếp theo chứ không phải chỉ cộng dồn em cuối cùng đâu
Híc
Đâu có được anh!
Khi anh viết code, anh phải tính đến trường hợp dữ liệu lộn xộn chứ (mà chuyện này là rất thường xuyên xảy ra) ---> Hên nó sort trước nên đúng thôi mà!
Còn không thì ít nhất anh cũng phải cho code sỏrt dữ liệu trước chứ
Ẹc... Ẹc..
 
Đâu có được anh!
Khi anh viết code, anh phải tính đến trường hợp dữ liệu lộn xộn chứ (mà chuyện này là rất thường xuyên xảy ra) ---> Hên nó sort trước nên đúng thôi mà!
Còn không thì ít nhất anh cũng phải cho code sỏrt dữ liệu trước chứ
Ẹc... Ẹc..
Tôi cũng đã thử, nếu sort trước thì kg cần
ArrKQ(Dic.Item(Arr(i, 1)), 2) = ArrKQ(Dic.Item(Arr(i, 1)), 2) + Arr(i, 2)
và kg cần Dic làm gì.
Còn không nếu chưa sort mà viết 1 code sort thì chắc chắn chậm hơn.
 
Lần chỉnh sửa cuối:
Giúp em sử dụng Hàm để lọc Code khách hàng bị trùng ...

Chào các Anh/Chị !!!
Em có một danh sách khách hàng trên 5 ngàn người, nhưng khi xem lại trong danh sách đó quá nhiều Code khách hàng bị trùng nhau. Cho nên em muốn lọc ra 1 Sheet riêng biệt những khách hàng thực sự hiện có. Chỉ duy nhất 1 khách hàng = 1 code mà thôi. Nhưng làm hoài không được, chỉ bằng cách Delete bằng tay cho những khách hàng bị trùng như vậy thì lâu quá. Nên gởi lên đây, nhờ các anh chị giúp xem nên sử dụng Hàm gì ???
Cảm ơn rất nhiều !!!
Kèm theo file thí dụ nhé...
 

File đính kèm

Chào các Anh/Chị !!!
Em có một danh sách khách hàng trên 5 ngàn người, nhưng khi xem lại trong danh sách đó quá nhiều Code khách hàng bị trùng nhau. Cho nên em muốn lọc ra 1 Sheet riêng biệt những khách hàng thực sự hiện có. Chỉ duy nhất 1 khách hàng = 1 code mà thôi. Nhưng làm hoài không được, chỉ bằng cách Delete bằng tay cho những khách hàng bị trùng như vậy thì lâu quá. Nên gởi lên đây, nhờ các anh chị giúp xem nên sử dụng Hàm gì ???
1/ Đổi ct tại D4 thành =COUNTIF($B$4:$B4,$B4) và copy xuống
2/ Dùng AutoFilter để lọc những ô mà có kq =1
3/ Copy và dán sang chỗ khác.
 
chào các anh/chị !!!
Em có một danh sách khách hàng trên 5 ngàn người, nhưng khi xem lại trong danh sách đó quá nhiều code khách hàng bị trùng nhau. Cho nên em muốn lọc ra 1 sheet riêng biệt những khách hàng thực sự hiện có. Chỉ duy nhất 1 khách hàng = 1 code mà thôi. Nhưng làm hoài không được, chỉ bằng cách delete bằng tay cho những khách hàng bị trùng như vậy thì lâu quá. Nên gởi lên đây, nhờ các anh chị giúp xem nên sử dụng hàm gì ???
Cảm ơn rất nhiều !!!
Kèm theo file thí dụ nhé...
nếu bạn dùng excel 2007-2010 thì chỉ cần chọn côt b và c sau đó làm theo hình là chưa đến 10s sẽ ra kết quả
 

File đính kèm

  • LOC.jpg
    LOC.jpg
    132.5 KB · Đọc: 100
Cảm ơn bạn nhiều, để làm thử nhé...
 
hàm tự động lọc ra danh sách không trùng nhau

Mình có 1 cột gồm 500 dòng. có 50 tên hàng hiển thị trong 500 dòng đó một cách hỗn độn.
Có cách nào dùng các hàm mà tạo ra một cột mới gồm 50 dòng liên tục hiển thị 50 tên hàng đó. Bình thường thì mình dùng Pivort là đưoọc ngay. Nhưng nay muốn dùng hàm để tạo ra 1 cột mới. C này sẽ là nguồn cho các cột khác tham chiếu tính toán. Mong các cao thủ chỉ giáo
 
Mình có 1 cột gồm 500 dòng. có 50 tên hàng hiển thị trong 500 dòng đó một cách hỗn độn.
Có cách nào dùng các hàm mà tạo ra một cột mới gồm 50 dòng liên tục hiển thị 50 tên hàng đó. Bình thường thì mình dùng Pivort là đưoọc ngay. Nhưng nay muốn dùng hàm để tạo ra 1 cột mới. C này sẽ là nguồn cho các cột khác tham chiếu tính toán. Mong các cao thủ chỉ giáo
muốn giúp thì cần có file mẫu
không nên hỏi mà không có ví dụ " hoặc bạn có thể search trên GPE từ khóa Lọc dữ liệu trùng hoặc lọc dữ liệu duy nhất
XEM THÊM FILE NHÉ
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn có thể xem file này nhé
 

File đính kèm

Bạn có thể xem file này nhé
Bài này đã được làm rất nhiều lần trên diễn đàn rồi... giờ làm lại nhé:
1> Đặt 2 name:
PHP:
Data =OFFSET($B$2,,,MATCH(REPT("Z",255),$B$2:$B$10000),)
PHP:
Pos =IF(Data="","",IF(MATCH(Data,Data,0)=ROW(INDIRECT("1:"&ROWS(Data))),MATCH(Data,Data,0),""))
2> Công thức:
PHP:
=IF(ROWS($1:1)>COUNT(Pos),"",INDEX(Data,SMALL(Pos,ROWS($1:1))))
Kéo fill công thức xuống
------------------------------------------------------------
Công thức tôi làm ở trên là có tính đến trường hợp dữ liệu nguồn có cell rổng luôn
Ngoài ra xin nói thêm: Công thức trích lọc duy nhất khá nặng, sẽ làm bảng tính bị chậm đi ---> Sao bạn không dùng Advanced Filer để lọc nhỉ?
 

File đính kèm

Mình biết là sẽ nặng nhưng vì mình có 1 sheet nguồn và mình căn cứ từ đó ra một loạt các báo cáo tự động. Vì vậy mình cần có 1 cột tự động như vậy. Có như vậy thì hàng ngày khi phát sinh mới mình chỉ cần update sheet nguồn là sẽ có các báo cáo khác tự động. Mà cho mình hỏi chút. Làm thế nào sử dụng đoạn code php nhỉ.
 
Bạn duy thuong và bạn ndu có thể dịch công thức giúp mình được không cả cột chính và cột phụ
 
bạn duy thuong và bạn ndu có thể dịch công thức giúp mình được không cả cột chính và cột phụ

ct này là lấy 1 lần duy nhất ở cột c sau đó cộng với số lớn nhất trong dãy kết quả, để tạo thành dãy số tự nhiên từ bé đến lớn
=if(countif($c$1:$c2,$c2:$c2)<>1,"",max(a$1:a1)+1)
=if(max(a:a)<rows($e$1:$e2)-1,"",vlookup(rows($e$1:$e2)-1,$a:$c,3,0))
màu xanh là nếu số lớn nhất trong dãy < row1 thì trả về giá trị "" ct này chủ yếu là tránh lỗi #n/a trong hàm vlookup
 
Bạn có thể thêm phần tự sắp xếp theo abc được không
 
Trong công thức PHP thì z và 255 là gì nhỉ. Mong bác chỉ giáo
 
Cám ơn bác. Nhưng mình muốn sau khi có danh sách rồi nó sẽ tự sắp xếp theo thự tự an pha bê được không
 
Chào các bạn,
Mình có một bảng dữ liệu gồm 5 cột A, B, C, D. Bây giờ mình muốn lọc ra với các điều kiện như sau
- Nếu các cột A,B,C giống nhau thì chỉ để lại một hàng còn các hàng tương ứng với cột C và D thì gộp lại.
- Nếu chỉ có cột A và B giống nhau thì xóa các ô trùng và hàng tương ứng với cột C, D để nguyên
- Nếu A và B khác nhau thì để nguyên.

Cảm ơn các bạn nhiều
 

File đính kèm

Ví dụ cột chứa dữ liệu của bạn là cột A.
Cột cần lọc ra danh sách xuất hiện duy nhất là cột B
Ở ô B1 bạn gõ công thức: =if(countif($A$1:A1;A1)>1;"";A1)
Sau đó kéo fill down đến hết dòng cuối cùng.
Ở cột B bạn chọn lọc non blank là ra danh sách giá trị duy nhất của cột A như bạn muốn

làm sao mình ko làm được, huhu
 
Ví dụ cột chứa dữ liệu của bạn là cột A.
Cột cần lọc ra danh sách xuất hiện duy nhất là cột B
Ở ô B1 bạn gõ công thức: =if(countif($A$1:A1;A1)>1;"";A1)
Sau đó kéo fill down đến hết dòng cuối cùng.
Ở cột B bạn chọn lọc non blank là ra danh sách giá trị duy nhất của cột A như bạn muốn

- Khi lập công thức như WhoamI thì những giá trị nào xuất hiện trên 2 lần sẽ không có.

- Em cũng đang băn khoăn về vấn đề trên. Trường hợp của em lọc ra danh sách duy nhất (các đối tượng trên 2 lần cũng sẽ xuất hiện). Ví dụ: A,B,C,B,A --> Khi lọc làm sao để có: A,B,C. . Rất mong được anh chị và các Bạn tư vấn giùm. Em xin cảm ơn!
 
Có đây rồi nè bạn ,còn chờ gì nữa ?
Lọc
Bài #386 đó
 
Hàm và công thức Excell

Nhờ các anh chị em trên diễn đàn giải hộ bài này
Dùng công thức để lọc dữ liệu trùng nhau > 2 ĐK trên 1 bảng tính
 
Lọc danh sách duy nhất

Các huynh tỷ cho em bít trong trường hợp này nên dùng công thức gì để tạo danh sách duy nhất
Em gửi file đính kèm

Mong nhận sự giúp đỡ!!!
 

File đính kèm

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

Back
Top Bottom