đổi số có 2 chữ số: Có hàng đơn vị nhỏ hơn hàng chục, đổi đảo lại

Liên hệ QC

pt_hcl

Thành viên hoạt động
Tham gia
15/2/11
Bài viết
138
Được thích
2
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!
 

File đính kèm

  • DOI_SO.xlsx
    18.8 KB · Đọc: 15
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!

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
 
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!
bạn dùng công thức ở ô R2C5
Mã:
=IF(LEFT(RC[-2],1)>RIGHT(RC[-2],1),RIGHT(RC[-2],1)&LEFT(RC[-2],1),RC[-2])
copy xuống
 
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
Vâng. Cảm ơn rất nhiều!
 
Đả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.
 
Đả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.

"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)))
 
Mã:
=TEXT(MIn(1*C2,1*RIGHT(C2)&INT(C2/10)),"0#")
=TEXT(MIN(1*C2,1*MOD(C2,10)&INT(C2/10)),"0#")
 
Lần chỉnh sửa cuối:
Đả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.

"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)))
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
Mã:
=TEXT(MIN(--C2,--RIGHT(C2,1)&LEFT(C2,1)),"00")
nếu C2 chỉ 1 ký tự như 5 chẳng hạn thì kết quả lại dư số 0, chỉ là giả định hy vọng thực tế không có trường hợp 1, 3, 4... ký tự
 
Web KT

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

Back
Top Bottom