tieutuvodanh192
Thành viên thường trực
- Tham gia
- 25/3/19
- Bài viết
- 289
- Được thích
- 322
File đính kèm
Lần chỉnh sửa cuối:
Dùng cốt được không ?Em chào mọi người,
Nhờ các anh/chị xem và tư vấn giúp em công thức ở 2 trường hợp bên dưới trên phiên bản Excel 2013 với nha, không cần thêm cột phụ và nếu được thì không cần cố định vùng dữ liệu nguồn. Với phiên bản Excel thấp thực sự em đang bí ý tưởng.
Xin cảm ơn.!
View attachment 295001
Code em có thể tự mò mò được anh, nhưng dùng code thì không undo được, file này giao cho các chị em dùng, họ thích được undo nên em mới phải tìm cách viết công thức anh ạ.Dùng cốt được không ?
Ý 1 thì dễ hơn tự làm dựa theo công thức ý 2 này (hơi loằng ngoằng):Em chào mọi người,
Nhờ các anh/chị xem và tư vấn giúp em công thức ở 2 trường hợp bên dưới trên phiên bản Excel 2013 với nha, không cần thêm cột phụ và nếu được thì không cần cố định vùng dữ liệu nguồn. Với phiên bản Excel thấp thực sự em đang bí ý tưởng.
Xin cảm ơn.!
View attachment 295001
=IFERROR(INDEX($C$6:$D$28,AGGREGATE(15,6,(ROW($B$6:$B$28)-5)/($B$6:$B$28=$L$4),ROW(A1)-COUNTIF($B$6:$B$28,$L$4)*(ROW(A1)>COUNTIF($B$6:$B$28,$L$4))),1+(ROW(A1)>COUNTIF($B$6:$B$28,$L$4))),"")
=IFERROR(INDEX($A$5:$D$28,AGGREGATE(15,6,ROW($A$5:$D$28)/($B$5:$B$28=$G$4)-4,ROW(A1)),COLUMN(A1)),"")
=IFERROR(INDEX($C$5:$D$28,AGGREGATE(15,6,ROW($A$5:$A$28)/($B$5:$B$28=$L$4)-4,MOD(ROW(A1)-1,COUNTIF($B$5:$B$28,$L$4))+1),TRUNC((ROW(A1)-1)/COUNTIF($B$5:$B$28,$L$4))+1),"")
=INDIRECT(TEXT(MID(REPT(AGGREGATE(15,6,ROW($C$5:$D$28)/($B$5:$B$28=$L$4)+COLUMN($C$5:$D$28)*1000,ROW(A1)),2),2,4),"R0C0"),0)
Đây chỉ là lọc và xếp thôi. Mắc chi không "undo" được?Code em có thể tự mò mò được anh, nhưng dùng code thì không undo được, file này giao cho các chị em dùng, họ thích được undo nên em mới phải tìm cách viết công thức anh ạ.
Ý 1 thì dễ hơn tự làm dựa theo công thức ý 2 này (hơi loằng ngoằng):
Mã:=IFERROR(INDEX($C$6:$D$28,AGGREGATE(15,6,(ROW($B$6:$B$28)-5)/($B$6:$B$28=$L$4),ROW(A1)-COUNTIF($B$6:$B$28,$L$4)*(ROW(A1)>COUNTIF($B$6:$B$28,$L$4))),1+(ROW(A1)>COUNTIF($B$6:$B$28,$L$4))),"")
Cảm ơn 2 anh rất nhiều, em đã mở mang được rất nhiều nhờ mổ xẻ công thức 2 anh cho. Xin cảm ơn !Ý 1 đây :
Ý 2:Mã:=IFERROR(INDEX($A$5:$D$28,AGGREGATE(15,6,ROW($A$5:$D$28)/($B$5:$B$28=$G$4)-4,ROW(A1)),COLUMN(A1)),"")
Cả ý 1 và ý 2 có thể làm theo cách này:Mã:=IFERROR(INDEX($C$5:$D$28,AGGREGATE(15,6,ROW($A$5:$A$28)/($B$5:$B$28=$L$4)-4,MOD(ROW(A1)-1,COUNTIF($B$5:$B$28,$L$4))+1),TRUNC((ROW(A1)-1)/COUNTIF($B$5:$B$28,$L$4))+1),"")
Mã:=INDIRECT(TEXT(MID(REPT(AGGREGATE(15,6,ROW($C$5:$D$28)/($B$5:$B$28=$L$4)+COLUMN($C$5:$D$28)*1000,ROW(A1)),2),2,4),"R0C0"),0)
Cháu chào chú, kiến thức về VBA code của cháu cũng chỉ lõm bõm tự vọc vạch thôi ạ, nếu có chỗ nào thiếu sót nhờ chú chỉ bảo giúp.Đây chỉ là lọc và xếp thôi. Mắc chi không "undo" được?
Cần tập cái nhìn cao rộng hơn về từ "undo".
Chính xác anh, nếu dùng cột phụ thì đơn giản rồi anh, mấu chốt file này đã được Protect sheet, mẫu dùng chung cho toàn cty, nên không tùy tiện thêm bớt dữ liệu được anh.Bài này bạn thêm 1 cột phụ đầu tiên, đếm giá trị thành 1_1, 1_2,..., 2_1, 2_2... thì khi đó chỉ cần vlookup thuần
=FILTER(A6:D28,B6:B28=1)
=TOCOL(FILTER(C6:D28,B6:B28=2),,1)
Không phải về VBA, mà là cách nhìn và giải quyết vấn đề....
Cháu chào chú, kiến thức về VBA code của cháu cũng chỉ lõm bõm tự vọc vạch thôi ạ, nếu có chỗ nào thiếu sót nhờ chú chỉ bảo giúp.
Chỗ công thức indirect chỉ áp dụng khi cột chứa vùng cần lấy nhỏ hơn 10 (3 và 4 tương ứng cột C, D). Bạn thử ứng dụng để lấy dữ liệu khi cột dữ liệu ở cột 9 và 10 (cột i, j) thử xem sao.Cảm ơn 2 anh rất nhiều, em đã mở mang được rất nhiều nhờ mổ xẻ công thức 2 anh cho. Xin cảm ơn !
Cháu chào chú, kiến thức về VBA code của cháu cũng chỉ lõm bõm tự vọc vạch thôi ạ, nếu có chỗ nào thiếu sót nhờ chú chỉ bảo giúp.