Thay thế các số trong chuỗi. . .

Liên hệ QC

zPeterPan

Thành viên hoạt động
Tham gia
27/2/21
Bài viết
154
Được thích
10
Em xin chào các Thầy/cô và các anh chị em trên diễn đàn giaiphapexcel ạ. . .
Xin nhờ mọi người giúp em với ạ. . . em có bảng dữ liệu từ 00 đến 99, em muốn thay thế thành các số đối với nhau ạ. . .
Ví dụ:
Dòng dữ liệu ban đầu ở cột "D" là ( 01,02,03,04,05,06,07,08,09,10,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30 )
và kết quả mong muốn sẽ là: ( 01-10,02-20,03-30,04-40,05-50,06-60,07-70,08-80,09-90,01-10,12-21,13-31,14-41,15-51,16-61,17-71,18-81,19-91,02-20,12-21,23-32,24-42,25-52,26-62,27-72,28-82,29-92,03-30 )
Dòng dữ liệu ban đầu ở cột "D" là (00,11,22,33,44,55,66,77,88,99)
và kết quả mong muốn sẽ là: (00-55,11-66,22-77,33-88,44-99,00-55,11-66,22-77,33-88,44-99)
Ảnh trong file đây ạ. . . Em xin cảm ơn ạ. . .
123.jpg
Nhờ mọi người giúp em với ạ. . .
 

File đính kèm

  • DoiSo.xlsb
    25 KB · Đọc: 10
Em xin chào các Thầy/cô và các anh chị em trên diễn đàn giaiphapexcel ạ. . .
Xin nhờ mọi người giúp em với ạ. . . em có bảng dữ liệu từ 00 đến 99, em muốn thay thế thành các số đối với nhau ạ. . .
Ví dụ:
Dòng dữ liệu ban đầu ở cột "D" là ( 01,02,03,04,05,06,07,08,09,10,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30 )
và kết quả mong muốn sẽ là: ( 01-10,02-20,03-30,04-40,05-50,06-60,07-70,08-80,09-90,01-10,12-21,13-31,14-41,15-51,16-61,17-71,18-81,19-91,02-20,12-21,23-32,24-42,25-52,26-62,27-72,28-82,29-92,03-30 )
Dòng dữ liệu ban đầu ở cột "D" là (00,11,22,33,44,55,66,77,88,99)
và kết quả mong muốn sẽ là: (00-55,11-66,22-77,33-88,44-99,00-55,11-66,22-77,33-88,44-99)
Ảnh trong file đây ạ. . . Em xin cảm ơn ạ. . .
View attachment 270251
Nhờ mọi người giúp em với ạ. . .
Thử cùi bắp
Mã:
Option Explicit

Sub xxx()
Dim nguon
Dim bangtra
Dim i, j, k, t

nguon = Sheet1.Range("D4", Sheet1.Range("D4").End(xlDown))
ReDim bangtra(99)
For j = 0 To 99
    k = j \ 10
    t = j Mod 10
    If k = t Then
        If j < 56 Then
            bangtra(j) = Right(j + 100, 2) & "-" & Right((j + 55) Mod 110 + 100, 2)
        Else
            bangtra(j) = Right((j + 55) Mod 110 + 100, 2) & "-" & Right(j + 100, 2)
        End If
    Else
        If k < t Then
            bangtra(j) = k & t & "-" & t & k
        Else
            bangtra(j) = t & k & "-" & k & t
        End If
    End If
Next j
For i = 1 To UBound(nguon)
    k = Split(nguon(i, 1), ",")
    For j = 0 To UBound(k)
        t = Val(k(j))
        k(j) = bangtra(t)
    Next j
    nguon(i, 1) = Join(k, ",")
Next i
Sheet1.Range("E4").Resize(UBound(nguon), UBound(nguon, 2)) = nguon
End Sub
 
Upvote 0
Em xin chào các Thầy/cô và các anh chị em trên diễn đàn giaiphapexcel ạ. . .
Xin nhờ mọi người giúp em với ạ. . . em có bảng dữ liệu từ 00 đến 99, em muốn thay thế thành các số đối với nhau ạ. . .
Ví dụ:
Dòng dữ liệu ban đầu ở cột "D" là ( 01,02,03,04,05,06,07,08,09,10,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30 )
và kết quả mong muốn sẽ là: ( 01-10,02-20,03-30,04-40,05-50,06-60,07-70,08-80,09-90,01-10,12-21,13-31,14-41,15-51,16-61,17-71,18-81,19-91,02-20,12-21,23-32,24-42,25-52,26-62,27-72,28-82,29-92,03-30 )
Dòng dữ liệu ban đầu ở cột "D" là (00,11,22,33,44,55,66,77,88,99)
và kết quả mong muốn sẽ là: (00-55,11-66,22-77,33-88,44-99,00-55,11-66,22-77,33-88,44-99)
Ảnh trong file đây ạ. . . Em xin cảm ơn ạ. . .
View attachment 270251
Nhờ mọi người giúp em với ạ. . .
Thử UDF này xem:
Mã:
Option Explicit

Function DoiSo(str As String, Optional Deli As String = ",")
Dim Tmp, I As Long, S As Long
Tmp = Split(str, Deli)
For I = 0 To UBound(Tmp)
    If Tmp(I) = StrReverse(Tmp(I)) Then S = (Val(Tmp(I)) + 55) Mod 110 Else S = StrReverse(Tmp(I))
    Tmp(I) = IIf(S > Val(Tmp(I)), Tmp(I) & "-" & S, Format(S, "00") & "-" & Tmp(I))
Next
DoiSo = Join(Tmp, Deli)
End Function
 
Upvote 0
Thêm 1 cách khác coi
Mã:
Sub ABC()
    Dim T, I&, ii&
With Sheet1
    For I = 4 To 7
        T = Split(.Range("D" & I).Value, ",")
        For ii = 0 To UBound(T, 1)
            If Val(T(ii)) = 0 Or Val(T(ii)) Mod 11 = 0 Then
                If Val(T(ii)) < 55 Then
                    T(ii) = Format(T(ii), "00") & "-" & Format(Val(T(ii) + 55), "00")
                Else
                    T(ii) = Format((Val(T(ii)) - 55), "00") & "-" & StrReverse(T(ii))
                End If
            Else
                If Val(T(ii)) < Val(StrReverse(T(ii))) Then
                    T(ii) = Format(T(ii), "00") & "-" & Format(StrReverse(T(ii)), "00")
                Else
                    T(ii) = StrReverse(T(ii)) & "-" & T(ii)
                End If
            End If
        Next
        .Range("F" & I).Value = VBA.Join(T, ",")
    Next
End With
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom