Hỏi về cách lọc dữ liệu và tính tổng?

Liên hệ QC

choncam

Thành viên mới
Tham gia
10/6/07
Bài viết
26
Được thích
7
Loc du lieu va tinh tong

kính gửi các anh/chị nhờ help em với,doan code sau em chỉnh mãi mà nó chỉ copy chứ không lọc được dữ liệu theo ngày tháng nhập vào. Kính mong các anh/chị giúp đỡ, cám ơn nhiều
Trân trọng kính chào.

PhanTuHuong: Bạn chú ý phải gõ chữ tiếng Việt nhé!
 

File đính kèm

  • Loc du lieu va tinh tong2.rar
    19.3 KB · Đọc: 169
Chỉnh sửa lần cuối bởi điều hành viên:
Sao bài này lại ở chỗ này, hình như bạn vận dụng file của Mr OkeBab mà làm chưa hết.
1/ Vùng dk trong cod là sai, phải là
Range("A4:AI36").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets(1).Range("$H$2:$I$3"), copytorange:=Sheets(1).Range("a5"), unique:=False
2/ Phần muốn gán ct sum, sao phải làm Range(B...), Range(C...)
mà sao không là
i = Range("A100").End(xlUp).Row
If i > 5 Then
Range("A" & i + 1).Value = "TONG CONG"
For j = 0 To 22 ' cot b- j=0, cot I- j=22
Range("B" & i + 1).Offset(0, j).Value = WorksheetFunction.Sum(Range("B6:B" & i).Offset(0, j))
Range("B" & i + 1).Offset(0, j).NumberFormat = "#,##0.0"
Next j
Range("A" & i + 1 & ":Y" & i + 1).Font.Bold = True
End If
Bạn xem và chỉnh lại có OK o?
 
choncam đã viết:
kính gửi các anh/chị nhờ help em với,doan code sau em chỉnh mãi mà nó chỉ copy chứ không lọc được dữ liệu theo ngày tháng nhập vào. Kính mong các anh/chị giúp đỡ, cám ơn nhiều
Trân trọng kính chào.

PhanTuHuong: Bạn chú ý phải gõ chữ tiếng Việt nhé!
Bạn xem nhé !!

Thân!
 

File đính kèm

  • Loc du lieu va tinh tong.rar
    23.7 KB · Đọc: 205
Mr Okebab đã viết:
Chào Okebab!
Mình mới chập chững bước vào thế giới VBA và đang học lõm các chiêu của các Đại ca trong làng VBA, do đó mình không dám có ý kiến gì đối với file của bạn (quá tuyệt). Qua cách làm của bạn mình có ý tưởng nhỏ nhờ bạn có thể viết lại theo ý tưởng này được không? ý tưởng như sau:
- Để VBA tự động nhận tên cột (về dòng thì ổn rồi), chẳng hạn tại câu câu lệnh như :".Range("B" & i + 1).Value = WorksheetFunction.Sum(.Range("B6:B" & i))" mình hiểu là giá trị tại ô B, C,D....& số dòng = ....nhưng có cách nào để VBA tự động nhận biết đó là ô B,C,D....IV& số dòng mà không cần phải viết tứng câu lệnh cho từng ô từ A&... ->IV&.....(ý mình muốn áp dụng tuỳ theo số cột của bảng tính chứ không phải từ A-Y như trong file của bạn).
- Về tính tổng sau khi đã lọc xong thì mình muốn không hẳn là địa chỉ chính xác như B6 mà là tự nhận biết địa chỉ của ô đầu đến ô ....& i.
Thành thật nhờ bạn giúp vì mình gặp rất nhiều khó khăn trong việc tự học VBA. Mong sớm được hồi âm.
 
bacute đã viết:
- Để VBA tự động nhận tên cột (về dòng thì ổn rồi), chẳng hạn tại câu câu lệnh như :".Range("B" & i + 1).Value = WorksheetFunction.Sum(.Range("B6:B" & i))" mình hiểu là giá trị tại ô B, C,D....& số dòng = ....nhưng có cách nào để VBA tự động nhận biết đó là ô B,C,D....IV& số dòng mà không cần phải viết tứng câu lệnh cho từng ô từ A&... ->IV&.....(ý mình muốn áp dụng tuỳ theo số cột của bảng tính chứ không phải từ A-Y như trong file của bạn).
- Về tính tổng sau khi đã lọc xong thì mình muốn không hẳn là địa chỉ chính xác như B6 mà là tự nhận biết địa chỉ của ô đầu đến ô ....& i.
Thành thật nhờ bạn giúp vì mình gặp rất nhiều khó khăn trong việc tự học VBA. Mong sớm được hồi âm.

Mạn phép Bap sửa cho bạn đoạn code theo ý bạn.
 

File đính kèm

  • Loc du lieu va tinh tong 15-Oct-07 16-17.Rar
    22.4 KB · Đọc: 182
Rất cám ơn Soibien, bạn đã làm đúng ý mình rồi, qua file và 2 địa chỉ bạn cho đã giúp mình hiểu thêm rất nhiều về VBA. Chúc bạn thành công trong công việc và gặp nhiều may mắn trong cuộc sống.
Chào thân ái!
 
Chào các bạn. Mình đọc bài này thấy file của bạn Soibien rất hay. nhưng cho mình hỏi có thể thêm đoạn code như thế nào để có thêm dòng tong cong ở cuối mỗi ngày nhỉ. Tức là cộng số liệu của mỗi ngày riêng biệt. Xin cám ơn các bạn
 
Mình tham gia với Soibien theo ý tưởng của mình như sau:
Để tránh viết lệnh quá dài mình có thể dùng 1 số cách để lựa chọn cột để đưa vào công thức:
-Chuyển chế độ tham chiếu sang R1C1 sau đó trong vòng lặp For đổi dòng ta chèn vòng lặp đổi cột.
-Dùng range(cell(dong,cot),cell(dong,cot)) là ta có thể lựa chọn dòng cột đwợc rồi.
-Dùng hàm Offset để xác định vị trí.
Xin lỗi, mình không viết được code mẫu cho bạn. Mình đã thử tốc dộ nhanh hơn đấy
(Còn một cách nữa là giữ lại code của bạn dùng hàm choose hoặc switch để trong vòng lặp từ 2-24 sé chọn ra ký tự tương ứng cột cho bạn)
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom