Sắp xếp và tính tổng (1 người xem)

Liên hệ QC

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

Tham gia
14/9/12
Bài viết
312
Được thích
68
Nghề nghiệp
VT
Nhờ các A/C nghĩ cách giùm Sắp xếp và tính tổng sau khi sắp xếp
 

File đính kèm

Nhờ các A/C nghĩ cách giùm Sắp xếp và tính tổng sau khi sắp xếp
Tôi thấy bạn đặt vùng dữ liệu từ A5 :A23 là data vậy công thức tại D5 :
PHP:
=INDEX(data,MATCH(1,INDEX((COUNTIF($D$4:D4,data)=0)*(data<>""),0),0))
Kết thúc bằng phím Enter và copy xuống cho các ô còn lại
Công thức tại E5 :
PHP:
=SUMIF(data,D5,$B$5:$B$23)
Copy xuống.
Nếu muốn loại bỏ lỗi khi hết giá trị cần lọc thì có thể dùng công thức này cho D5 :
PHP:
=LOOKUP(REPT("z",255),CHOOSE({1;2},"",INDEX(data,MATCH(1,INDEX((COUNTIF($D$4:D4,data)=0)*(data<>""),0),0))))
 
Nhờ các A/C nghĩ cách giùm Sắp xếp và tính tổng sau khi sắp xếp

Tôi nhìn bảng 2 chỉ thấy lọc duy nhất chứ có thấy sắp xếp đâu?
Hay bây giờ bạn muốn vừa lọc vừa sắp xếp? Nếu thế thì:

1. Đặt name data
Mã:
=$A$5:$A$23

2. Chọn ô D5, đặt name arr
Mã:
=IF((data<>"")*(COUNTIF($D$4:$D4;data)=0);COUNTIF(data;"<"&data);"")

3. công thức cho D5
Mã:
=IFERROR(INDEX(data;MATCH(SMALL(arr;1);arr;0));"")

kéo xuống dưới.

4. công thức cho E5
Mã:
=IF($D5<>"";SUMIF(data;$D5;OFFSET(data;;1));"")

kéo xuống dưới.
 
Cảm ơn 2 bạn: siwtom, hoamattroicoi
Mình làm theo hoamattroicoi thì kết quả thấy đúng còn làm theo siwtom lại ko được nhỉ. Mình chưa hiểu nhiều lắm về công thức này, nên mình sẽ nghiên cứu kỹ để tìm hiểu xem tại sao. Cảm ơn 2 bạn nhé.
Công thức bài #3 là đúng.
Bạn đọc thật kỹ hướng dẫn đặc biệt là mục số 2
2. Chọn ô D5, đặt name arr
Ngoài ra bạn thay thế toàn bộ dấu chấm phảy ; bằng dấu phảy ,
 
Công thức bài #3 là đúng.
Bạn đọc thật kỹ hướng dẫn đặc biệt là mục số 2

Ngoài ra bạn thay thế toàn bộ dấu chấm phảy ; bằng dấu phảy ,

Cám ơn dhn46 đã tiếp sức.

@chủ chủ đề: nếu bài của hoamattroicoi đúng ý bạn thì bạn viết "sắp xếp" ở tiêu đề và nội dung làm gì?
Bài của tôi là vừa lọc vừa sắp xếp. Nếu bạn chỉ cần lọc thôi thì dùng code của hoamattroicoi nhé.
 
Cái này công thức làm gì cho mệt đầu, dùng Pivot Table 5 giây là xong mà.
 
@chủ chủ đề: nếu bài của hoamattroicoi đúng ý bạn thì bạn viết "sắp xếp" ở tiêu đề và nội dung làm gì?
Bài của tôi là vừa lọc vừa sắp xếp. Nếu bạn chỉ cần lọc thôi thì dùng code của hoamattroicoi nhé.[/QUOTE]

