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àoGửi bởi comet_1701
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àoGửi bởi comet_1701
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 fileGửi bởi hhoang_56
Mình gửi file, mong bạn giúp dùm
Gửi bởi hhoang_56
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
</div>Gửi bởi hpkhuong
</div>
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.Gửi bởi hhoang_56
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 đâuGửi bởi hpkhuong
Bạn thử code củ chuối xuất sang sheet2 nhé:Gửi bởi hhoang_56
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
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éGửi bởi hhoang_56
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