Đăng ký học Excel và VBA cùng GPE tháng 11 - TPHCM

Đăng ký học Excel và phân tích số liệu cùng GPE tháng 12 - TPHCM

Mua sách "VBA trong Excel - Cải thiện và tăng tốc" tái bản

Chèn thêm ký tự vào đầu hoặc cuối cell

Thảo luận trong 'Xử lý chuỗi ký tự' bắt đầu bởi ExQues, 20 Tháng chín 2009.

  1. ExQues

    ExQues Thành viên mới

    Các bạn chỉ giúp giùm cách chèn thêm 1 ký tự vào đầu hoặc cuối cell.

    Ví dụ: Trong cell đã có chữ ABC, chèn thêm vào ký tự đầu và cuối thành TABCM.

    Trong cùng 1 cột nên mỗi cell có mỗi chữ khác nhau, dù cho có chữ gì thì vẫn cứ chèn đầu và cuối.

    Xin cám ơn anh chị
     
  2. thanhxt2009

    thanhxt2009 Thành viên thường trực

    Bạn có thể sử dụng hàm nối chuổi hoặc VBA.
    Bạn gởi kèm file lên với câu hỏi rõ ràng hơn nhá, mình chưa hiểu ý bạn lắm.
    À! mà thêm vào đầu và cuối trong cell chữ gì cũng được hay là hai ký tự "T" ở đầu và "M" ở cuối.
    Thân chào!
     
  3. BNTT

    BNTT Bùi Nguyễn Triệu Tường

    Ô A1 đang chứa chữ ABC
    Ô B1 gõ công thức: ="T" & A1 & "M"
    Copy công thức xuống dưới.
     
  4. thanhxt2009

    thanhxt2009 Thành viên thường trực

    Sẳn đây cho mình hỏi tí?
    Giả sử nếu hai chữ đầu và cuối không phải là "T" và "M" thì mình phải dùng code VBA phải không hay là dùng công thức?
    Nếu dùng VBA thì mình làm thế nào?
    Vì mình rất dốt lĩnh vực này!
     
  5. ptlong04x1

    ptlong04x1 Thành viên tích cực

    Tại sao phải dùng VBA, nếu là 2 chữ khác thì cũng làm vậy thôi.
     
  6. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Dùng VBA thì cũng y chang bạn gõ công thức thôi
    Sub Test()
    Dim Clls As Range
    For Each Clls In Range(".. gì gì đó...") '<--- Vùng mà bạn cần thay thế
    Clls = "T" & Clls & "M"
    Next
    End Sub

    Vậy thôi
     
  7. thanhxt2009

    thanhxt2009 Thành viên thường trực

    ý mình là nếu dữ liệu như thế này!
    Column1
    A1
    TabcM
    TghhffN
    HdfsF
    ...
    Nếu vậy sử dụng hàm thế nào?
    Mình bó tay!!!
     
  8. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Chưa hiểu lắm ---> Bạn phải nêu rõ quy luật chứ?
     
  9. thanhxt2009

    thanhxt2009 Thành viên thường trực

    Quy luật thế này:
    Nếu dữ liệu gõ vào ở dạng số (123) thì thêm đầu cuối là "T" và "M"
    Nếu dữ liệu gõ vào ở dạng chữ (abc) thì thêm vào đầu cuối là "T" và "N"
    Nếu dữ liệu gõ vào ở dạng hỗn hợp (ab1) thì thêm vào đầu cuối là "H" và "F"
    Điều này có thể làm được không bạn?
    Xin chỉ giáo!
     
  10. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Thuật toán của tôi là:
    - 1 vòng lập quét qua các cell
    - Thêm 1 vòng lập từ 0 đến 9 ---> Dùng hàm Replace thay thế lần lượt các số từ 0 đến 9 vào các cell
    - Xét kết quả cuối cùng:
    - Nếu Len(Kết quả) = Len(Cell) ---> cell này chứa toàn chữ
    - Nếu Len(kết quả) = 0 ---> Cell này chứa toàn số
    - trường hợp còn lại là HỔN HỢP
    PHP:
    Sub Test()
      
    Dim Clls As RangeTemp As StringAs Long
      
    For Each Clls In Range("A1:A16")
        
    Temp Clls
        
    For 0 To 9
          Temp 
    Replace(Tempi"")
        
    Next i
        
    If Len(Temp) = 0 Then
          Clls 
    "T" Clls "M"
        
    ElseIf Len(Temp) = Len(CllsThen
          Clls 
    "T" Clls "N"
        
    Else
          
    Clls "H" Clls "F"
        
    End If
      
    Next Clls
    End Sub
    '
    Với dử liệu nhập nằm tại vùng A1:A16
    Đại khái thế ---> Bạn có thể cải tiến thêm
     
  11. ChanhTQ@

    ChanhTQ@ Thành viên già cỗi.

    Thêm 1 tham khảo nè!

    PHP:
    Sub Module1()
     Const 
    StrC As String "1234567890"
     
    Dim Clls As RangeDai As BytejJ As Byte
     
    For Each Clls In Range([J1], [J65500].End(xlUp))
       If 
    IsNumeric(Clls.Value) And Clls.Value <> "" Then
          Clls
    .Value "T" Clls.Value "M"
       
    ElseIf Len(Clls.Value) > 0 Then
          
    For jJ 1 To 10
             
    If InStr(Clls.ValueMid(StrCjJ1)) > 0 Then
                Clls
    .Value "H" Clls.Value "F"
                
    Exit For
             
    End If
          
    Next jJ
          
    If jJ 10 Then Clls.Value "T" Clls.Value "N"
       
    End If
     
    Next Clls
    End Sub
     
    Lần chỉnh sửa cuối: 20 Tháng chín 2009
  12. ptlong04x1

    ptlong04x1 Thành viên tích cực

    Hàm tự tạo.

    Mình góp thêm 1 hàm tự tạo :

    PHP:
    Function Add(Cll As Range) As String
        Dim i 
    As IntegerAs Integerkq As String
        
    For 1 To Len(Cll)
            If 
    Mid(Clli1Like "[0-9]" Then j 1
        Next i
        
    If 0 Then
            kq 
    "T" Cll "N"
        
    ElseIf Len(Cll.TextThen kq "T" Cll "M"
        
    Else: kq "H" Cll "F"
        
    End If
        If 
    Cll "" Then kq ""
        
    Add kq
    End 
    Function
     

    Các file đính kèm:

    • Add.xls
      Kích thước:
      24.5 KB
      Đọc:
      83
    Lần chỉnh sửa cuối: 21 Tháng chín 2009
  13. tranvanhung2009

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

    Chào các anh.
    Em có dữ liệu cột B, trong trường hợp nếu cột B có ô cell chứa kí tự "C" Ví dụ C1256 thì thêm thêm chữ TP vào đằng sau là : C1256TP còn các trường hợp khác thì để nguyên không thêm kí tự vào.
    mong các anh giúp em tạo 1 vba thì càng tốt ạ, Em xin chân thành cám ơn
     
  14. Ngoai Thanh

    Ngoai Thanh Cánh Diều xanh

    Thì tạm thế này thôi .
     

    Các file đính kèm:

  15. Vu Dinh Duy

    Vu Dinh Duy Thành viên hoạt động

    Mình dùng thử công thức mảng:
    =IF(A1="","",IF(SUM(IF(ISNUMBER(--MID(A1,ROW($1:$256),1)),1))=0,"T"&A1&"N",IF(SUM(IF(ISNUMBER(--MID(A1,ROW($1:$256),1)),1))=LEN(A1),"T"&A1&"M","H"&A1&"F")))
    Bạn nhấn CtrL + Shift + Enter
     
  16. tranvanhung2009

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


    Anh ơi, ý em là chèn luôn vào vị trị ở cột B luôn anh ạ
     
  17. gtri

    gtri Thành viên tích cực

    Bạn thử đoạn code này xem sao. Dữ liệu tại sheet1 cột B
    PHP:
    Public Sub THEMKYTU()
    Dim i As Long
    For 1 To Sheet1.Range("B65000").End(xlUp).Row
    If InStr(1Sheet1.Range("B" i), "C"1Then
    Sheet1
    .Range("B" i) = Sheet1.Range("B" i) & "TP"
    End If
    Next i
    End Sub
    Làm thế này là sẽ thay đổi hoàn tòan dữ liệu gốc của cột B đó bạn.
     
  18. tranvanhung2009

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

    Hay quá, đúng ý em cần rồi. Cám ơn bác nhá.
    Bác cho em hỏi tý nữa nhé: Giả sử các ô khi mình kích lệnh THEMKYTU nó chạy ra CxxxxTP,
    sau đó em lại kích lệnh lần nữa nó ra CxxxxTPTP, có cách nào mà khi mình ấn lệnh lần 2 hoặc lần thứ n mà nó vẫn ra kết quả là CxxxxTP không bác.
     
  19. quanghai1969

    quanghai1969 Thành viên gạo cội

    PHP:
    Sub QH()
    Dim i As Longdata()
    data Range([B1], [B65536].End(3)).Value
    For 1 To UBound(data)
       If 
    Left(data(i1), 1) = "C" Then
          
    If Right(data(i1), 2) <> "TP" Then
             data
    (i1) = data(i1) & "TP"
          
    End If
       
    End If
    Next
    [B1].Resize(11) = data
    End Sub
     
  20. tranvanhung2009

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

    Cám ơn anh nhiều lắm.
    Code anh viết chạy rất nhanh và tốc độ.
    Anh ơi, giả sử bài toán của mình là có 2 chế độ, 1 là thêm chữ TP vào toàn bộ các ô có chữ C ở cột B, và 2 là cần thêm chữ TP vào những dòng mà mình chọn thì có làm được không anh. Ví dụ như em muốn chọn dòng 15, 20,. ... hay bất kỳ dòng nào khác.
     

Chia sẻ trang này