help vba từ danh sách sang danh sách với dạng khác (1 người xem)

Liên hệ QC

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

luongsonlong211

Thành viên mới
Tham gia
16/9/16
Bài viết
26
Được thích
4
em có một sheet1 chứa một danh sách ... , các bác có thể giúp em chuyển toàn bộ danh sách đó sang sheet2 dưới dạng mẫu bên sheet2 tự động bằng VBA được ko ạ, em cảm ơn!
 

File đính kèm

Kg cần VBA. Nên nhập công thức sau vô ô I2 sheet1
="|" & B2 & "|" & D2 & "|" & C2 & "|" & F2 & "|" & E2

Chép xuống rồi copy value sang sheet2
 
Upvote 0
vấn đề là em làm việc này rất nhiều lần, số lượng ô trong một hàng rất dài và không thống nhất, và mỗi lần viết như vậy rất tốn thời gian, nhưng vẫn cảm ơn bác. em thì hay dùng hàm concatenate để viết!
 
Upvote 0
vấn đề là em làm việc này rất nhiều lần, số lượng ô trong một hàng rất dài và không thống nhất, và mỗi lần viết như vậy rất tốn thời gian, nhưng vẫn cảm ơn bác. em thì hay dùng hàm concatenate để viết!

Nếu muốn tự động hơn để có nhanh kết quả, bạn báo lại, tôi sẽ viết code.

Để tiện do không thống nhất, có thể thống nhất viết dãy các chữ cái là tên cột cần ghép vô 1 ô nào đó hoặc qua hộp thoại khi chạy chương trình.

Ví dụ ECBD là để ghép lần lượt các ô trên cột E, C, B, D.

Và cũng phải thống nhất bắt đầu từ hàng nào.
 
Upvote 0
em có một sheet1 chứa một danh sách ... , các bác có thể giúp em chuyển toàn bộ danh sách đó sang sheet2 dưới dạng mẫu bên sheet2 tự động bằng VBA được ko ạ, em cảm ơn!
Thử với đoạn code này xem:
Mã:
Sub GPE()
Dim Arr(), vlArr, I As Long, K As Long
With Sheet1
  Arr = .Range(.[A2], .[A65000].End(3)).Resize(, 6).Value
End With
ReDim vlArr(1 To UBound(Arr, 1), 1 To 2)
  For I = 1 To UBound(Arr, 1)
   If IsNumeric(Arr(I, 2)) Then
    K = K + 1
    vlArr(K, 1) = Arr(I, 1)
    vlArr(K, 2) = Arr(I, 2) & "|" & Arr(I, 4) & "|" & _
        Arr(I, 3) & "|" & Arr(I, 6) & "|" & Arr(I, 5) & "||||||||||"
   End If
  Next I
With Sheet2
 If K Then
  .[A1:B10000].ClearContents
  .[A1].Resize(K, 2) = vlArr
  .[A1].Resize(K, 2).Font.Name = ".VnTime"
  .[A1].Resize(K, 2).Font.Size = 11
 End If
End With
End Sub
 
Upvote 0
Upvote 0
Thử với đoạn code này xem:
Mã:
Sub GPE()
Dim Arr(), vlArr, I As Long, K As Long
With Sheet1
  Arr = .Range(.[A2], .[A65000].End(3)).Resize(, 6).Value
End With
ReDim vlArr(1 To UBound(Arr, 1), 1 To 2)
  For I = 1 To UBound(Arr, 1)
   If IsNumeric(Arr(I, 2)) Then
    K = K + 1
    vlArr(K, 1) = Arr(I, 1)
    vlArr(K, 2) = Arr(I, 2) & "|" & Arr(I, 4) & "|" & _
        Arr(I, 3) & "|" & Arr(I, 6) & "|" & Arr(I, 5) & "||||||||||"
   End If
  Next I
With Sheet2
 If K Then
  .[A1:B10000].ClearContents
  .[A1].Resize(K, 2) = vlArr
  .[A1].Resize(K, 2).Font.Name = ".VnTime"
  .[A1].Resize(K, 2).Font.Size = 11
 End If
End With
End Sub


em có 57 ô trong một hàng cần ghép với nhau, với đoạn code trên em phải sửa ntn để nó nhận đến tận ô thứ 57 ở sheet1 ạ.. em cảm ơn
 
Upvote 0
Web KT

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

Back
Top Bottom