Viết lệnh code lọc và tổng hợp dữ liệu! (1 người xem)

  • Thread starter Thread starter truc l
  • Ngày gửi Ngày gửi
Liên hệ QC

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

truc l

Thành viên mới
Tham gia
14/9/13
Bài viết
34
Được thích
0
Tình hình là pivotable tuy lọc cũng rất hay nhưng mình muốn nghiên cứu thêm về macro.
Nhờ cả nhà giúp mình lệnh code để lọc dữ liệu này ạ.
Xin cảm ơn mọi người ạ.
 

File đính kèm

Tình hình là pivotable tuy lọc cũng rất hay nhưng mình muốn nghiên cứu thêm về macro.
Nhờ cả nhà giúp mình lệnh code để lọc dữ liệu này ạ.
Yêu cầu: chỉ lọc dữ liệu từ ngày đến ngày trong 1 tháng.
Xin cảm ơn mọi người ạ.
 

File đính kèm

Upvote 0
Tình hình là pivotable tuy lọc cũng rất hay nhưng mình muốn nghiên cứu thêm về macro.
Nhờ cả nhà giúp mình lệnh code để lọc dữ liệu này ạ.
Yêu cầu: chỉ lọc dữ liệu từ ngày đến ngày trong 1 tháng.
Xin cảm ơn mọi người ạ.
Đang hỏi ở đây thì cứ ở đó mà hỏi tiếp

http://www.giaiphapexcel.com/diendan/threads/dùng-vba-để-lọc-dữ-liệu.124545/
 
Upvote 0
Khác nhau mà bạn befaiiiiin. Ở đây có nhiều sheet. Sheet cuối cùng sẽ lọc dự liệu theo yêu cầu từ các sheet trước.
 
Upvote 0
Bạn befaint có cách nào lọc nhanh hơn. Giúp mình với bạn. Mình dùng pivotable như bạn nói, chỉ lọc theo từng sheet. Còn ở đây có nhiều sheet. Sheet cuối cùng là sheet Lọc.
 
Upvote 0

File đính kèm

Upvote 0
Tình hình là pivotable tuy lọc cũng rất hay nhưng mình muốn nghiên cứu thêm về macro.
Nhờ cả nhà giúp mình lệnh code để lọc dữ liệu này ạ.
Yêu cầu: chỉ lọc dữ liệu từ ngày đến ngày trong 1 tháng.
Xin cảm ơn mọi người ạ.
bài nầy khá rối
Mã:
Sub GPE()
Dim Darr(), Arr(), i As Long, k As Long, LastR As Long
Dim NgayDau As Long, NgayCuoi As Long, Ngay As Long, Thang As Long
Dim Soluong As Long, SLhuy As Long, SoTien As Double, Tmp As String
sheetname = Right(Range("C8"), 2)
NgayDau = CLng(Range("D5").Value)
NgayCuoi = CLng(Range("F5").Value)
Thang = CLng(Range("H5").Value)

For i = 1 To ThisWorkbook.Sheets.Count
  If Right(Sheets(i).Name, 2) = sheetname Then
    With Sheets(i)
      LastR = .Range("B" & Rows.Count).End(xlUp).Row
      If LastR < 8 Then Exit Sub
      Darr = .Range("B8:I" & LastR).Value
      Exit For
    End With
  End If
Next i

ReDim Arr(1 To UBound(Darr), 1 To 9)
For i = 1 To UBound(Darr)
  If CLng(Right(Darr(i, 1), 2)) = Thang Then
    Ngay = CLng(Left(Darr(i, 1), 2))
    If Ngay >= NgayDau Then
      If Ngay <= NgayCuoi Then
        If Darr(i, 5) <> Tmp Then
          Tmp = Darr(i, 5)
          k = k + 1
          Arr(k, 1) = Tmp
          Arr(k, 2) = 1
          Arr(k, 3) = Mid(Tmp, InStr(Tmp, "/") + 1, 20) ' dóan mò ???
          Arr(k, 4) = Darr(i, 6)
        Else
          Arr(k, 2) = Arr(k, 2) + 1
        End If
          Arr(k, 5) = Darr(i, 7)
          If Darr(i + 1, 8) = 0 Then
            Arr(k, 6) = Arr(k, 6) & "," & Darr(i, 6)
            Arr(k, 7) = Arr(k, 7) + 1
          End If
        Arr(k, 8) = Arr(k, 8) + Darr(i, 8)
        Arr(k, 9) = Arr(k, 8)
      End If
    End If
  End If
Next i

With Sheets("LOC DU LIEU")
  .Rows("14:20").Hidden = False
  .Range("A14:J20").ClearContents
  .Range("B21:J21").ClearContents
  If k Then
    For i = 1 To k
      Tmp = Arr(i, 6)
      If Tmp <> "" Then
        Arr(i, 6) = Mid(Tmp, 2, Len(Tmp) - 1)
      End If
      Soluong = Soluong + Arr(i, 2)
      SLhuy = SLhuy + Arr(i, 7)
      SoTien = SoTien + Arr(i, 8)
    Next i
    .Range("A14").Resize(k, 9) = Arr
    .Range("B21").Value = Soluong
    .Range("G21").Value = SLhuy
    .Range("H21").Value = SoTien
    .Range("I21").Value = SoTien
    If k + 13 < 20 Then .Rows(k + 14 & ":20").Hidden = True
  End If
