Cho mình hỏi về tách số dạng: abc(123);bvs(234)+fgsdh(2132) (1 người xem)

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

nghiemduyminh

Thành viên mới
Tham gia
16/8/11
Bài viết
1
Được thích
0
Xin phép mọi người ai biết cho mình xin cái Hàm giải quyết vấn đề này ạ
Ví dụ: TH1: ABC(345);BGD(234);...;...;.... ==> = 345(1cột)234(1cột)
TH2: ABC:CDF(345);GFD(789)+POI:CHD(431);HGD(256)+.... ==> = 345(1cột)789(1cột)431(1cột)256(1cột)
Chân thành cảm ơn mọi người !
 
Xin phép mọi người ai biết cho mình xin cái Hàm giải quyết vấn đề này ạ
Ví dụ: TH1: ABC(345);BGD(234);...;...;.... ==> = 345(1cột)234(1cột)
TH2: ABC:CDF(345);GFD(789)+POI:CHD(431);HGD(256)+.... ==> = 345(1cột)789(1cột)431(1cột)256(1cột)
Chân thành cảm ơn mọi người !
Tốt nhất đưa file nên và mô tả trong file.
 
Những trường hợp dữ liệu lung tung thế này thì dùng code mới giải quyết nổi.
Nếu dùng code thì dựa trên đặc điểm là các số nằm giữa 2 dấu ngoặc, như vậy có hai cách:
1. Tách chuỗi bằng hàm Split. Sau đó lựa các phần tử ở vị trí chẵn (vì mảng bắt đầu chỉ số 0 cho nên vị trí chẵn là 1, 3, 5...)
2. Dùng RegEx để duyệt chuỗi.
 
Bài này có thể dùng công thức vẫn được, nhưng phải thấy hết các kiểu dữ liệu đã, nếu không dễ bị "tèo"
 
Xin phép mọi người ai biết cho mình xin cái Hàm giải quyết vấn đề này ạ
Ví dụ: TH1: ABC(345);BGD(234);...;...;.... ==> = 345(1cột)234(1cột)
TH2: ABC:CDF(345);GFD(789)+POI:CHD(431);HGD(256)+.... ==> = 345(1cột)789(1cột)431(1cột)256(1cột)
Chân thành cảm ơn mọi người !
Dữ liệu của bạn có những trường hợp sau không:
1. Có trường hợp nào trong cặp () có ký tự không phải là số không? Nếu có thì kết quả như thế nào?
2. Có trường hợp nào số nằm ngoài cặp () không? Nếu có thì có lấy không?
 
Cứ làm theo 2 chuỗi giả lập của tác giả thôi, bằng hàm mãng tự tạo

Hàm có nội dung như sau:
PHP:
Option Explicit
Function Tachchuoi(StrC As String)
 ReDim Arr(1 To 1, 1 To Len(StrC))
 Dim J%, W%, VTr As Byte, Dem%, Pos%, Tmp$
 
 For J = 1 To Len(StrC)
    Pos = InStr(StrC, "(")
    If Pos Then
        Tmp = Mid(StrC, Pos + 1, 6)
        VTr = InStr(Tmp, ")")
        If VTr Then
            Dem = Dem + 1
            Arr(1, Dem) = CInt(Left(Tmp, VTr - 1))
        End If
        StrC = Mid(StrC, Pos + 1, Len(StrC))
    End If
 Next J
 If Dem Then Tachchuoi = Arr()
End Function

Cách dùng:
Giả dụ tại
[A2] ta đang có chuỗi :ABC(345);BGD(234)
[A3] là : ABC:CDF(345);GFD(789)+POI:CHD(431);HGD(256)+123

Lấy chuột tô chọn vùng [G2:M2] & nhập cú fáp hàm lên thanh công thức: =TachChuoi(A2)
Sau đó ta kết thúc bằng tổ hợp 3 fím {CTRL}+{SHIFT}+{ENTER} để hiện kết quả;
Muốn có kết quả tiếp theo, ta dùng chuột chọn vùng kết quả & áp dụng fương thức FillDown
Xuống các ô dưới liền kề.

Muốn hoa mĩ thì cho các con số 0 biến khỏi màn hình.

Chúc vui.
 

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

Back
Top Bottom