Dùng lại CT của anh @huuthang_bd, công thức tại M2:Như tiêu đề nhờ Anh/Chị diễn đàn giúp em sắp xếp dữ liệu từ hàng ngang sang hàng dọc. Theo điều kiện những cell nào trống không có dữ liệu sẽ bị bỏ qua và những cell nào có dữ liệu sẽ được sắp xếp tiếp tục. Em cám ơn nhiều
M2=INDIRECT(TEXT(SMALL(IF($C$2:$L$5<>"",ROW($C$2:$C$5)*1000+COLUMN($C$2:$L$2)),ROW(A1)),"R#C###"),)
Cám ơn bạn giúp đỡ nhưng kết quả ra bị sai ạ . Bạn xem lại file dùm mình nhaBạn xem thử đúng ý mình chưa.
Giữa file bạn up ở bài 1 và bài này khác nhau hoàn toàn về dữ liệu, tôi dựa vào cột B của bạn (Test No) nhưng lần này bạn up file cột B chẳng có gì cả nó sai là đúng rồi, nếu dữ liệu của bạn chỉ có trong vùng từ C2 đến L20 thì sửa lại thế này.Cám ơn bạn giúp đỡ nhưng kết quả ra bị sai ạ . Bạn xem lại file dùm mình nha
Sub GPE()
Dim Arr(), dArr(), i As Long, j As Long, k As Long
With Sheet1
Arr = .Range("C2:L20").Value
j = UBound(Arr, 1) * UBound(Arr, 2)
ReDim dArr(1 To j, 1 To 1)
For i = 1 To UBound(Arr, 1)
For j = 1 To UBound(Arr, 2)
If Arr(i, j) <> Empty Then
k = k + 1: dArr(k, 1) = Arr(i, j)
End If
Next j
Next i
.Range("N2").Resize(k) = dArr
End With
End Sub
Bạn giúp mình chỉnh lại công thức tại vì mình muốn sắp xếp từ ô C2 - L20. Cám ơn bạnDùng lại CT của anh @huuthang_bd, công thức tại M2:
Ctrl+Shift+Enter rồi fill xuông!!!PHP:M2=INDIRECT(TEXT(SMALL(IF($C$2:$L$5<>"",ROW($C$2:$C$5)*1000+COLUMN($C$2:$L$2)),ROW(A1)),"R#C###"),)
Đây bạn ạ:Bạn giúp mình chỉnh lại công thức tại vì mình muốn sắp xếp từ ô C2 - L20. Cám ơn bạn
M2=IFERROR(INDIRECT(TEXT(SMALL(IF($C$2:$L$20<>"",ROW($C$2:$C$20)*1000+COLUMN($C$2:$L$2)),ROW(A1)),"R#C###"),),"")
Cám ơn bạn quá tuyệt vời . Bạn cho mình hỏi vấn đề nhỏ nữa là cách nào xóa trắng cột N trước khi sắp xếp vậy bạn vì nếu như dữ liệu mình sắp xếp lần 1 nhiều hơn lần 2 thì dữ liệu của lần 1 vẫn còn lưu lại bên dưới .Giữa file bạn up ở bài 1 và bài này khác nhau hoàn toàn về dữ liệu, tôi dựa vào cột B của bạn (Test No) nhưng lần này bạn up file cột B chẳng có gì cả nó sai là đúng rồi, nếu dữ liệu của bạn chỉ có trong vùng từ C2 đến L20 thì sửa lại thế này.
Mã:Sub GPE() Dim Arr(), dArr(), i As Long, j As Long, k As Long With Sheet1 Arr = .Range("C2:L20").Value j = UBound(Arr, 1) * UBound(Arr, 2) ReDim dArr(1 To j, 1 To 1) For i = 1 To UBound(Arr, 1) For j = 1 To UBound(Arr, 2) If Arr(i, j) <> Empty Then k = k + 1: dArr(k, 1) = Arr(i, j) End If Next j Next i .Range("N2").Resize(k) = dArr End With End Sub
Thì thêm đoạn code xóa là xong.Cám ơn bạn quá tuyệt vời . Bạn cho mình hỏi vấn đề nhỏ nữa là cách nào xóa trắng cột N trước khi sắp xếp vậy bạn vì nếu như dữ liệu mình sắp xếp lần 1 ít hơn lần 2 thì dữ liệu của lần 1 vẫn còn lưu lại bên dưới .
Sub GPE()
Dim Arr(), dArr(), i As Long, j As Long, k As Long
With Sheet1
Arr = .Range("C2:L20").Value
j = UBound(Arr, 1) * UBound(Arr, 2)
ReDim dArr(1 To j, 1 To 1)
For i = 1 To UBound(Arr, 1)
For j = 1 To UBound(Arr, 2)
If Arr(i, j) <> Empty Then
k = k + 1: dArr(k, 1) = Arr(i, j)
End If
Next j
Next i
.Range("N2:N10000").Clear
.Range("N2").Resize(k) = dArr
End With
End Sub
Anh có thể giải thích ý nghĩa công thức này được không?Đây bạn ạ:
Ctrl+Shift+Enter rồi fill xuông!!!PHP:M2=IFERROR(INDIRECT(TEXT(SMALL(IF($C$2:$L$20<>"",ROW($C$2:$C$20)*1000+COLUMN($C$2:$L$2)),ROW(A1)),"R#C###"),),"")
Cám ơn bạn nhiều! Chúc bạn 1 ngày vui vẻThì thêm đoạn code xóa là xong.
Mã:Sub GPE() Dim Arr(), dArr(), i As Long, j As Long, k As Long With Sheet1 Arr = .Range("C2:L20").Value j = UBound(Arr, 1) * UBound(Arr, 2) ReDim dArr(1 To j, 1 To 1) For i = 1 To UBound(Arr, 1) For j = 1 To UBound(Arr, 2) If Arr(i, j) <> Empty Then k = k + 1: dArr(k, 1) = Arr(i, j) End If Next j Next i .Range("N2:N10000").Clear .Range("N2").Resize(k) = dArr End With End Sub
Cách này dùng hệ quy chiếu RC của excel bạn ạ.Anh có thể giải thích ý nghĩa công thức này được không?
Em cảm ơn Anh nhiều!Cách này dùng hệ quy chiếu RC của excel bạn ạ.
Đoạn này SMALL(IF($C$2:$L$20<>"",ROW($C$2:$C$20)*1000+COLUMN($C$2:$L$2)),ROW(A1)) sẽ bằng 2003, dùng text(2003,"R#C###")="R2C003"
Indirect("R2C003",0)=Indirect("R2C3",0) là vị trí Row 2 , column 3 tức là C2
Tương tự với các ô tiếp theo
M2=IFERROR(INDIRECT(TEXT(SMALL(IF($C$2:$L$20<>"",ROW($C$2:$C$20)*1000+COLUMN($C$2:$L$2)),ROW(A1)),"R#C###"),),"")
có chỗ nào lưu mấy tuyệt chiêu không anh, em thì không được động não lắm học ké cho chắcSao công thức trên không được đưa vào những tuyệt chiêu nhỉ ????Mã:M2=IFERROR(INDIRECT(TEXT(SMALL(IF($C$2:$L$20<>"",ROW($C$2:$C$20)*1000+COLUMN($C$2:$L$2)),ROW(A1)),"R#C###"),),"")
![]()
Học ké thì cũng có sao đâu. Người xưa có nói "Nhân Vô thập toàn" .có chỗ nào lưu mấy tuyệt chiêu không anh, em thì không được động não lắm học ké cho chắc![]()
hi thấy người khác nghĩ ra được cảm thấy ngưỡng mộ ^^Học ké thì cũng có sao đâu. Người xưa có nói "Nhân Vô thập toàn" .
Khi tôi mới bắt đầu với excel. kiến thức excel trong đầu tôi lúc đó là con số 0 tròn chỉnh.