Nhờ viết hàm đảo ngược vị trí text hoặc số (1 người xem)

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

viendinhngoc

Thành viên hoạt động
Tham gia
10/4/11
Bài viết
166
Được thích
4
mình muốn viết hàm đảo giá trị kiểu như abccc thành cccba đổi hàng hoặc cột
VBA cũng được bạn nào biết giúp mình với
thank
 
mình muốn viết hàm đảo giá trị kiểu như abccc thành cccba đổi hàng hoặc cột
VBA cũng được bạn nào biết giúp mình với
thank
Bạn thêm hàm vào module
Mã:
Function rev(s As String) As String
For i = Len(s) To 1 Step -1
ss = ss & Mid(s, i, 1)
Next
rev = ss
End Function
Ở ô A2 cần lấy chuỗi đảo ngược của A1 bạn dùng =rev(A1)
 
Bạn thêm hàm vào module
Mã:
Function rev(s As String) As String
For i = Len(s) To 1 Step -1
ss = ss & Mid(s, i, 1)
Next
rev = ss
End Function
Ở ô A2 cần lấy chuỗi đảo ngược của A1 bạn dùng =rev(A1)

Chỉ thế này thôi là đủ:
Mã:
Function rev(s As String) As String
  rev = [COLOR=#ff0000]StrReverse[/COLOR](s)
End Function
 
thank 2 bạn tại mình viết nhầm 2 bạn hiểu nhầm
nó là 1 hàng hoặc cột mình muốn đổi vị trí
chứ không phải là nội dung trong 1 cell
(không dùng cách thêm 123456 rồi dùng filter lại nhé )
 
thank 2 bạn tại mình viết nhầm 2 bạn hiểu nhầm
nó là 1 hàng hoặc cột mình muốn đổi vị trí
chứ không phải là nội dung trong 1 cell
(không dùng cách thêm 123456 rồi dùng filter lại nhé )

Thế thì công thức Offset hoặc Index đều được. Bạn tự suy nghĩ hoặc cho file lên đây
 
thank 2 bạn tại mình viết nhầm 2 bạn hiểu nhầm
nó là 1 hàng hoặc cột mình muốn đổi vị trí
chứ không phải là nội dung trong 1 cell
(không dùng cách thêm 123456 rồi dùng filter lại nhé )

nếu trong vùng đó ko chứa công thức bên trong thì bạn thử code sau:
Mã:
Sub FlipRows()
'Updateby20131126
Dim Rng         As Range
Dim WorkRng     As Range
Dim Arr         As Variant
Dim i As Integer, j As Integer, k As Integer

    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    Set WorkRng = Application.Selection
    Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
    
    Arr = WorkRng.Formula
    
    For i = 1 To UBound(Arr, 1)
    k = UBound(Arr, 2)
        For j = 1 To UBound(Arr, 2) / 2
            xTemp = Arr(i, j)
            Arr(i, j) = Arr(i, k)
            Arr(i, k) = xTemp
            k = k - 1
        Next
    Next
    
    WorkRng.Formula = Arr
End Sub
- Run Macro trên, khi InputBox hiện ra --> chọn vùng cần chuyển --> OK
inputbox.png
kết quả:
dao vi tri o.jpg
 
bạn ơi hình số 1 thì mình làm được
nhưng khi kích OK thì không thấy hiện như hình 2
 
thank {1} 2 bạn tại mình viết nhầm 2 bạn hiểu nhầm
nó là 1 hàng hoặc cột mình muốn đổi vị trí
chứ không phải là nội dung trong 1 cell
(không dùng cách thêm 123456 {2} rồi dùng filter lại nhé )

{1} dùng tiếng Việt cho nó lịch sự.
{2} hiểu chết liền

Mã:
Sub DaoViTri(ByVal rg As Range)
[COLOR=#008000]' dao vi tri cua mot dong hoac mot cot
[/COLOR]If rg.Rows.Count = 1 Then
    rg = DaoMang(Application.Transpose(Application.Transpose(rg.Value)))
ElseIf rg.Columns.Count = 1 Then
    rg = Application.Transpose(DaoMang(Application.Transpose(rg.Value)))
Else
    MsgBox "Vung chon khong phai la 1 dong hoac 1 cot"
End If
End Sub
'
Function DaoMang(ByVal mang As Variant) As Variant
[COLOR=#008000]' dao thu tu vi tri cua mot mang
[/COLOR]Dim i As Integer, j As Integer
Dim tam As Variant
i = LBound(mang)
j = UBound(mang)
Do While i < j
    tam = mang(i)
    mang(i) = mang(j)
    mang(j) = tam
    i = i + 1
    j = j - 1
Loop
DaoMang = mang
End Function
 
Cám ơn bạn nhé
nhưng cho mình hỏi sử dụng như thế nào nhỉ
mình không biết đọc mã kia đâu
hic
 
sao làm lúc hiện cửa sổ chọn đối tượng xong kích ok không có vần đề gì xả ra là ntn bạn nhỉ
 
Hàm đảo ngược chữ hôặc text

Bạn có thể dùng hàm INDIRECT ví dụ: INDIRECT("f"&COUNTA($F$21:$F$27)+21-ROW(1:1)), trong đó "f" là cột chứ dữ liệu cần đảo, F$21:F$27 là vùng chứa dữ liệu cần đảo, và 21 là vị trí mà bạn cần đảo, row(1:1) là ô đầu tiên ( ừ cuối lên) của vùng dữ liệu cần đảo
hoặc dùng hàm OFFSET để thay cho hàm INDIRECT với cú pháp tương tự, hoặc bạn dùng lệnh sort có điều kiện, nếu không được gửi vào mail cho mình mình sẽ giúp, địa chỉ mail của mình là: mrhuan1978@yahoo.com.vn
 

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

Back
Top Bottom