Hiển thị ký tự trong một chuỗi

Liên hệ QC

VNMan

Thành viên mới
Tham gia
11/8/10
Bài viết
6
Được thích
0
Điểm
0
Ví dụ: Tại ô A1 có 5 ký tự là ABCDE, em muốn hiển thị ký tự E ở ô A2 với điều kiện là trước ký tự E phải là ký tự D còn nêu không phải trước ký tự E là D thì trả lại giá trị là khoảng trắng thì làm như thế nào ạ?
Mong các anh chị chỉ giúp
 
Dùng công thức này cũng được

=IF(MID(A1,4,1)="D",MID(A1,5,1)," ")
 
Cảm ơn bác sealand nhiều. Bây giờ tôi có khoảng 20 ô chuỗi ký tự. Muốn hiển thị tất các các ký tự đằng sau ký tự D thì làm như thế nào để dùng hàm ngắn nhất? Ví dụ: Ô B2 là HJDF, ô C2 là TEDG, ô D2 là KUDK, muốn hiển thị các ký tự F,G,K vào cùng một ô A2 với ký tự F ở trên
 
Vậy thì bạn nên viết 1 hàm nho nhỏ như sau sẽ gọn hơn công thức vì nó sử lý bao nhiêu ô tuỳ bạn

Mã:
Function Chon(Rg As Range)
Dim cl As Range, tam
For Each cl In Rg
tam = Split(cl, "D")
Chon = Chon & tam(1)
Next
End Function
Công thức là =Chon(A1:A20)
Bạn tham khảo trong file nha
 

File đính kèm

  • Cat ghep chuoi.xls
    22.5 KB · Đọc: 27
Mình đã làm theo cách của bạn nhưng bây giờ còn một vấn đề làm làm sao có thể tách các ký tự đó ra cách nhau bởi dấu phẩy nữa. Làm ơn chỉ giúp
Cảm ơn bạn
 
Mình đã làm theo cách của bạn nhưng bây giờ còn một vấn đề làm làm sao có thể tách các ký tự đó ra cách nhau bởi dấu phẩy nữa. Làm ơn chỉ giúp
Cảm ơn bạn

Thì sửa lại một chút thôi,
Xem file
 

File đính kèm

  • Catghepchuoi(1).xls
    31 KB · Đọc: 19
Mình vừa thử nhưng còn 1 chỗ còn thiếu nữa là chuỗi ký tự có 2 ký tự D đằng cuối của chuỗi ví dụ như HKDD thì không hiện ký tự D. Mình nghĩ chắc thiếu một điều kiện gì đó mà chưa hiểu được. Các bạn giúp mình nốt nhé
 
Mình vừa thử nhưng còn 1 chỗ còn thiếu nữa là chuỗi ký tự có 2 ký tự D đằng cuối của chuỗi ví dụ như HKDD thì không hiện ký tự D. Mình nghĩ chắc thiếu một điều kiện gì đó mà chưa hiểu được. Các bạn giúp mình nốt nhé
Thật ra bạn phải cho biết tất cả các kiểu dữ liệu của bạn để viết một lần khỏi sửa, còn nếu dữ liệu đúng như thế này, muốn lấy chữ D sau D bạn có thể sử dụng code sau:
Mã:
Function Chon(Rg As Range)
    Dim Cll, I, Tam
        For Each Cll In Rg
            I = InStr(1, Cll, "D")
            Tam = Tam & ", " & Mid(Cll, I + 1, 1)
        Next
    Chon = Right(Tam, Len(Tam) - 2)
End Function
Thân
 
Thật ra bạn phải cho biết tất cả các kiểu dữ liệu của bạn để viết một lần khỏi sửa, còn nếu dữ liệu đúng như thế này, muốn lấy chữ D sau D bạn có thể sử dụng code sau:
Mã:
Function Chon(Rg As Range)
    Dim Cll, I, Tam
        For Each Cll In Rg
            I = InStr(1, Cll, "D")
            Tam = Tam & ", " & Mid(Cll, I + 1, 1)
        Next
    Chon = Right(Tam, Len(Tam) - 2)
End Function
Thân

