Mình cần đổi những số có 2 chữ số mà hàng đơn vị nhỏ hơn hàng chục thì sẽ đổi đảo lại:
- Ví dụ: số 10 sẽ đổi thành 01; số 20 sẽ đổi thành 02; số 21 sẽ đổi thành 12; số 31 sẽ đổi thành 13,....
- Mong GPE giúp đỡ. Xin cảm ơn rất nhiều!
Public Sub EPG()
Dim Arr(), I As Long, Num1 As Long, Num2 As Long
Arr = Range("C2", Range("C2").End(xlDown)).Value
For I = 1 To UBound(Arr)
Num1 = Left(Arr(I, 1), 1): Num2 = Right(Arr(I, 1), 1)
If Num2 < Num1 Then Arr(I, 1) = Num2 & Num1
Next I
Range("E2").Resize(I - 1) = Arr
End Sub
bạn dùng công thức ở ô R2C5Mình cần đổi những số có 2 chữ số mà hàng đơn vị nhỏ hơn hàng chục thì sẽ đổi đảo lại:
- Ví dụ: số 10 sẽ đổi thành 01; số 20 sẽ đổi thành 02; số 21 sẽ đổi thành 12; số 31 sẽ đổi thành 13,....
- Mong GPE giúp đỡ. Xin cảm ơn rất nhiều!
=IF(LEFT(RC[-2],1)>RIGHT(RC[-2],1),RIGHT(RC[-2],1)&LEFT(RC[-2],1),RC[-2])
Vâng. Cảm ơn rất nhiều!Format cột E kiểu Text, chạy Sub này thử xem:
PHP:Public Sub EPG() Dim Arr(), I As Long, Num1 As Long, Num2 As Long Arr = Range("C2", Range("C2").End(xlDown)).Value For I = 1 To UBound(Arr) Num1 = Left(Arr(I, 1), 1): Num2 = Right(Arr(I, 1), 1) If Num2 < Num1 Then Arr(I, 1) = Num2 & Num1 Next I Range("E2").Resize(I - 1) = Arr End Sub
Đảo số với điều kiện như vậy thì kết quả luôn luôn nhỏ hơn trị đầu.
Như vậy, nếu dùng công thức tách chuỗi như bài #3 thì dùng hàm MIN sẽ giảm thiểu được một lần công thức tách chuỗi.
=MIN(--C2;--(RIGHT(C2;1) & LEFT(C2;1)))
Đảo số với điều kiện như vậy thì kết quả luôn luôn nhỏ hơn trị đầu.
Như vậy, nếu dùng công thức tách chuỗi như bài #3 thì dùng hàm MIN sẽ giảm thiểu được một lần công thức tách chuỗi.
dùng hàm Min sẽ gọn hơn nhưng các giá trị 10, 20 chưa lấy 2 ký tự cần bổ xung thêm"Tuyệt chiêu" là chỗ tìm ra quy luật của nó: MIN
PHP:=MIN(--C2;--(RIGHT(C2;1) & LEFT(C2;1)))
=TEXT(MIN(--C2,--RIGHT(C2,1)&LEFT(C2,1)),"00")