Tìm kiếm trả nhiều kết quả (1 người xem)

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

Tôi tuân thủ nội quy khi đăng bài
Có

hanhnguyen120221cuty

Thành viên mới
Tham gia
16/7/25
Bài viết
18
Được thích
0
Chào các bạn trên diễn đàn. Các bạn giúp mình, mình có một danh sách các đơn hàng mà có 2 giá trị, mình muốn tìm kiếm các nhiều đơn hàng mà mỗi đơn có 2 giá trị. Mình gửi file mẫu cần tìm. Giúp mình công thức excel.
 

File đính kèm

Chào các bạn trên diễn đàn. Các bạn giúp mình, mình có một danh sách các đơn hàng mà có 2 giá trị, mình muốn tìm kiếm các nhiều đơn hàng mà mỗi đơn có 2 giá trị. Mình gửi file mẫu cần tìm. Giúp mình công thức excel.
Mã:
M9 =IFERROR(INDEX(F$1:F$12,AGGREGATE(15,6,ROW($7:$12)/(COUNTIF($F$7:$F$12,$F$7:$F$12)=2),ROWS($1:1))),"")
Mã:
Copy cho các ô còn lại
 
Mình cảm ơn bạn nhiều.
Bài đã được tự động gộp:

:):1a:

 
Lần chỉnh sửa cuối:
Chào các bạn trên diễn đàn. Các bạn giúp mình, mình có một danh sách các đơn hàng mà có 2 giá trị, mình muốn tìm kiếm các nhiều đơn hàng mà mỗi đơn có 2 giá trị. Mình gửi file mẫu cần tìm. Giúp mình công thức excel.
Thử công thức này:

=FILTER(F7:G13,COUNTIF(F7:F13,F7:F13)=2)
 
countif(...)=2 : xác định dữ liệu xuất hiện 2 lần
row/countif : tính dòng dữ liệu xuất hiện 2 lần, những dòng khác bị lỗi
aggrate trả về lần lượt thứ tự dòng không bị lỗi
Số đơn đã lấy được, còn số tiền tương ứng thì chưa có thì phải, xem giúp mình.
 
Lần chỉnh sửa cuối:
Chào bạn @hanhnguyen120221cuty, phần còn thiếu số tiền là vì công thức ở cột đơn mới chỉ trả về cột đơn, chưa lấy sang cột tiền. Mình hay làm theo một trong hai cách sau, tùy phiên bản Excel bạn đang dùng.

Cách gọn nhất nếu bạn dùng Excel 365: dùng FILTER lấy cả hai cột đơn và tiền cùng lúc, ví dụ:
=FILTER(F7:G13,COUNTIF(F7:F13,F7:F13)=2)
Công thức này trả về cả đơn hàng và số tiền tương ứng trong cùng một lần lọc, vì vùng lọc là F7:G13 chứ không chỉ F7:F13. Bạn chỉ cần gõ ở một ô, các hàng còn lại sẽ tự tràn xuống, không cần kéo công thức.

Nếu bạn dùng bản Excel cũ hơn, không có FILTER, bạn giữ nguyên cách INDEX/AGGREGATE của bạn HieuCD cho cột đơn, rồi sang cột tiền dùng cùng một chỉ số dòng, chỉ đổi vùng lấy dữ liệu từ cột F sang cột G, ví dụ:
=IFERROR(INDEX(G$1:G$12,AGGREGATE(15,6,ROW($7:$12)/(COUNTIF($F$7:$F$12,$F$7:$F$12)=2),ROWS($1:1))),"")
Lưu ý nhỏ mình hay gặp: khi copy sang cột tiền mà quên đổi F thành G thì kết quả vẫn là mã đơn, nhìn như chưa có tiền; và nếu số tiền đang lưu dạng text thì sau khi lấy ra nên kiểm tra lại bằng cách cộng thử hoặc dùng VALUE để chuyển về số trước khi tổng hợp. Bạn thử cách FILTER trước, nếu báo lỗi thì cho mình biết phiên bản Excel bạn đang dùng để mình gợi ý tiếp.
 
Chào bạn @hanhnguyen120221cuty, phần còn thiếu số tiền là vì công thức ở cột đơn mới chỉ trả về cột đơn, chưa lấy sang cột tiền. Mình hay làm theo một trong hai cách sau, tùy phiên bản Excel bạn đang dùng.