Tác giả cần lấy sau chữ "D" cuối cùng, vạy Code concogia dễ dính chưởng trong chuỗi có 2 chữ "D" (Bài #7). Theo mình thế này an toàn nhất, nếu không có "D" cũng bỏ qua luôn

Mã:
Function Chon(Rg As Range)
Dim cl As Range, tam
For Each cl In Rg
If InStr(1, cl, "D") > 0 Then
tam = Split(cl, "D")
Chon = Chon & tam(UBound(tam))
End If
Next
End Function
 
Lần chỉnh sửa cuối:
Cái vd bạn đưa ra cũng chưa được rõ ràng
1) thứ 1 là bạn chỉ cần lấy 1 kí tự sau kí tự D hay lấy cả chuỗi sau kí tự D (vd: ABCDEF => lấy E hay EF?)
2) ý bạn nói nếu trong chuỗi có 2 kí tự D thì không lấy có vẻ không hợp lí với đk 1 của bạn (VD: DABDC => bỏ qua hay lấy kí tự C cuối cùng)

Vậy cần bạn xem lại và cho biết ý muốn thật sự của bạn là như thế nào, từ đó mình sẽ viết hàm xử lý giúp bạn
 
Mình gửi file, các bạn xem nhé
Mình muốn chỉ hiện thị ký tự đằng sau ký tự D ở vị trí n-1 (n là độ dài của chuỗi số) còn các ký tự D khác ở trong chuỗi số mà không phải là ký tự D ở vị trí n - 1 thì bỏ qua.
Nếu vị trí thứ n trong chuỗi số là ký tự D thì cũng hiện ra
Các ký tự trong chuỗi hiện ra và cách nhau bởi dấu phẩy

Cảm ơn các bạn
 

File đính kèm

  • CHUOISO.xlsx
    10.6 KB · Đọc: 9
Lần chỉnh sửa cuối:
Nếu vậy code của mình hiệu chính 1 chút để lấy chữ "D" nếu là chữ D cuối cùng

Mã:
Function Chon(Rg As Range)
Dim cl As Range, tam
For Each cl In Rg
If InStr(1, cl, "D") > 0 Then
If Right(cl, 1) = "D" Then
Chon = Chon & "D"
Else
tam = Split(cl, "D")
Chon = Chon & tam(UBound(tam))
End If
End If
Next
End Function
 
Nếu vậy code của mình hiệu chính 1 chút để lấy chữ "D" nếu là chữ D cuối cùng

Mã:
Function Chon(Rg As Range)
Dim cl As Range, tam
For Each cl In Rg
If InStr(1, cl, "D") > 0 Then
If Right(cl, 1) = "D" Then
Chon = Chon & "D"
Else
tam = Split(cl, "D")
Chon = Chon & tam(UBound(tam))
End If
End If
Next
End Function
Tôi thấy yêu cầu đơn giản thôi mà bạn xử lý phức tạp vậy, cứ theo như mô tả của yêu cầu, nếu ký tự thứ n-1 = "D" thì ta lấy ký tự thứ n, vì yêu cầu xét ký tự thứ n-1 nên chỉ cần biện luận chuỗi phải có độ dài >1 là xong.
 
Mình gửi file, các bạn xem nhé
Mình muốn chỉ hiện thị ký tự đằng sau ký tự D ở vị trí n-1 (n là độ dài của chuỗi số) còn các ký tự D khác ở trong chuỗi số mà không phải là ký tự D ở vị trí n - 1 thì bỏ qua.
Nếu vị trí thứ n trong chuỗi số là ký tự D thì cũng hiện ra
Các ký tự trong chuỗi hiện ra và cách nhau bởi dấu phẩy

Cảm ơn các bạn
Đưa ngay từ đầu đi đỡ cực không
Mã:
Public Function cat(Vung As Range) As String
    Dim Cll, tam
    On Error Resume Next
        For Each Cll In Vung
            If Mid(Cll, Len(Cll) - 1, 1) <> "D" Then
                tam = tam
            Else
                tam = tam & ", " & Right(Cll, 1)
            End If
        Next
    cat = Right(tam, Len(tam) - 2)
End Function
Cú pháp: =cat(A4:E10)
 
Cảm ơn các bạn rất nhiều. Nếu bạn nào có thêm cách khách nữa thì cho mình nghiên cứu thêm nữa nhé
 
Web KT
Back
Top Bottom