VBA

HoaNguyen

Yêu THVBA
Đề bài. Cho chuỗi ký tự: 1-5,5(1-2),B(2-3).pdf. Các số sau B là bỏ. Dữ liệu trả về
001.pdf
004.pdf
005.pdf
005(1).pdf
005(2).pdf
Mọi người xem giúp mình trường hợp này thì xử lý như vào và viết code như nào với ạ
 

HUONGLIEN7214

Yêu THVBA
Đề bài. Cho chuỗi ký tự: 1-5,5(1-2),B(2-3).pdf. Các số sau B là bỏ. Dữ liệu trả về
001.pdf
004.pdf
005.pdf
005(1).pdf
005(2).pdf
Mọi người xem giúp mình trường hợp này thì xử lý như vào và viết code như nào với ạ
Thử tham khảo code sau:
Mã:
Option Explicit

Sub Tach()
Dim i&, j&, t&, k1&, k2&, U&, V&, F&, M&
Dim Rng As Range
Dim s, Tmp
Set Rng = Sheet1.Range("A1")
Tmp = Split(Rng, ".")
s = Split(Tmp(0), ",")
ReDim KQ(1 To 100, 1 To 1)
For i = 0 To UBound(s)
    If IsNumeric(Mid(s(i), 1, 1)) = False Then
        U = InStr(s(i), "("): F = InStr(s(i), ")"): V = InStr(s(i), "-"): M = i
        If U Then
            If V Then
                k1 = Mid(s(i), U + 1, V - U - 1)
                k2 = Mid(s(i), V + 1, F - 1 - V)
            End If
        End If
    End If
Next i
For i = 0 To UBound(s)
If i <> M Then
        U = InStr(s(i), "("): F = InStr(s(i), ")"): V = InStr(s(i), "-")
        If U = False Then
            If V Then
                For j = Mid(s(i), 1, V - 1) To Mid(s(i), V + 1, Len(s(i)) - V)
                    If k1 <> 0 Or k2 <> 0 Then
                        If j <> k1 And j <> k2 Then
                            t = t + 1: KQ(t, 1) = j: KQ(t, 1) = Format(KQ(t, 1), "000") & ".pdf"
                        End If
                    End If
                Next j
            End If
        Else
            If V Then
                For j = Mid(s(i), U + 1, V - U - 1) To Mid(s(i), V + 1, F - 1 - V)
                    t = t + 1: KQ(t, 1) = Mid(s(i), 1, U - 1): KQ(t, 1) = Format(KQ(t, 1), "000") & "(" & Mid(s(i), U + 1, V - U - 1) & ")" & ".pdf"
                Next j
            End If
        End If
    End If
Next
  Sheet1.Range("C1").Resize(t + 2, 1) = KQ
End Sub
Code này có thể chỉ đúng với dữ liệu bài này.
 
Top