Cách gọn nhất nếu bạn dùng Excel 365: dùng FILTER lấy cả hai cột đơn và tiền cùng lúc, ví dụ:
=FILTER(F7:G13,COUNTIF(F7:F13,F7:F13)=2)
Công thức này trả về cả đơn hàng và số tiền tương ứng trong cùng một lần lọc, vì vùng lọc là F7:G13 chứ không chỉ F7:F13. Bạn chỉ cần gõ ở một ô, các hàng còn lại sẽ tự tràn xuống, không cần kéo công thức.

Nếu bạn dùng bản Excel cũ hơn, không có FILTER, bạn giữ nguyên cách INDEX/AGGREGATE của bạn HieuCD cho cột đơn, rồi sang cột tiền dùng cùng một chỉ số dòng, chỉ đổi vùng lấy dữ liệu từ cột F sang cột G, ví dụ:
=IFERROR(INDEX(G$1:G$12,AGGREGATE(15,6,ROW($7:$12)/(COUNTIF($F$7:$F$12,$F$7:$F$12)=2),ROWS($1:1))),"")
Lưu ý nhỏ mình hay gặp: khi copy sang cột tiền mà quên đổi F thành G thì kết quả vẫn là mã đơn, nhìn như chưa có tiền; và nếu số tiền đang lưu dạng text thì sau khi lấy ra nên kiểm tra lại bằng cách cộng thử hoặc dùng VALUE để chuyển về số trước khi tổng hợp. Bạn thử cách FILTER trước, nếu báo lỗi thì cho mình biết phiên bản Excel bạn đang dùng để mình gợi ý tiếp.
Nhưng mình muốn lấy theo cột K, cột F chỉ là nguồn lấy dữ liệu, ví dụ cột K chỉ muốn lấy đơn thứ 2 và thứ 3. Thì cột kết quả sẽ cho ra 2 giá trị của đơn thứ 2 và đơn thứ 3.
 
Chào bạn @hanhnguyen120221cuty, cảm ơn bạn đã nói rõ thêm. Mình hiểu là cột F vẫn là nguồn dữ liệu, còn cột K là nơi bạn muốn lấy ra chỉ đơn xuất hiện lần thứ 2 và lần thứ 3, kèm số tiền tương ứng, đúng không? Nếu đúng như vậy thì cách làm chắc chắn nhất là thêm một cột phụ đếm số lần xuất hiện, vì FILTER hay INDEX/AGGREGATE đều khó đếm lần xuất hiện nếu chỉ nhìn vào cột F.

Bạn thêm cột phụ, ví dụ cột H, từ H7 trở xuống với công thức =COUNTIF($F$7:F7,F7). Công thức này đếm tới dòng hiện tại, nên lần đầu xuất hiện sẽ ra 1, lần thứ hai ra 2, lần thứ ba ra 3. Sau đó bạn lọc theo cột phụ này, nếu dùng Excel 365 thì dùng =FILTER(F7:G13,(H7:H13=2)+(H7:H13=3)). Công thức này trả về cả mã đơn và số tiền của đúng hai lần xuất hiện đó, vì vùng lọc là F7:G13.

Lỗi thường gặp là dùng COUNTIF cả vùng $F$7:$F$13, khi đó mọi lần xuất hiện đều ra cùng một số 2, nên không phân biệt được lần thứ mấy. Bạn nhớ khóa đầu vùng bằng $F$7 còn cuối vùng để tương đối là F7, rồi kéo xuống.

Bạn cho mình xem cột K trong file của bạn đang chứa gì được không, ví dụ K là danh sách đơn cần lấy hay là cột kết quả, mình sẽ viết đúng công thức cho vị trí đó?
 
Cột K là danh sách đơn mình cần lấy. Cột kết quả là kết quả mình cần lấy ra. Excel của mình không phải 365 mình dùng excel thông thường.
Chào bạn @hanhnguyen120221cuty, cảm ơn bạn đã nói rõ thêm. Mình hiểu là cột F vẫn là nguồn dữ liệu, còn cột K là nơi bạn muốn lấy ra chỉ đơn xuất hiện lần thứ 2 và lần thứ 3, kèm số tiền tương ứng, đúng không? Nếu đúng như vậy thì cách làm chắc chắn nhất là thêm một cột phụ đếm số lần xuất hiện, vì FILTER hay INDEX/AGGREGATE đều khó đếm lần xuất hiện nếu chỉ nhìn vào cột F.