End With
End Sub
 
Upvote 0
bài nầy khá rối
Mã:
Sub GPE()
Dim Darr(), Arr(), i As Long, k As Long, LastR As Long
Dim NgayDau As Long, NgayCuoi As Long, Ngay As Long, Thang As Long
Dim Soluong As Long, SLhuy As Long, SoTien As Double, Tmp As String
sheetname = Right(Range("C8"), 2)
NgayDau = CLng(Range("D5").Value)
NgayCuoi = CLng(Range("F5").Value)
Thang = CLng(Range("H5").Value)

For i = 1 To ThisWorkbook.Sheets.Count
  If Right(Sheets(i).Name, 2) = sheetname Then
    With Sheets(i)
      LastR = .Range("B" & Rows.Count).End(xlUp).Row
      If LastR < 8 Then Exit Sub
      Darr = .Range("B8:I" & LastR).Value
      Exit For
    End With
  End If
Next i

ReDim Arr(1 To UBound(Darr), 1 To 9)
For i = 1 To UBound(Darr)
  If CLng(Right(Darr(i, 1), 2)) = Thang Then
    Ngay = CLng(Left(Darr(i, 1), 2))
    If Ngay >= NgayDau Then
      If Ngay <= NgayCuoi Then
        If Darr(i, 5) <> Tmp Then
          Tmp = Darr(i, 5)
          k = k + 1
          Arr(k, 1) = Tmp
          Arr(k, 2) = 1
          Arr(k, 3) = Mid(Tmp, InStr(Tmp, "/") + 1, 20) ' dóan mò ???
          Arr(k, 4) = Darr(i, 6)
        Else
          Arr(k, 2) = Arr(k, 2) + 1
        End If
          Arr(k, 5) = Darr(i, 7)
          If Darr(i + 1, 8) = 0 Then
            Arr(k, 6) = Arr(k, 6) & "," & Darr(i, 6)
            Arr(k, 7) = Arr(k, 7) + 1
          End If
        Arr(k, 8) = Arr(k, 8) + Darr(i, 8)
        Arr(k, 9) = Arr(k, 8)
      End If
    End If
  End If
Next i

With Sheets("LOC DU LIEU")
  .Rows("14:20").Hidden = False
  .Range("A14:J20").ClearContents
  .Range("B21:J21").ClearContents
  If k Then
    For i = 1 To k
      Tmp = Arr(i, 6)
      If Tmp <> "" Then
        Arr(i, 6) = Mid(Tmp, 2, Len(Tmp) - 1)
      End If
      Soluong = Soluong + Arr(i, 2)
      SLhuy = SLhuy + Arr(i, 7)
      SoTien = SoTien + Arr(i, 8)
    Next i
    .Range("A14").Resize(k, 9) = Arr
    .Range("B21").Value = Soluong
    .Range("G21").Value = SLhuy
    .Range("H21").Value = SoTien
    .Range("I21").Value = SoTien
    If k + 13 < 20 Then .Rows(k + 14 & ":20").Hidden = True
  End If
End With
End Sub
Bạn ơi! Xem giúp mình với. Mình vẫn chưa chạy được bạn à, nó báo lỗi bạn à.
Bạn xem giúp mình với nhé. Mình cảm ơn bạn rất nhiều.
 

File đính kèm

Upvote 0
Bạn ơi! Xem giúp mình với. Mình vẫn chưa chạy được bạn à, nó báo lỗi bạn à.
Bạn xem giúp mình với nhé. Mình cảm ơn bạn rất nhiều.
bạn chỉ cần chép code vào 1 nơi thôi, nằm 2 nơi nên báo lỗi, chỉnh lại vài dòng lệnh cho kết quả hợp lý hơn, và đề phòng dữ liệu chỉ có 1 dòng
 

File đính kèm

Upvote 0
Bạn xem trong file đính kèm.
Kết quả cột C=ROUNDUP(E14/50,0)
tức là = cột E (đến số)/50, nếu ra số lẻ làm tròn tăng lên 1.
Ví dụ: cột đến số là 0000110 thì cột C (số quyển) = 110/50 sẽ ra 2,2 thì nó sẽ ra kết quả là quyển số 3
Em chọn nhưng code vẫn không chạy Anh à.
Anh cố gắng vào xem lại giúp em với nhé Anh.
Trân trọng cảm ơn Anh!
 

File đính kèm

Upvote 0
Kết quả cột C=ROUNDUP(E14/50,0)
tức là = cột E (đến số)/50, nếu ra số lẻ làm tròn tăng lên 1.
Ví dụ: cột đến số là 0000110 thì cột C (số quyển) = 110/50 sẽ ra 2,2 thì nó sẽ ra kết quả là quyển số 3
Em chọn nhưng code vẫn không chạy Anh à.
Anh cố gắng vào xem lại giúp em với nhé Anh.
Trân trọng cảm ơn Anh!
Chọn mà không chạy là sao, chọn cái gì?
Tôi có ghi chú là phải thay đổi ô C8 thì code mới chạy.
Bây giờ làm cho bạn cái nút bấm, khi nào muốn chạy thì bấm nút vậy.
Bấm không chạy nữa thì tính sau.
 

