Cần giúp viết Code tách câu chữ trong phần đóng mở ngoặc (...) bên phải ngoài cùng (1 người xem)

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

hung2412

Thành viên tích cực
Tham gia
5/8/08
Bài viết
934
Được thích
240
Giới tính
Nam
Xin chào các bạn GPE!
Nhờ các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Các ô dọc theo cột A có câu chữ trong phần đóng mở ngoặc (...) bên phải ngoài cùng.
=> Có Code nào tách câu chữ trong ô thành 2 cột riêng biệt: Cột 1 là câu chữ không bao gồm
câu chữ trong phần đóng mở ngoặc (...) bên phải ngoài cùng, cột 2 là câu chữ trong phần đóng mở ngoặc (...) bên phải ngoài cùng.
Ví dụ:
- Ô A4 có nội dung là:
Trần Huy Quang - tạm ứng tiền đi công tác (Chi phí đi công tác)
=> Tách thành 2 cột bao gồm:
+ Cột 1 có nội dung là: Trần Huy Quang - tạm ứng tiền đi công tác
+ Cột 2 có nội dung là: (Chi phí đi công tác)
- Ô A8 có nội dung là: Nguyễn Văn Lam - tạm ứng tiền lương T10/2014
=> Tách thành 2 cột bao gồm:
+ Cột 1 có nội dung là: Nguyễn Văn Lam - tạm ứng tiền lương T10/2014
+ Cột 2 để trống (Vì không có câu chữ trong phần đóng mở ngoặc (...) bên phải ngoài cùng).
Mong các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
P/s: Có 01 File đính kèm.
 

File đính kèm

Xin chào các bạn GPE!
Nhờ các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Các ô dọc theo cột A có câu chữ trong phần đóng mở ngoặc (...) bên phải ngoài cùng.
=> Có Code nào tách câu chữ trong ô thành 2 cột riêng biệt: Cột 1 là câu chữ không bao gồm
câu chữ trong phần đóng mở ngoặc (...) bên phải ngoài cùng, cột 2 là câu chữ trong phần đóng mở ngoặc (...) bên phải ngoài cùng.
Ví dụ:
- Ô A4 có nội dung là:
Trần Huy Quang - tạm ứng tiền đi công tác (Chi phí đi công tác)
=> Tách thành 2 cột bao gồm:
+ Cột 1 có nội dung là: Trần Huy Quang - tạm ứng tiền đi công tác
+ Cột 2 có nội dung là: (Chi phí đi công tác)
- Ô A8 có nội dung là: Nguyễn Văn Lam - tạm ứng tiền lương T10/2014
=> Tách thành 2 cột bao gồm:
+ Cột 1 có nội dung là: Nguyễn Văn Lam - tạm ứng tiền lương T10/2014
+ Cột 2 để trống (Vì không có câu chữ trong phần đóng mở ngoặc (...) bên phải ngoài cùng).
Mong các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
P/s: Có 01 File đính kèm.
Tại C4
=IFERROR(LEFT(A4,FIND("(",A4,1)-1),A4)
Tại D4
=IFERROR(MID(A4,FIND("(",A4,1),1000),"")
 
Upvote 0
Text to columns. Dùng ký tự "(".
cột thứ 2, text to columns lần nữa. Dùng ký tự ")".
xoá các cột thừa.
hết

Muốn dùng code thì:
a = split(replace(chuoi,")","") & "(", "(" )
cot1 = a(0)
cot2 = a(1)
 
Upvote 0
Text to columns. Dùng ký tự "(".
cột thứ 2, text to columns lần nữa. Dùng ký tự ")".
xoá các cột thừa.
hết

Muốn dùng code thì:
a = split(replace(chuoi,")","") & "(", "(" )
cot1 = a(0)
cot2 = a(1)
Ngắn gọn thế hả bạn?. Tôi dốt nên mong bạn nói rõ hơn được không ạ?
 
Upvote 0
Tôi có thói quen chỉ mách sơ qua cho cách làm, ít khi đưa từ a đến z lắm.
Bạn chịu khó chờ người khác vậy.
 
Upvote 0
Vì cthuc dùng phiến bản Excel 2007 trở lên
Tại C4
=IF(ISERROR(LEFT(A4,FIND("(",A4,1)-1)),A4,LEFT(A4,FIND("(",A4,1)-1))
D4:
=IF(ISERROR(MID(A4,FIND("(",A4,1),1000)),"",MID(A4,FIND("(",A4,1),1000))

Code
Function Tach(chuoi As String, cot As Long) As String
Dim a
a = VBA.Split(Replace(chuoi, ")", "") & "(", "(")
Tach = a(cot)
End Function
Cú pháp
Tại C4
=tach(A4,0)
D4
=tach(A4,1)
 
Upvote 0
Thử thêm cách này
Mã:
Sub Macro1()
    Range("a4:a" & [a65000].End(3).Row).Copy [c4:d4]
    [c:c].Replace " (*", "", 2
    With [d3:d65000]
        .Replace "*(", "(", 2
        .AutoFilter 1, Criteria1:="<>*(*"
        .Offset(1).ClearContents
        .AutoFilter
    End With
End Sub
 
Upvote 0
Thất nghiệp quá nên chọt chọt cho vui
PHP:
Sub abc()
[A:A].Copy [C:D]
[C:C].Replace "(*", ""
[d:d].Replace "*(", "("
[d:d].Replace "*-*", ""
End Sub
Nặng tay chút nữa thì
PHP:
Sub abc()
Dim arr(), i, Tem, kq()
arr = Range("A4", [a65536].End(3)).Value
ReDim kq(1 To UBound(arr), 1 To 2)
For i = 1 To UBound(arr)
    Tem = Split(arr(i, 1), "(")
    If UBound(Tem) > 0 Then
        kq(i, 1) = Tem(0)
        kq(i, 2) = "(" & Tem(1)
    Else
        kq(i, 1) = arr(i, 1)
    End If
Next
[C4].Resize(i - 1, 2) = kq
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
...

Mã:
Function Tach(chuoi As String, cot As Long) As String
    Dim a
    a = VBA.Split(Replace(chuoi, ")", "") & "(", "(")
    Tach = a(cot)
End Function
Cú pháp
Tại C4
=tach(A4,0)
D4
=tach(A4,1)

Thường thì cho hàm trả về một mảng (array) sẽ linh động hơn.
Mã:
Function Tach(chuoi As String) As Variant
Tach = Split(Replace(chuoi, ")", "") & "(", "(")
End Function

Lý do tại sao tôi gọi là linh động: trong worksheet
nếu bạn muốn lấy phần tử đầu thì =Tach(...)
muốn lấy phần thử thứ nhì thì thêm hàm index: =index(Tach(...),2)
muốn lấy cả 2 phần tử một lúc thì Ctrl+Shift+enter (ghi kiểu hàm mảng)
muốn ghi theo kiểu Tch(..., 0), Tch(...,1) thì viết thêm hàm Tch(string, integer) để gọi hàm chính.
 
Upvote 0

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

Back
Top Bottom