Bạn thêm cột phụ, ví dụ cột H, từ H7 trở xuống với công thức =COUNTIF($F$7:F7,F7). Công thức này đếm tới dòng hiện tại, nên lần đầu xuất hiện sẽ ra 1, lần thứ hai ra 2, lần thứ ba ra 3. Sau đó bạn lọc theo cột phụ này, nếu dùng Excel 365 thì dùng =FILTER(F7:G13,(H7:H13=2)+(H7:H13=3)). Công thức này trả về cả mã đơn và số tiền của đúng hai lần xuất hiện đó, vì vùng lọc là F7:G13.

Lỗi thường gặp là dùng COUNTIF cả vùng $F$7:$F$13, khi đó mọi lần xuất hiện đều ra cùng một số 2, nên không phân biệt được lần thứ mấy. Bạn nhớ khóa đầu vùng bằng $F$7 còn cuối vùng để tương đối là F7, rồi kéo xuống.

Bạn cho mình xem cột K trong file của bạn đang chứa gì được không, ví dụ K là danh sách đơn cần lấy hay là cột kết quả, mình sẽ viết đúng công thức cho vị trí đó?
Bài đã được tự động gộp:

Ở cột K mình có thể là một đơn bất kỳ mình lấy ở phần nguồn. Ra kết quả mong muốn như cột kết quả. Và cột K mình muốn lấy nhiều đơn và kết quả mong muốn như cột kết quả.




Bài đã được tự động gộp:
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn copy công thức qua cột số tiền, nếu chưa được thì gởi file lên xem bị g
Bạn copy công thức qua cột số tiền, nếu chưa được thì gởi file lên xem bị gì
Xem giúp mình, mình muốn lấy thông tin đơn hàng cột K, cột K lấy thông tin từ cột F. Ra kết quả lấy đủ 2 giá trị của đơn hàng, và mình muốn lấy thông tin của nhiều đơn liên tục.
 
Chào bạn @hanhnguyen120221cuty, mình hiểu rõ hơn rồi: cột F là nguồn, cột K là danh sách đơn bạn muốn lấy, mỗi đơn cần lấy đủ cả 2 giá trị tiền ở cột G, và bạn dùng Excel thường nên không dùng FILTER được.

Bạn làm thêm cột phụ H ở vùng nguồn, từ H7 trở xuống: =COUNTIF($F$7:F7,F7). Công thức này đánh số lần xuất hiện 1, 2 cho từng mã đơn; nhớ khóa $F$7 ở đầu và để F7 cuối mở để vùng đếm mở rộng dần khi kéo xuống.

Ở vùng kết quả, cột L là mã đơn cần lấy, bạn lặp mỗi mã 2 lần liên tiếp, có thể gõ tay hoặc lấy tự động từ cột K bằng =INDEX($K$7:$K$20,INT((ROW()-7)/2)+1). Cột M đếm lần xuất hiện: =COUNTIF($L$7:L7,L7). Cột N lấy số tiền: =IFERROR(INDEX($G$7:$G$13,AGGREGATE(15,6,(ROW($F$7:$F$13)-ROW($F$7)+1)/(($F$7:$F$13=L7)*($H$7:$H$13=M7)),1)),"").

Lỗi hay gặp là quên khóa vùng $F$7:$F$13 nên kéo xuống vùng đếm bị lệch, và quên bọc IFERROR nên ô thừa hiện lỗi. Bạn thử với vài đơn trước, nếu đơn nào chỉ có một giá trị thì dòng thứ hai sẽ trống, đó là đúng.
 
Xem giúp mình, mình muốn lấy thông tin đơn hàng cột K, cột K lấy thông tin từ cột F. Ra kết quả lấy đủ 2 giá trị của đơn hàng, và mình muốn lấy thông tin của nhiều đơn liên tục.
Với dữ liệu quá đẹp trong file.
Mã:
M9 =INDEX($K$8:$K$999,ROWS($1:2)/2)
N9 =IFERROR(INDEX($G$7:$G$999,MATCH(M9,$F$7:$F$999,0)+MOD(ROWS($1:2),2)),"")
Copy xuống, nếu không thích số "0" ở cột "M" khi copy dư thì dùng format cell ẩn đi số "0"
Nếu cần gì, bạn gởi lại file với dữ liệu có đầy đủ các trường hợp kết quả có khả năng xảy ra.
 

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

Back
Top Bottom