File đính kèm

Upvote 0
[QUdùng"Ba Tê, post: 786703, member: 163936"]Chọn mà không chạy là sao, chọn cái gì?
Tôi có ghi chú là phải thay đổi ô C8 thì code mới chạy.
Bây giờ làm cho bạn cái nút bấm, khi nào muốn chạy thì bấm nút vậy.
Bấm không chạy nữa thì tính sau.[/QUOTE]
Em chọn ô C8. Có khi do máy tính của em nó bị gì đó Anh ah. Em dùng máy tính đó thì nó không chạy. Nhưng em dùng máy tính khác thì nó chạy. Dùng chức năng: chọn ngay tại Ô, không dùng nút Bấm rất tiện lợi. Em vô cùng cảm ơn Anh. Chúc Anh luôn mạnh khoẻ và thành công.
 
Upvote 0
Chọn mà không chạy là sao, chọn cái gì?
Tôi có ghi chú là phải thay đổi ô C8 thì code mới chạy.
Bây giờ làm cho bạn cái nút bấm, khi nào muốn chạy thì bấm nút vậy.
Bấm không chạy nữa thì tính sau.
Anh Ba Tê ơi, khi em lọc những loại chỉ hiện ra 1 dòng thì dòng "TỔNG CỘNG" nó tổng lại Sai Anh à.
Do lúc đầu máy tính của em nó bị lỗi, chứ chọn ngay tại ô C8 sẽ hiện ra kết quả luôn nhanh hơn là dung nút: "Bấm". Anh bỏ giúp em chức năng bấm mà làm như ban đầu, chọn ô C8 luôn.
Anh kiểm tra lại giúp em nhé Anh.
Trân trọng cảm ơn Anh.
Kính chúc Anh dồi dào sức khỏe, thành công!
 

File đính kèm

Upvote 0
Anh Ba Tê ơi, khi em lọc những loại chỉ hiện ra 1 dòng thì dòng "TỔNG CỘNG" nó tổng lại Sai Anh à.
Do lúc đầu máy tính của em nó bị lỗi, chứ chọn ngay tại ô C8 sẽ hiện ra kết quả luôn nhanh hơn là dung nút: "Bấm". Anh bỏ giúp em chức năng bấm mà làm như ban đầu, chọn ô C8 luôn.
Anh kiểm tra lại giúp em nhé Anh.
Trân trọng cảm ơn Anh.
Kính chúc Anh dồi dào sức khỏe, thành công!
Bạn kiểm tra lại file này.
 

File đính kèm

Upvote 0
Bạn kiểm tra lại file này.
Chạy rất OK Anh Ba Tê à.
Em rất tò mò không biết Anh đã làm như thế nào, nhất là chỗ: không cần nút Bấm để chạy code.
Anh có thể hướng dẫn cho em cách thực hiện được không Anh.
Em rất muốn biết để tìm hiểu, nghiên cứu và học hỏi thêm.
 
Upvote 0
Chạy rất OK Anh Ba Tê à.
Em rất tò mò không biết Anh đã làm như thế nào, nhất là chỗ: không cần nút Bấm để chạy code.
Anh có thể hướng dẫn cho em cách thực hiện được không Anh.
Em rất muốn biết để tìm hiểu, nghiên cứu và học hỏi thêm.
Alt+F11
Sub chính nằm trong Module.
"Biểu nó chạy" thì nằm trong Sheet5: Có thay đổi ô C8 thì nó chạy.
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$8" Then GPE
End Sub
 
Upvote 0
Alt+F11
Sub chính nằm trong Module.
"Biểu nó chạy" thì nằm trong Sheet5: Có thay đổi ô C8 thì nó chạy.
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$8" Then GPE
End Sub
Kính chào Anh Ba Tê!
Em xin lỗi lại làm phiền Anh thêm 1 tí nữa.
Khi nào Anh có thời gian, nhờ Anh giúp em lọc dữ liệu ở sheet "Giay nop tien" với nhé Anh.
(Lọc theo từ ngày đến ngày cần chọn tương ứng với mã số thuế, mã số thuế sẽ lọc theo mã số thuế điạ bàn thu ở các Sheet trước)
Dòng: "từ ngày ......đến ngày..." giúp cho việc lọc. Nhưng khi chọn IN ra thì nó không hiện trên mẫu biểu.
Xin chân thành cảm ơn Anh!
 

File đính kèm

Upvote 0
Alt+F11
Sub chính nằm trong Module.
"Biểu nó chạy" thì nằm trong Sheet5: Có thay đổi ô C8 thì nó chạy.
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$8" Then GPE
End Sub
Kính nhờ Anh hỗ trợ giúp em thêm sheet Giay nop tien.
Em cảm ơn Anh và kính chúc Anh sức khỏe, thành công!
 

File đính kèm

Upvote 0

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom