1. Tuyển Mod quản lý diễn đàn. Các thành viên xem chi tiết tại đây

Nhờ các bác giúp về Excel (nhờ mod 1 tí)

Chủ đề trong 'Hỏi gì đáp nấy' bởi Gunblade, 26/06/2010.

  1. 1 người đang xem box này (Thành viên: 0, Khách: 1)
  1. Gunblade

    Gunblade Thành viên mới

    Tham gia ngày:
    23/08/2005
    Bài viết:
    975
    Đã được thích:
    0
    Nhờ các bác giúp về Excel (nhờ mod 1 tí)

    Chả là em có 1 file excel, trong đó có nhiều sheet. Mỗi sheet là danh sách của 1 lớp. Giờ em muốn nối tất cả các danh sách đó thành 1 hàng dọc trong 1 sheet duy nhất thì phải làm thế nào ạ. Copy paste từng cái chắc chết T___T
  2. antichrixt

    antichrixt Thành viên mới

    Tham gia ngày:
    02/03/2003
    Bài viết:
    6.544
    Đã được thích:
    0
    Bác có biết dùng VBA trong Office hay là lập trình .NET không ?
  3. BergkampNT

    BergkampNT Thành viên mới

    Tham gia ngày:
    02/10/2004
    Bài viết:
    666
    Đã được thích:
    0
    Thế các sheet của bác được đặt tên là sheet1, sheet2 hay là đã đổi tên thành "lớp A", "lớp B"? nếu vẫn để ở dạng sheet1 sheet2 thì em nghĩ là bác cứdùng lệnh lấy tầm 200 dòng trong mỗi sheet thì cũng được :D Mà format các sheet phải giống nhau nhé.
  4. cqx007

    cqx007 Thành viên tích cực

    Tham gia ngày:
    26/12/2008
    Bài viết:
    652
    Đã được thích:
    6
    Vào giaiphapexcel.com có mà ra cả đống.
    Nếu cấu trúc dữ liệu giống nhau thì tạo 1 sheet dưới tên là TOTAL. Rồi ấn Alt + F11 và paste đoạn mã sau vào Project VBAproject / thisworkbook
    Sub CopySheets()
    Const shTotal = "Total"
    Dim wb As Workbook
    Dim sTotal As Worksheet
    Dim sH As Worksheet, Rng As Range, ce As Range
    Dim sRow As Long, eRow As Long, iRow As Long, iCol As Long
    Application.ScreenUpdating = False
    Set wb = ActiveWorkbook ''ThisWorkbook
    iRow = 1
    On Error Resume Next
    Set sTotal = wb.Sheets(shTotal)
    If sTotal Is Nothing Then
    With wb.Sheets.Add
    .Name = shTotal
    End With
    Set sTotal = ActiveSheet
    End If
    sTotal.Cells.Delete
    For Each sH In wb.Sheets
    If sH.Name <> shTotal Then
    With sH.UsedRange
    ''eRow = .Rows.Count''
    ''sRow = .Row''
    iCol = .Columns.Count
    For i = 1 To iCol
    .AutoFilter field:=i, Criteria1:="="
    Next
    Set Rng = .Offset(1, 0).SpecialCells(Type:=xlCellTypeVisible)
    For Each ce In Rng
    ce.EntireRow.Delete
    Next
    sH.ShowAllData
    .AutoFilter
    .Copy Destination:=sTotal.Cells(iRow, 1)
    iRow = sTotal.UsedRange.Rows.Count + 1 '' .Rows.Count + iRow
    Application.CutCopyMode = False
    End With
    End If
    Next
    With sTotal
    .Activate
    .Cells(1, 1).Activate
    End With
    Set sTotal = Nothing: Set wb = Nothing
    Application.ScreenUpdating = True
    End Sub

  5. lilz

    lilz Thành viên mới

    Tham gia ngày:
    25/11/2006
    Bài viết:
    1.557
    Đã được thích:
    0
    em muốn học cái vba này thì có chỗ nào dạy không bác ơi?

Chia sẻ trang này