Lọc dữ liệu từ 1 sheet ra nhiều sheet theo điều kiện........

Liên hệ QC

Ls1102

Thành viên mới
Tham gia
20/1/10
Bài viết
16
Được thích
0
Em phải tách các MÃ giống nhau ra 1 sheet riêng, lười copy quá vì nó nhiều, a nào có công thức giúp em với
 

File đính kèm

  • New Microsoft Excel Worksheet (2).xls
    16 KB · Đọc: 140
Giúp bạn một cách thân.
PHP:
Option Explicit
Sub Trich()
Application.ScreenUpdating = False
  Dim sh As Worksheet
  For Each sh In Worksheets
   If sh.Name <> "Sheet1" Then
   sh.Range("A1:D1000").Clear
    With Range(Sheet1.[A2], Sheet1.[D65536].End(xlUp))
    .AutoFilter 1, sh.Name
    .Copy: sh.[A1].PasteSpecial
    .AutoFilter
    End With
  End If
  Next sh
Application.ScreenUpdating = True
End Sub
 

File đính kèm

  • Worksheet (2).xls
    34.5 KB · Đọc: 279
Em phải tách các MÃ giống nhau ra 1 sheet riêng, lười copy quá vì nó nhiều, a nào có công thức giúp em với

Công thức thì tôi không biết. Nếu bạn dùng được VBA thì tham khảo code này để vận dụng. Nó sẽ tự thêm Sheet và đặt tên Sheet theo dữ liệu nguuồn (bạn chỉ còn mỗi một việc là nhấn nút chạy code và thưởng thức thành quả).

Mã:
Sub TachSh()
On Error Resume Next
Application.ScreenUpdating = False
With Sheets("Sheet1")
    .[b2].Resize(1000).AdvancedFilter 1, Unique:=1
    For Each cls In Sheets("Sheet1").[b3].Resize(1000).SpecialCells(2).SpecialCells(12)
        Sheets.Add.Move After:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = cls
        .[b2].Resize(1000).AutoFilter 1, cls
        .[b2].CurrentRegion.Copy Sheets(Sheets.Count).[b2]
        With Sheets(Sheets.Count).[b2].CurrentRegion
            .WrapText = False
            .Columns.AutoFit
        End With
    Next
    .AutoFilterMode = 0
 End With
End Sub
 

File đính kèm

  • Loc ra nhieu Sheet.rar
    14.5 KB · Đọc: 344
Lần chỉnh sửa cuối:
Giúp bạn một cách thân.
PHP:
Option Explicit
Sub Trich()
Application.ScreenUpdating = False
  Dim sh As Worksheet
  For Each sh In Worksheets
   If sh.Name <> "Sheet1" Then
   sh.Range("A1:D1000").Clear
    With Range(Sheet1.[A2], Sheet1.[D65536].End(xlUp))
    .AutoFilter 1, sh.Name
    .Copy: sh.[A1].PasteSpecial
    .AutoFilter
    End With
  End If
  Next sh
Application.ScreenUpdating = True
End Sub

Bạn ơi,Có cách nào chỉ cho nó hoạt động với Sheet nằm trong điều kiện lọc,Còn các Sheet khác thì không bị ảnh hưởng gì?Cảm ơn bạn.
Ví dụ: chỉ có tác dụng cho những Sheet"DVS_1",Sheet"DVS_2",Sheet"DVS_3" và Sheet"DVS_4"
 
Lần chỉnh sửa cuối:
Mình muốn tách thành các sheet theo số tài khoản, bạn nào giúp mình với đc ko ạ? bên mình chuẩn bị thanh tra thuế mà phần mềm ko đổ theo sheet đc. mình cám ơn rất nhiều!
 

File đính kèm

  • SO_CHI_TIET_CAC_TAI_KHOAN.xls
    5 MB · Đọc: 23
Bạn ơi,Có cách nào chỉ cho nó hoạt động với Sheet nằm trong điều kiện lọc,Còn các Sheet khác thì không bị ảnh hưởng gì?Cảm ơn bạn.
Ví dụ: chỉ có tác dụng cho những Sheet"DVS_1",Sheet"DVS_2",Sheet"DVS_3" và Sheet"DVS_4"
Bạn thử chạy Sub sau:
Mã:
Sub tachsheet()
Dim sArr As Variant, sh As Worksheet
Dim i As Long, Lr As Long, Lr1 As Long, ShN As String

Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each sh In Worksheets
    If sh.Name <> "Sheet1" Then
        sh.Delete
    End If
Next sh
Application.DisplayAlerts = True
With Sheet1
    Lr = .Range("A10000").End(xlUp).Row
    sArr = .Range("A3:D" & Lr).Value2
End With
For i = 1 To UBound(sArr)
    If InStr(ShN, sArr(i, 1)) = 0 Then
        ShN = ShN & sArr(i, 1)
        Sheets.Add After:=Sheets(Sheets.Count)
        With ActiveSheet
            .Range("A1").Value = "Ma:"
            .Range("B1").Value = sArr(i, 1)
            .Range("A2:D2").Value = Sheet1.Range("A2:D2").Value
            '.Cells.Font.Name = ".VnTime"
            .Name = sArr(i, 1)
        End With
    End If
    For Each sh In Worksheets
    If sh.Name <> "Sheet1" Then
    With sh
        If .Name = sArr(i, 1) Then
            Lr1 = .Range("A10000").End(xlUp).Row + 1
            .Range("A" & Lr1) = sArr(i, 1)
            .Range("B" & Lr1) = sArr(i, 2)
            .Range("B" & Lr1).Font.Name = ".VnTime"
            .Range("C" & Lr1) = sArr(i, 3)
            .Range("D" & Lr1) = sArr(i, 4)
            .Range("D" & Lr1).Font.Name = ".VnTime"
        End If
    End With
    End If
    Next sh
Next i
Sheet1.Select
Application.ScreenUpdating = True
End Sub
 
Mình muốn tách thành các sheet theo số tài khoản, bạn nào giúp mình với đc ko ạ? bên mình chuẩn bị thanh tra thuế mà phần mềm ko đổ theo sheet đc. mình cám ơn rất nhiều!
Xem đúng ý chưa nhé
 

File đính kèm

  • SO_CHI_TIET_CAC_TAI_KHOAN.xlsm
    1,006.6 KB · Đọc: 60
Ôi đúng rồi, cám ơn anh nhiều lắm. Nếu đc anh chỉ giúp Trâm cách làm để Trâm làm cho năm 2018 luôn.
Gửi lại Trâm, nếu vấn đề gì khác thì lập topic mới cho riêng mình để mọi người hỗ trợ.
 

File đính kèm

  • SO_CHI_TIET_CAC_TAI_KHOAN 2018.xlsm
    1.5 MB · Đọc: 59
Bác LamNa cho em hỏi .em copy lệnh của bác tháy báo lỗi biến cls.Vậy khi báo thế nào bác
 
Web KT
Back
Top Bottom