Hiển thị kết quả tìm kiếm từ 1 đến 6 trên tổng số: 6
  1. #1
    Tham gia ngày
    04 2011
    Bài gởi
    2
    Cảm ơn
    0
    Được cảm ơn 0 lần trong 0 bài viết

    Gom dữ liệu từ nhiều cột thành một cột duy nhất.

    Nhờ AE giúp đỡ mình a.!!
    Mình có nhiều cột chứ nội dung là các số
    vd:
    cột A có nội dung là 1,2,3
    cột B có nội dung là 2,3,4
    cột C có nội dung là 5,6,7
    Mình muốn gom nội dung lại thành một cột duy nhất là A chứa 1,2,3,4,5,6,7
    Dùng chức năng copy - dán thì rất lâu ạ..
    Xin cám ơn AE rất nhiều...

  2. #2
    Tham gia ngày
    10 2009
    Nơi Cư Ngụ
    BIÊN HÒA
    Bài gởi
    2,123
    Cảm ơn
    2,268
    Được cảm ơn 3,528 lần trong 1,558 bài viết
    Trích Nguyên văn bởi xsim_vn View Post
    nhờ ae giúp đỡ mình a.!!
    Mình có nhiều cột chứ nội dung là các số
    vd:
    Cột a có nội dung là 1,2,3
    cột b có nội dung là 2,3,4
    cột c có nội dung là 5,6,7
    mình muốn gom nội dung lại thành một cột duy nhất là a chứa 1,2,3,4,5,6,7
    dùng chức năng copy - dán thì rất lâu ạ..
    Xin cám ơn ae rất nhiều...
    chắc dùng tạm code này xem sao
    Tập tin đính kèm Tập tin đính kèm
    Ở nhà nhất mẹ nhì con
    Ra đường lắm kẻ còn giòn hơn ta


  3. Thành viên sau cảm ơn Lê Duy Thương về bài viết này:


  4. #3
    Tham gia ngày
    04 2011
    Bài gởi
    2
    Cảm ơn
    0
    Được cảm ơn 0 lần trong 0 bài viết
    chép dán vào rồi bấm RUN phải không vậy bạn??
    Sao nó không chạy nhỉ, nó hiện ra bảng báo lỗi VBA

  5. #4
    Tham gia ngày
    11 2007
    Nơi Cư Ngụ
    Gò Vấp
    Bài gởi
    8,637
    Cảm ơn
    4,351
    Được cảm ơn 26,441 lần trong 8,170 bài viết
    Code chạy bình thường, ra kết quả đúng. Lại còn sắp xếp lại kết quả nữa.
    Tuy nhiên, câu lệnh sort là VBA 2007, 2010, Excel 2003 chạy sẽ bị lỗi.

    To Lê Duy Thương:

    1. Đối với sort, chỉ cần sort, không cần filter rồi mới sort.

    2. Ngoài ra, đã dùng Dic, sao không gán dic xuống sheet cho khoẻ? hoặc dùng mảng và gán mảng xuống sheet?

    3. Lại còn câu lệnh này: Select từng ô làm chi cho hao tổn thân gầy?

    Code:
    For Each clls In Range("A1:D" & [A3000].End(3).Row() + 5)
        clls.Select
    4. Sửa Application.ScreenUpdating = False sau đó không trả lại như cũ?

    5. Dùng Dic, thì phải xét thêm nếu không rỗng mới add.

    6. Dữ liệu có 4 cột, xét làm chi đến 5 cột từ A đến E?

    7. Kết quả có 1 cột H, xoá làm chi 6 cột từ E đến J?

    Code chỉ cần như vầy:

    PHP Code:
    Sub SAPXEP()
    Application.ScreenUpdating False
    Sheets
    ("sheet1").Range("H1:H3000").Clear
      Dim clls 
    As RangeDicAs Long
      Set Dic 
    CreateObject("Scripting.Dictionary")
      For 
    Each clls In Range("A1:D" & [A3000].End(3).Row() + 5)
        If 
    Not Dic.Exists(clls.Value) And clls <> "" Then
          Dic
    .Add clls.Value""
          
    1
        End 
    If
      
    Next
    With Range
    ("H6").Resize(i1)
     .
    Value Application.Transpose(Dic.keys)
     .
    Sort Key1:=Range("H6"), Order1:=xlAscendingHeader:=xlNo
    End With
    Application
    .ScreenUpdating True
    End Sub 
    thay đổi nội dung bởi: ptm0412, 04-01-12 lúc 10:48 PM
    Cheettit Old Man Thánh tắc ngô bất năng, ngô học bất yếm, nhi giáo bất quyện dã.

  6. Có 4 thành viên cảm ơn ptm0412 về bài viết này:


  7. #5
    Tham gia ngày
    10 2009
    Nơi Cư Ngụ
    BIÊN HÒA
    Bài gởi
    2,123
    Cảm ơn
    2,268
    Được cảm ơn 3,528 lần trong 1,558 bài viết
    cảm ơn sư phụ đã chỉ giáo.xin hỏi thêm sư phụ
    hai hòng lệnh
    Cells(i + 5, "H") = clls.Value và Application.Transpose(Dic.keys) sẽ khác nhau như thế nào
    mà khi đệ tử test thì tốc độ giống nhau
    đã sửa lại
    PHP Code:
    Sub SAPXEP()
    Application.ScreenUpdating False
    Sheets
    ("sheet1").Range("h3:h60000").Clear
      Dim clls 
    As RangeDicAs Long
      Set Dic 
    CreateObject("Scripting.Dictionary")
      For 
    Each clls In Range("A1:d" & [A60000].End(3).Row() + 5)
        If 
    Not Dic.Exists(clls.ValueThen
          Dic
    .Add clls.Value""
          
    1
          Cells
    (5"H") = clls.Value
           End 
    If
      
    Next
      Range
    ("H6").Sort Key1:=Range("H6"), Order1:=xlAscendingHeader:=xlNo
       Application
    .ScreenUpdating True
    End Sub 
    thay đổi nội dung bởi: Lê Duy Thương, 06-01-12 lúc 10:44 PM
    Ở nhà nhất mẹ nhì con
    Ra đường lắm kẻ còn giòn hơn ta


  8. #6
    Tham gia ngày
    11 2007
    Nơi Cư Ngụ
    Gò Vấp
    Bài gởi
    8,637
    Cảm ơn
    4,351
    Được cảm ơn 26,441 lần trong 8,170 bài viết
    Test thử với 50.000 dòng sẽ thấy khác biệt. Dùng timer để tính thời gian:

    PHP Code:
    Sub Test()
    Timer
    ...code ...
    Range("H1") = Timer t
    End Sub 
    Cheettit Old Man Thánh tắc ngô bất năng, ngô học bất yếm, nhi giáo bất quyện dã.

Thông tin về chủ đề này

Users Browsing this Thread

Hiện có 1 người đang xem đề tài này. (0 thành viên và 1 khách)

Bookmarks

Bookmarks

Quyền Sử Dụng Ở Diễn Ðàn

  • Bạn không thể đăng đề tài mới
  • Bạn không thể đăng trả lời
  • Bạn không thể đăng file đính kèm.
  • Bạn không thể sửa bài viết.
  •  

Mudim v0.8 Tắt VNI Telex Viqr Tổng hợp
Chính tả Bỏ dấu kiểu mới  [Bật/Tắt (F9)]