Làm thế nào copy những tiêu đề lọc (1 người xem)

Liên hệ QC

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

anh khanh

Thành viên mới
Tham gia
18/9/14
Bài viết
2
Được thích
0
Mình có file mua hàng trong tháng, trong đấy có hàng nghìn mặt hàng, và có những mặt hàng 1 tháng mua nhiều lần, vì thế khi lọc thì mình không thể làm ra 1 file trong đấy chỉ gói gọn đầu mục những mặt hàng ví dụ:

STT Tên hàng số lượng
1 Thép 15 10
2 ống 13 5
3 bulông 4
4 thép 15 5
5 ống 13 6
6 bulông 7

Mình muốn lọc được thành bảng thế này

1 thép 15 15
2. ống 13 11
3 bulông 12

Cảm ơn các bạn nhé
 

File đính kèm

Dùng PivotTable, đưa tên hàng vào Row
 
Cách khác là sử dụng AdvancedFilter (hoặc dùng công thức) để lọc danh sách duy nhất, sau đó dùng SUMIF để tính tổng.
Thêm cách khác nữa là sử dụng VBA:
[GPECODE=vb]Sub TongHop()
Dim i As Long, k As Long, Tmp, Dic
Sheet1.[F1:H1].Value = Sheet1.[A3:C3].Value
Sheet1.[F2:H1000].Clear
Tmp = Sheet1.[A4:C10000]
With CreateObject("Scripting.Dictionary")
For i = 1 To UBound(Tmp)
If IsEmpty(Tmp(i, 2)) Then Exit For
If Not .Exists(Tmp(i, 2)) Then
k = k + 1
.Add Tmp(i, 2), Tmp(i, 3)
Else
.Item(Tmp(i, 2)) = .Item(Tmp(i, 2)) + Tmp(i, 3)
End If
Next
Sheet1.[F2].Resize(k).Value = [=ROW(1:10000)]
Sheet1.[G2].Resize(k).Value = WorksheetFunction.Transpose(.Keys)
Sheet1.[H2].Resize(k).Value = WorksheetFunction.Transpose(.Items)
End With
End Sub[/GPECODE]
 
Cách khác là sử dụng AdvancedFilter (hoặc dùng công thức) để lọc danh sách duy nhất, sau đó dùng SUMIF để tính tổng.
Thêm cách khác nữa là sử dụng VBA:
[GPECODE=vb]Sub TongHop()
Dim i As Long, k As Long, Tmp, Dic
Sheet1.[F1:H1].Value = Sheet1.[A3:C3].Value
Sheet1.[F2:H1000].Clear
Tmp = Sheet1.[A4:C10000]
With CreateObject("Scripting.Dictionary")
For i = 1 To UBound(Tmp)
If IsEmpty(Tmp(i, 2)) Then Exit For
If Not .Exists(Tmp(i, 2)) Then
k = k + 1
.Add Tmp(i, 2), Tmp(i, 3)
Else
.Item(Tmp(i, 2)) = .Item(Tmp(i, 2)) + Tmp(i, 3)
End If
Next
Sheet1.[F2].Resize(k).Value = [=ROW(1:10000)]
Sheet1.[G2].Resize(k).Value = WorksheetFunction.Transpose(.Keys)
Sheet1.[H2].Resize(k).Value = WorksheetFunction.Transpose(.Items)
End With
End Sub[/GPECODE]
Cách khác là sử dụng AdvancedFilter (hoặc dùng công thức) sử dụng 2 cái này thế nào hả bạn, bạn chỉ chi tiết giúp mình với mình dốt khoản này quá. Thank bạn nhé
 
Cách khác là sử dụng AdvancedFilter (hoặc dùng công thức) sử dụng 2 cái này thế nào hả bạn, bạn chỉ chi tiết giúp mình với mình dốt khoản này quá. Thank bạn nhé
Nếu sử dụng AdvancedFilter thì bạn nhớ 2 tùy chọn Copy to another location và Unique records only. Sau đó lại lập công thức thủ công cho cột STT và Số lượng.

Nếu sử dụng công thức hoàn toàn thì có thể thế này:
1. Đặt 2 name động:
Mã:
TenHang=OFFSET(Sheet1!$B$3,1,,COUNTA(Sheet1!$B:$B)-1)
SoLuong=OFFSET(TenHang,,1)
2. Sử dụng công thức sau cho ô G2 và fill xuống (công thức này tôi học từ bài #7 của mod Cá ngừ F1):
Mã:
=IFERROR(INDEX(TenHang,MATCH(TRUE,INDEX(ISNA(MATCH(TenHang,$G$1:G1,0)),),0)),"")
3. Sử dụng công thức sau cho cột STT và cột Số lượng:
Mã:
F2=IF(G2="","",COUNTA($G$2:G2))
H2=IF(G2="","",SUMIF(TenHang,G2,SoLuong))
Bạn tham khảo trong file sẽ rõ.

Trong cách giải này, việc đặt 2 name động TenHang và SoLuong nhằm mục đích khi danh sách ở bảng chính bị thay đổi (thêm, bớt, sửa) thì kết quả tự động cập nhật theo mà không phải đặt lại địa chỉ trong các công thức lọc tên hàng và tính số lượng.
 

File đính kèm

Web KT

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

Back
Top Bottom