Thật là xin lỗi. Không biết nên nói thể nào cả ... Mình nhập vào thì cứ báo lỗi, trong khi về vấn đề này minh lại chưa hiểu biết nhiều. Thật lòng cảm ơn mọi người trên diễn đàn, mình sẽ nghiên cứu thử lại thêm nhiều lần nữa để tìm hiểu tại sao.
Tuy nhiên cách này mình thấy bảng tính chạy lâu quá, không biết có cách nào nhanh hơn không. Đặc biệt khi thay đổi 1 số dòng nào đó thì hơi mất thời gian. ở đây mình mới thử có khoảng 600 dòng. Hay do máy tính mình kém quá.
 

File đính kèm

Thật là xin lỗi. Không biết nên nói thể nào cả ... Mình nhập vào thì cứ báo lỗi, trong khi về vấn đề này minh lại chưa hiểu biết nhiều. Thật lòng cảm ơn mọi người trên diễn đàn, mình sẽ nghiên cứu thử lại thêm nhiều lần nữa để tìm hiểu tại sao.
Tuy nhiên cách này mình thấy bảng tính chạy lâu quá, không biết có cách nào nhanh hơn không. Đặc biệt khi thay đổi 1 số dòng nào đó thì hơi mất thời gian. ở đây mình mới thử có khoảng 600 dòng. Hay do máy tính mình kém quá.

số liệu của bạn quá lớn nên việc sử dụng cthức mảng làm tốc độ tính ko nhanh được,
bạn có thể đưa vào name để tăng tốc phần nào
tại F2 đặt name
Mã:
dk=MATCH(0,COUNTIF(XL!$F$1:F1,Data)*(Data<>""),0)
cthức tại
Mã:
F2=INDEX(Data,DK)

ngoài ra bạn có thể sử dụng các cách khác nhanh hơn như remove duplicated hay pivot table và nhờ các thầy viết code vba
 
Lần chỉnh sửa cuối:
Mong các A/c chỉ giúp xem tại sao như vậy. Mình không tìm nổi. Cảm ơn.
 

File đính kèm

mhung12005
cảm ơn bạn. Đúng là mình dùng Excel 2003. Khi thay công thức
=IF(ISERROR(INDEX(Data,MATCH(SMALL(arr,1),arr,0))) ,"",INDEX(Data,MATCH(SMALL(arr,1),arr,0)))
thì đã hết xảy ra lỗi rồi.
cảm ơn nhé.
 
Mình cũng có yêu cầu giống bác chủ top. Tuy nhiên mình thấy là dữ liệu sau khi lọc sang một bảng khác thì mình sẽ ko biết trước được số hàng chứa dữ liệu lọc ra sẽ là bao nhiêu. Chẳng hạn như file của bác chủ có 6 loại con thì khi lọc ra sẽ được 1 cột 6 hàng, nhưng nếu khi cần sửa đổi bảng dữ liệu nguồn thì số hàng sẽ khác. Vậy mình sẽ kéo công thức hú hoạ một số hàng, cho đến khi thấy hàng trắng thì ngừng. Có cách nào để tự động lọc ra một cột có số hàng tự động thay đổi theo bảng dữ liệu nguồn không nhỉ.
 
số liệu của bạn quá lớn nên việc sử dụng cthức mảng làm tốc độ tính ko nhanh được,
bạn có thể đưa vào name để tăng tốc phần nào
tại F2 đặt name
Mã:
dk=MATCH(0,COUNTIF(XL!$F$1:F1,Data)*(Data<>""),0)
cthức tại
Mã:
F2=INDEX(Data,DK)

ngoài ra bạn có thể sử dụng các cách khác nhanh hơn như remove duplicated hay pivot table và nhờ các thầy viết code vba
Chào Let-GâuGâu
sao mình làm theo hướng dẫn của bạn mả ở ô F2 báo lỗi, máy vẫn chạy chậm
giúp mình với
 
Web KT

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

Back
Top Bottom