Chuyển đồng hàng thành cột

Liên hệ QC

nhatduynnd

Thành viên mới
Tham gia
16/5/09
Bài viết
1
Được thích
0
Dear cả nhà
Em có một bẳng dữ liệu như file đính kèm
Em cần chuyển cứ 3 hàng lại chuyển thành cột rồi 3 hàng tiếp theo lại chuyển thành cột mà em không biết làm cách nào ngoài copy paste cả
Mà mỗi tháng em lại có một file như vậy
hic hic nhờ cả nhà nghiên cứu giúp em với ạ

[TABLE="width: 642"]
[TR]
[TD="align: left"]STT[/TD]
[TD="align: left"]Retailer[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: left"]Lê Thị Thu Hằng[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]SĐT: 84915111181[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]ĐC: 50 Nguyễn Xí[/TD]
[/TR]
[TR]
[TD="align: right"]2[/TD]
[TD="align: left"]Đặng Đức Thắng[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]SĐT: 84977679770[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]ĐC: Tổ 7 Xóm Đức Vinh ,Xã Hưng Lộc[/TD]
[/TR]
[TR]
[TD="align: right"]3[/TD]
[TD="align: left"]Lê Thị Tuyết[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]SĐT: 841677912886[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]ĐC: Xóm 8 Xã Nghĩa Thuận- Thái Hòa-Nghệ An[/TD]
[/TR]
[TR]
[TD="align: right"]4[/TD]
[TD="align: left"]Cao Tiến Dũng[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]SĐT: 84912677633[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]ĐC: 52 Đường Nguyễn Quốc Trị - Phường Hưng Phúc- Vinh-Nghệ An[/TD]
[/TR]
[/TABLE]
 

File đính kèm

Ba hàng thành cột là sao? Sao file bạn gửi không cho cái đúng ý bạn luôn để làm đỡ sai ý?
 
Dear cả nhà
Em có một bẳng dữ liệu như file đính kèm
Em cần chuyển cứ 3 hàng lại chuyển thành cột rồi 3 hàng tiếp theo lại chuyển thành cột mà em không biết làm cách nào ngoài copy paste cả
Mà mỗi tháng em lại có một file như vậy
hic hic nhờ cả nhà nghiên cứu giúp em với ạ

[TABLE="width: 642"]
[TR]
[TD="align: left"]STT[/TD]
[TD="align: left"]Retailer[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: left"]Lê Thị Thu Hằng[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]SĐT: 84915111181[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]ĐC: 50 Nguyễn Xí[/TD]
[/TR]
[TR]
[TD="align: right"]2[/TD]
[TD="align: left"]Đặng Đức Thắng[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]SĐT: 84977679770[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]ĐC: Tổ 7 Xóm Đức Vinh ,Xã Hưng Lộc[/TD]
[/TR]
[TR]
[TD="align: right"]3[/TD]
[TD="align: left"]Lê Thị Tuyết[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]SĐT: 841677912886[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]ĐC: Xóm 8 Xã Nghĩa Thuận- Thái Hòa-Nghệ An[/TD]
[/TR]
[TR]
[TD="align: right"]4[/TD]
[TD="align: left"]Cao Tiến Dũng[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]SĐT: 84912677633[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]ĐC: 52 Đường Nguyễn Quốc Trị - Phường Hưng Phúc- Vinh-Nghệ An[/TD]
[/TR]
[/TABLE]
Cách 1: Dùng công thức
Công thức cho D2:
PHP:
=INDEX($B$3:$B$600,ROW(C1)+(3*(COLUMNS($C$1:C$1)-1)))

Kéo xuống dưới 2 hàng nữa, sau đó tất cả kéo sang phải
 
Lần chỉnh sửa cuối:
Dear cả nhà
Em có một bẳng dữ liệu như file đính kèm
Em cần chuyển cứ 3 hàng lại chuyển thành cột rồi 3 hàng tiếp theo lại chuyển thành cột mà em không biết làm cách nào ngoài copy paste cả
Mà mỗi tháng em lại có một file như vậy
hic hic nhờ cả nhà nghiên cứu giúp em với ạ

[TABLE="width: 642"]
[TR]
[TD="align: left"]STT[/TD]
[TD="align: left"]Retailer[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: left"]Lê Thị Thu Hằng[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]SĐT: 84915111181[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]ĐC: 50 Nguyễn Xí[/TD]
[/TR]
[TR]
[TD="align: right"]2[/TD]
[TD="align: left"]Đặng Đức Thắng[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]SĐT: 84977679770[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]ĐC: Tổ 7 Xóm Đức Vinh ,Xã Hưng Lộc[/TD]
[/TR]
[TR]
[TD="align: right"]3[/TD]
[TD="align: left"]Lê Thị Tuyết[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]SĐT: 841677912886[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]ĐC: Xóm 8 Xã Nghĩa Thuận- Thái Hòa-Nghệ An[/TD]
[/TR]
[TR]
[TD="align: right"]4[/TD]
[TD="align: left"]Cao Tiến Dũng[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]SĐT: 84912677633[/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"]ĐC: 52 Đường Nguyễn Quốc Trị - Phường Hưng Phúc- Vinh-Nghệ An[/TD]
[/TR]
[/TABLE]
PHP:
Sub Buoc_Nhay()
    Dim Sarr, Darr, i As Long, k As Long
    With Sheet2
        Sarr = .Range(.[B2], .[B65000].End(xlUp)).Value2
    End With
    ReDim Darr(1 To UBound(Sarr), 1 To 3)
    For i = 1 To UBound(Sarr) Step 3
        k = k + 1
        Darr(k, 1) = Sarr(i, 1)
        Darr(k, 2) = Sarr(i + 1, 1)
        Darr(k, 3) = Sarr(i + 2, 1)
    Next i
    With Sheet2
        .[D2:F65000].ClearContents
        If k Then
            .[D2].Resize(k, 3).Value = Darr
        End If
    End With
End Sub
Không biết có phải ý bạn thế này ko?
 

File đính kèm

PHP:
Sub Buoc_Nhay()
    Dim Sarr, Darr, i As Long, k As Long
    With Sheet2
        Sarr = .Range(.[B2], .[B65000].End(xlUp)).Value2
    End With
    ReDim Darr(1 To UBound(Sarr), 1 To 3)
    For i = 1 To UBound(Sarr) Step 3
        k = k + 1
        Darr(k, 1) = Sarr(i, 1)
        Darr(k, 2) = Sarr(i + 1, 1)
        Darr(k, 3) = Sarr(i + 2, 1)
    Next i
    With Sheet2
        .[D2:F65000].ClearContents
        If k Then
            .[D2].Resize(k, 3).Value = Darr
        End If
    End With
End Sub
Không biết có phải ý bạn thế này ko?

Xin hỏi, nếu trong trường hợp chuyển thành 28 cột thì phải thay đổi code này như thế nào ??
 
Xin hỏi, nếu trong trường hợp chuyển thành 28 cột thì phải thay đổi code này như thế nào ??
Chưa hiểu bạn muốn hỏi cái gì, vẫn file của chủ topic cũ hay thế nào, bạn nên có file đính kèm và kết quả mong muốn, mọi người mới hiểu được và có thể giúp bạn được
 
Chưa hiểu bạn muốn hỏi cái gì, vẫn file của chủ topic cũ hay thế nào, bạn nên có file đính kèm và kết quả mong muốn, mọi người mới hiểu được và có thể giúp bạn được

Mình hỏi cái code của bạn, mình muốn sử dụng để chuyển thành 28 cột, tương tự như file của chủ topic thì phải thay đổi như thế nào
 
Mình hỏi cái code của bạn, mình muốn sử dụng để chuyển thành 28 cột, tương tự như file của chủ topic thì phải thay đổi như thế nào
Nhưng vấn đề là 28 cột như thế nào, bạn nói thể thì không hiểu được, vì hình như chủ topic chỉ muốn 3 cột, sao bạn ko lấy file đó, và nêu kết quả mong muốn trong file
 
Mã:
Option Explicit
Sub GPE()
Dim Arr, dArr, I&, J&, K&
With Sheet1
        Arr = .Range(.[A2], .[A65000].End(3)).Value2
ReDim dArr(1 To 65000, 1 To 28)
    For I = 1 To UBound(Arr) Step 28
        K = K + 1
        For J = 1 To 28
            dArr(K, J) = Arr(I - 1 + J, 1)
        Next J
    Next I
        .[D2:AE65000].ClearContents
        If K Then .[D2].Resize(K, 28).Value = dArr
End With
End Sub

Cám ơn bạn. Tương đối đúng yêu cầu.
Trong trường hợp nhóm C chỉ có 25 dòng C1 -> C25 (chứ không phải C1 ->C28) thì code bị lỗi
 
Bạn đưa sao làm vậy chứ. Bộ với yêu cầu trước bạn có nói tới số 25 ah? Bạn đưa ra số 28. Giờ code cho bạn số 28.

GIờ bạn đem số 28 so với số 25 ==> Bạn phán code lỗi.

Bạn thử lấy con Heo so với con Bò xem nó có khác nhau không???

Mong bạn đừng giận. Trong file của mình, mình có ghi là dữ liệu ở cột A có thể khoảng 2000 dòng. Mình đâu có nói dữ liệu là bội số của 28 đâu
 
Mong bạn đừng giận. Trong file của mình, mình có ghi là dữ liệu ở cột A có thể khoảng 2000 dòng. Mình đâu có nói dữ liệu là bội số của 28 đâu
Bạn thử code củ chuối xuất sang sheet2 nhé:
Mã:
Sub Chuyen()  
With Sheets("Sheet2").Range("A2").Resize((Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row - 1) / 28, 28)
    .Formula = "=INDEX('Sheet1'!$A:$A,28*ROWS(A$2:A2)-27+COLUMNS($A2:A2))"
    .Value = .Value
  End With
End Sub
 
Mong bạn đừng giận. Trong file của mình, mình có ghi là dữ liệu ở cột A có thể khoảng 2000 dòng. Mình đâu có nói dữ liệu là bội số của 28 đâu
cái này mình cũng đoán thế nên viết code theo hướng bạn nói nhưng chưa ra kết quả. Thôi đi ăn cơm đã, nếu không ra thì có thành viên khác giúp bạn nhé
 
tào lao mía lao
Mã:
Public Sub hell()
Dim arr, dArr, r As Long, sCo(1 To 26) As Long, i As Byte, tMa As Long
With Sheet1
    arr = .Range(.[A2], .[A65000].End(xlUp)).Value
    ReDim dArr(1 To 26, 1 To UBound(arr))
    For r = 1 To UBound(arr) Step 1
        i = Asc(Left(arr(r, 1), 1)) - 64
        sCo(i) = sCo(i) + 1
        dArr(i, sCo(i)) = arr(r, 1)
        If tMa < sCo(i) Then tMa = sCo(i)
    Next
    .Range("D2").Resize(26, 200).ClearContents
    .Range("D2").Resize(26, tMa).Value = dArr
End With
End Sub
 
Bạn thử code củ chuối xuất sang sheet2 nhé:
Mã:
Sub Chuyen()  
With Sheets("Sheet2").Range("A2").Resize((Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row - 1) / 28, 28)
    .Formula = "=INDEX('Sheet1'!$A:$A,28*ROWS(A$2:A2)-27+COLUMNS($A2:A2))"
    .Value = .Value
  End With
End Sub

Dữ liệu nằm trong khoảng C1 --> C13 thì code chạy không đúng.
Nhưng dữ liệu từ C1 --> C14 trở lên thì code chạy đúng.
 
tào lao mía lao
Mã:
Public Sub hell()
Dim arr, dArr, r As Long, sCo(1 To 26) As Long, i As Byte, tMa As Long
With Sheet1
    arr = .Range(.[A2], .[A65000].End(xlUp)).Value
    ReDim dArr(1 To 26, 1 To UBound(arr))
    For r = 1 To UBound(arr) Step 1
        i = Asc(Left(arr(r, 1), 1)) - 64
        sCo(i) = sCo(i) + 1
        dArr(i, sCo(i)) = arr(r, 1)
        If tMa < sCo(i) Then tMa = sCo(i)
    Next
    .Range("D2").Resize(26, 200).ClearContents
    .Range("D2").Resize(26, tMa).Value = dArr
End With
End Sub

Code chạy rất ok. Cám ơn bạn nhiều
 
Web KT

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

Back
Top Bottom