hamhochoi66
Thành viên chính thức


- Tham gia
- 17/4/12
- Bài viết
- 85
- Được thích
- -6
- Giới tính
- Nam
Function tachmau(workCell As Range)Em chào anh chị em GPE,
Nhờ anh chị viết dùm code VBA để tách chuỗi có tô màu ra khỏi 1 chuỗi lớn như hình:
View attachment 296918
Xin chân thành cảm ơn các anh chị em !
Option Explicit
Function maume(cell As Range) As String
Dim i&, st As String
For i = 1 To Len(cell)
If cell.Characters(i, 1).Font.Color = vbRed Then
st = IIf(st = "", "", st) & cell.Characters(i, 1).Text
End If
Next
maume = st
Application.Caller.Font.Color = vbRed
End Function
Anh ơi, có 1 vấn đề như thế này xử lý sao anh:Dùng hàm UDF nàynhé bạn
Mã:Option Explicit Function maume(cell As Range) As String Dim i&, st As String For i = 1 To Len(cell) If cell.Characters(i, 1).Font.Color = vbRed Then st = IIf(st = "", "", st) & cell.Characters(i, 1).Text End If Next maume = st Application.Caller.Font.Color = vbRed End Function
View attachment 296921
OK, thử lại nhé: ...Anh ơi, có 1 vấn đề như thế này xử lý sao anh:
Dòng 6, ban đâu chuỗi ABC, sau đó em vào ô A6 bôi đỏ thêm chữ "Văn" thì B6 cập nhật lại công thức nhưng bị dính lại không có khoảng cách. Anh giúp em với!
Option Explicit
Function maume(cell As Range) As String
Dim i&, st As String
For i = 1 To Len(cell)
With cell.Characters(i, 1)
If .Font.Color = vbRed Or .Text = " " Then
st = IIf(st = "", "", st) & .Text
End If
End With
Next
maume = Replace(st, " ", " ")
Application.Caller.Font.Color = vbRed
End Function
Em thấy cái đầu tiên ổn hơn á anh, cái sau của anh nó thêm khoảng trắng trước sau như hình:OK, thử lại nhé: ...
Mã:Option Explicit Function maume(cell As Range) As String Dim i&, st As String For i = 1 To Len(cell) With cell.Characters(i, 1) If .Font.Color = vbRed Or .Text = " " Then st = IIf(st = "", "", st) & .Text End If End With Next maume = Replace(st, " ", " ") Application.Caller.Font.Color = vbRed End Function
maume = Replace(st, " ", " ")
maume = Trim(Replace(st, " ", " "))
Cho em hỏi xíu. Nếu mình muốn kết quả vẫn giữ màu chữ trước khi tách thì làm như nào ạ? Em cảm ơn.Cái này:
bổ sung thêm hàm TRIM:Mã:maume = Replace(st, " ", " ")
Dễ mà, không biết VBA vẫn làm được.Mã:maume = Trim(Replace(st, " ", " "))