Hỗ trợ hàm UDF nghịch chuyển dữ liệu (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

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

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