Hỗ trợ hàm UDF nghịch chuyển dữ liệu

Liên hệ QC

Thẩm Tinh Di

Chỉ mong bình thản nắm tay nàng đi giữa nhân gian
Tham gia
20/5/22
Bài viết
4
Được thích
1
Chào anh chị, em có bài này nhờ anh chị giải giúp.

Em muốn nghịch chuyển dữ liệu như hình.

VD: A B C sẽ thành C B A

Nhờ anh chị giải giúp em bài này.

Em cảm ơn anh chị
 

File đính kèm

  • Ngịch chuyển dữ liệu.PNG
    Ngịch chuyển dữ liệu.PNG
    239.3 KB · Đọc: 17
  • NGHỊCH CHUYỂN DỮ LIỆU.xlsb
    12.2 KB · Đọc: 9
Chào anh chị, em có bài này nhờ anh chị giải giúp.

Em muốn nghịch chuyển dữ liệu như hình.

VD: A B C sẽ thành C B A

Nhờ anh chị giải giúp em bài này.

Em cảm ơn anh chị
Nếu dùng office 365 thì có thể dùng hàm nhé bạn.

Mã:
Function Chuyen(str As String) As String
  Dim arr As Variant
  Dim arr2 As Variant
  Dim i As Long
  arr = Split(str, " ")
  ReDim arr2(UBound(arr))
  For i = 0 To UBound(arr)
    arr2(i) = arr(UBound(arr) - i)
  Next
  Chuyen = Join(arr2, " ")
End Function
 
Upvote 0
Hàm sử dụng ngon lành. Cảm ơn anh Hai Lúa Miền Tây nhiều.
 
Upvote 0
Upvote 0
Nếu dùng office 365 thì có thể dùng hàm nhé bạn.

Mã:
Function Chuyen(str As String) As String
  Dim arr As Variant
  Dim arr2 As Variant
  Dim i As Long
  arr = Split(str, " ")
  ReDim arr2(UBound(arr))
  For i = 0 To UBound(arr)
    arr2(i) = arr(UBound(arr) - i)
  Next
  Chuyen = Join(arr2, " ")
End Function
Bài này là kinh điển (classic) của bài toán đảo ngược chuỗi. Giải thuật là đi từ hai đầu quy tụ về giữa.

i1 = LBound(arr)
i2 = UBound(arr)
Do While i1 < i2
arr2(i1) = arr(i2)
arr2(i2) = arr(i1)
i1 = i1 + 1
i2 = i2 - 1
Loop
Code trông dài hơn nhưng thực ra hiệu quả hơn.
Lưu ý là theo cách kinh điển thì người ta chỉ dùng 1 mảng, và một biến tạm lúc chuyển đổi phần tử mảng.

Nếu muốn cải tiến cách dùng vòng lặp For thì có thể giới hạn nó ở giữa mảng
For i = 0 To UBound(arr) \ 2
 
Upvote 0
Web KT

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

Back
Top Bottom