Đăng ký học Excel và VBA cùng GPE tháng 11 - TPHCM

Mua sách "VBA trong Excel - Cải thiện và tăng tốc" tái bản

Làm sao lập hàm gom dữ liệu trong nhiều cột còn 1 cột?

Thảo luận trong 'Hỏi đáp những vấn đề khác' bắt đầu bởi ngocnam, 31 Tháng tám 2008.

  1. ngocnam

    ngocnam Thành viên mới

    Ví dụ em có 1 bảng gồm 3 cột họ tên HS (vd như cột họ tên HS giỏi, Khá, Tb), làm sao chỉ dùng hàm có thể gom lại còn 1 cột mà hiển thị hết họ tên HS loại giỏi rồi mới tới họ tên HS loại khá rồi đến loại Tb v.v..?
    Em xin cảm ơn
     
  2. Po_Pikachu

    Po_Pikachu Po_pikachu@ymail.com

    Bạn làm theo cách sau nha!
    Column1Column2Column3Column4Column5Column6Column7Column8
    A B C D E F Công thức
    1 Họ Tên Học lực Hạnh kiểm......
    2 Nguyễn Thị Thắm Tốt Khá... Nguyễn Thị Thắm Tốt-Khá =A2&" "&B2&" "&C2&"-"&D2
    3 Trần Minh Thông Khá Khá... Trần Minh Thông Khá-Khá =A3&" "&B3"&" "&C3&"-"&D3
     
  3. ngocnam

    ngocnam Thành viên mới

    Bạn hiểu nhầm ý mình, mình đưa 1 file minh họa để bạn hiểu ý mình nha
     

    Các file đính kèm:

  4. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Nếu chỉ có 3 cột sao không copy, paste cho lẹ?
    Bạn nói chính xác dử liệu của bạn như thế nào, sẽ có người giúp bạn hoàn tất việc này (có lẽ bằng VBA)
     
  5. ngocnam

    ngocnam Thành viên mới

    Mình đã nói là ví dụ thôi mà, có thể hàng mấy trăm HS và nhiều cột, thực ra nếu không được thì chỉ còn cách copy, paste
     
  6. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Thử code này xem:
    PHP:
    Option Explicit
    Sub Gop
    ()
      
    Dim i As LongEr As LongSd As Long
      Dim Rng 
    As Range
      Application
    .ScreenUpdating False
      
    [F3:G10000].ClearContents
      
    For 1 To [A2].End(xlToRight).Column
        Er 
    = [F65536].End(xlUp).Row 1
        Set Rng 
    Range(Cells(3i), Cells(10000i)).SpecialCells(223)
        
    Sd Rng.Rows.Count
        With Cells
    (Er6).Resize(Sd1)
          .
    Value Rng.Value
          
    .Offset(, 1).Value Cells(2i)
        
    End With
      Next
      Application
    .ScreenUpdating True
    End Sub
    Xem file đính kèm!
    Nếu dử liệu của bạn có khác hơn thì tốt nhất nên đưa toàn bộ file lên để làm luôn 1 thể (vụ này không khó khăn gì)
     

    Các file đính kèm:

    Lần chỉnh sửa cuối: 31 Tháng tám 2008
  7. cadafi

    cadafi New Style! New Life! Staff Member Super Moderator

    Bạn xem file đính kèm nhé. 40.000 dòng copy chưa tới 2 giây, huống hồ gì vài trăm.
    PHP:
    Sub MyProcess()
    Dim RWGioiRWKhaRWTB As Long
    RWgioi 
    Sheets("Data").[A65000].End(xlUp).Row
    RWKha 
    Sheets("Data").[B65000].End(xlUp).Row
    RWTB 
    Sheets("Data").[C65000].End(xlUp).Row
    '---------------------------------------------------
    With Sheets("Data")
    .Columns("F:G").ClearContents
    .[F1] = "Ho va Ten"
    .[G1] = "Xep Loai"
    .Range("A2:A" & RWgioi).Copy .[F2]
    .Range("B2:B" & RWKha).Copy .Cells(RWgioi + 1, 6)
    .Range("C2:C" & RWTB).Copy .Cells(RWgioi + RWKha + 0, 6)
    .Range("G2:G" & RWgioi) = "Gioi"
    .Range("G" & RWgioi + 1 & ":G" & RWgioi + RWKha) = "Kha"
    .Range("G" & (RWgioi + RWKha) & ":G" & (RWgioi + RWKha + RWTB - 2)) = "TB"
    End With
    End Sub
     

    Các file đính kèm:

    Lần chỉnh sửa cuối: 31 Tháng tám 2008
  8. tonghongngochuong

    tonghongngochuong Thành viên mới

    Gom cột

    gởi bạn phần này thử xem nhe ! Bạn có thể sửa chữa lại!
     

    Các file đính kèm:

  9. le tin

    le tin Học mãi

    Bạn xem đã đúng chưa
     

    Các file đính kèm:

    • GOM.xls
      Kích thước:
      21 KB
      Đọc:
      22
  10. HYen17

    HYen17 Thành viên cằn cỗi.

    Thêm 1 tham khảo, có thể tăng tốc phần nào chăng(!)

    Dữ liệu theo của NDU96081631

    PHP:
    Option Explicit
    Sub TgHop
    ()
     
    Dim Ff As BytelRow As Long
     Application
    .ScreenUpdating False:          [G1] = "XepLoai"
     
    Range([f2], [g1000]).Clear:                 [f1] = "HoTen"
     
    For Ff 1 To 3
       lRow 
    Cells(65432Ff).End(xlUp).Row 2
       
    [f65432].End(xlUp).Offset(1).Resize(lRow) = Range(Cells(3Ff), Cells(65432Ff)).Value
       
    [G65432].End(xlUp).Offset(1).Resize(lRow) = Cells(2Ff).Value
     Next Ff
    End Sub
     
  11. tank

    tank Thành viên mới

    Bạn xem thử nhé

    dùng code là nhanh nhất, but ban thử cách dùng hàm của mình nhé, mình count mỗi loại hs trước, sau đó lặp cột STT -->cột xếp loại --> cột tên. Công thức hơi rối một chút, hehe, bạn tham khảo nhé.
     

    Các file đính kèm:

  12. tigertiger

    tigertiger being bored with EPG

    hoặc đơn giản dùng Vlookup là được
    kết hợp số thứ tự
    .
     

Chia sẻ trang này