Xếp chuỗi các cột.

Liên hệ QC

whitelight

Thành viên chính thức
Tham gia
30/10/08
Bài viết
50
Được thích
0
Mình muốn xếp các cột từ 1 -13 thành 1 cột giữ nguyên vị trí các ô và các ô trống thì thêm số 0.Mọi người giúp đỡ nhé
 

File đính kèm

  • xep cot.rar
    2 KB · Đọc: 23
Mình up lên ví dụ trong bảng excel bạn xem giúp nhé.Tức là từ nhiều cột xếp lại thành 1 cột.Trong các cột có nhg ô trống thì điền thêm sô 0.
 

File đính kèm

  • xep cot.rar
    2.2 KB · Đọc: 18
Mình up lên ví dụ trong bảng excel bạn xem giúp nhé.Tức là từ nhiều cột xếp lại thành 1 cột.Trong các cột có nhg ô trống thì điền thêm sô 0.

Tại ô N2 bạn dùng công thức sau rồi kéo đến dòng thứ 313 xem kết quả ra sao?
PHP:
=OFFSET($A$2,MOD(ROW()-2,24),INT((ROW()-2)/24))
 
Lần chỉnh sửa cuối:
Cám ơn bạn nhé.Mình muốn hỏi xem ai có cách khác không vì cách trên mình ko hiểu lệnh,mình có rất nhiều bảng có số hàng số cột khác nhau.Nếu thêm số 0 phức tap thì mọi người chỉ hộ cách xếp cũng được.
 
Lần chỉnh sửa cuối:
Thêm 1 cách để bạn rọng đường tham khảo

PHP:
Option Explicit
Sub XepChung1Cot()
 Dim eRw As Long, jJ As Byte, Trong As Boolean
 
 Columns("o:O").Value = "":                  [o1].Value = "GPE"
 eRw = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, _
   SearchDirection:=xlPrevious).Row
 If Cells(eRw, 13).Value = "" Then
   Cells(eRw, 13).Value = 0:                 Trong = True
 End If
 For jJ = 1 To 13
   Cells(1, jJ).Resize(eRw).Copy Destination:=[o65500].End(xlUp).Offset(1)
 Next jJ
 Columns("O:O").SpecialCells(xlCellTypeBlanks).Select
 Selection.FormulaR1C1 = "0"
 If Trong Then Cells(eRw, 13).Value = ""
End Sub
 
Mọi người cho hỏi nếu chỉ muốn xếp không thôi thì làm thế nào vậy.Có dùng được lệnh Index trong phần này ko vậy
 
PHP:
Option Explicit
Sub XepChung1Cot()
 Dim eRw As Long, jJ As Byte, Trong As Boolean
 
 Columns("o:O").Value = "":                  [o1].Value = "GPE"
 eRw = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, _
   SearchDirection:=xlPrevious).Row
 If Cells(eRw, 13).Value = "" Then
   Cells(eRw, 13).Value = 0:                 Trong = True
 End If
 For jJ = 1 To 13
   Cells(1, jJ).Resize(eRw).Copy Destination:=[o65500].End(xlUp).Offset(1)
 Next jJ
 Columns("O:O").SpecialCells(xlCellTypeBlanks).Select
 Selection.FormulaR1C1 = "0"
 If Trong Then Cells(eRw, 13).Value = ""
End Sub

Code này mình thấy các cột toàn bằng 0 bị dồn lại cả,nó ko giữ nguyên vị trí
 
Ờ hen, Mình còn sót, xin lỗi bạn

Code này mình thấy các cột toàn bằng 0 bị dồn lại cả,nó ko giữ nguyên vị trí
PHP:
Option Explicit
Sub XepChung1Cot()
 Dim eRw As Long, jJ As Byte, Trong As Boolean
 
 Columns("o:O").Value = "":                  [o1].Value = "GPE"
 eRw = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, _
   SearchDirection:=xlPrevious).Row

 For jJ = 1 To 13
1   If Trong Then
      Cells(eRw, jJ - 1).Value = "":         Trong = False
3   End If
   If Cells(eRw, jJ).Value = "" Then
      Cells(eRw, jJ) = 0:           Trong = True
   End If
   
   Cells(1, jJ).Resize(eRw).Copy Destination:=[o65500].End(xlUp).Offset(1)
 Next jJ
 Columns("O:O").SpecialCells(xlCellTypeBlanks).Select
 Selection.FormulaR1C1 = "0"
 
 If Trong Then Cells(eRw, 13).Value = ""
End Sub
 
Mình muốn xếp các cột từ 1 -13 thành 1 cột giữ nguyên vị trí các ô và các ô trống thì thêm số 0.Mọi người giúp đỡ nhé
Thử code này xem:
PHP:
Private Sub mArr2One(mRng As Range, Target As Range)
  Dim TmpArr, i As Long, j As Long, n As Long, Arr()
  TmpArr = mRng
  ReDim Arr(1 To mRng.Count)
  For j = LBound(TmpArr, 2) To UBound(TmpArr, 2)
    For i = LBound(TmpArr, 1) To UBound(TmpArr, 1)
      n = n + 1
      Arr(n) = Val(TmpArr(i, j))
    Next
  Next
  Target.Resize(n) = WorksheetFunction.Transpose(Arr)
End Sub
PHP:
Sub Main()
  mArr2One [A2:M25], [O8]
End Sub
Tốc độ thì.. khỏi bàn ---> nhanh như chớp ---> Thử xem!
 

File đính kèm

  • mArr2One.xls
    25 KB · Đọc: 13
Thử code này xem:
PHP:
Private Sub mArr2One(mRng As Range, Target As Range)
  Dim TmpArr, i As Long, j As Long, n As Long, Arr()
  TmpArr = mRng
  ReDim Arr(1 To mRng.Count)
  For j = LBound(TmpArr, 2) To UBound(TmpArr, 2)
    For i = LBound(TmpArr, 1) To UBound(TmpArr, 1)
      n = n + 1
      Arr(n) = Val(TmpArr(i, j))
    Next
  Next
  Target.Resize(n) = WorksheetFunction.Transpose(Arr)
End Sub
PHP:
Sub Main()
  mArr2One [A2:M25], [O8]
End Sub
Tốc độ thì.. khỏi bàn ---> nhanh như chớp ---> Thử xem!

Code của bác viết trên 2007 thì phải,cái máy tính em chạy cái 2003 nên không được.Cám ơn bác nhé
 
Code của bác viết trên 2007 thì phải,cái máy tính em chạy cái 2003 nên không được.Cám ơn bác nhé
Có đâu chứ! 2007 hay 2003 đều được tuốt!
Có lẽ bạn đã sai gì đó ---> Muốn biết sai chổ nào, hãy đưa nguyên file không chạy được ấy lên đây
 
Web KT
Back
Top Bottom