Tách ký tự chữ lẫn trong ký tự số bằng hàm

Liên hệ QC
Mọi người làm ơn cho mình hỏi, trong các hàm của excel có hàm nào để biết trong một chuỗi có chữ hay không?
Mình có 2 cột A và B, kết quả mình muốn là nếu trong ô A có chữ thì ô C = B & ký tự đầu của ô A, nếu chỉ có số thì C = B
 

File đính kèm

  • kiem tra chu trong chuoi.xls
    30 KB · Đọc: 14
Mọi người làm ơn cho mình hỏi, trong các hàm của excel có hàm nào để biết trong một chuỗi có chữ hay không?
Mình có 2 cột A và B, kết quả mình muốn là nếu trong ô A có chữ thì ô C = B & ký tự đầu của ô A, nếu chỉ có số thì C = B
Thử vầy xem đúng ý chưa nhen!
Mã:
C2=B2&IF(ISERR(--A2),LEFT(A2),"")
Hoặc:
C2=B2&LEFT(IFERROR(T(A2*0),A2))
Enter, rồi fill xuống.
hihi ^o^
 
Lần chỉnh sửa cuối:
Thử vầy xem đúng ý chưa nhen!
Mã:
C2=B2&IF(ISERR(--A2),LEFT(A2),"")
Hoặc:
C2=B2&LEFT(IFERROR(T(A2*0),A2))
Enter, rồi fill xuống.
hihi ^o^
Cám ơn bạn rất nhiều, mình muốn hỏi thêm bạn là --A2 là công thức gì bạn mình chưa gặp công thức kiểu này bao giờ
Chỉ hiểu là nếu là số thì kết quả là số nếu có chữ thì kết quả là #VALUE!
 
Cám ơn bạn rất nhiều, mình muốn hỏi thêm bạn là --A2 là công thức gì bạn mình chưa gặp công thức kiểu này bao giờ
Chỉ hiểu là nếu là số thì kết quả là số nếu có chữ thì kết quả là #VALUE!
Như cách giải thích của anh @befaint ở trên cũng là một cách dễ hiểu. /-*+//-*+//-*+/

--A2 là cách "ép" một chuỗi dạng số về số thực:
Ví dụ: chuỗi A1='123, nên khi --A1 sẽ thành số 123
Nhưng nếu chuỗi không phải là dạng số như "a123" thì khi "ép" với -- nó sẽ báo lỗi #VALUE!

Các cách khác tương tự như: A1+0 hay A1*1 hay A1/1 cũng "ép" một chuỗi dạng số về số thực.

hihi ^o^
 
Chào thầy.
Em nhờ thầy giúp tách số ra từ chuỗi theo yêu cầu. Code VBA.
File đính kèm.
Em rất cám ơn thầy.
 

File đính kèm

  • TBKM SO 02-TEST.xlsx
    222.6 KB · Đọc: 16
Chào thầy.
Em nhờ thầy giúp tách số ra từ chuỗi theo yêu cầu. Code VBA.
File đính kèm.
Em rất cám ơn thầy.
Bạn thử code này xem!!!
PHP:
Function joinn(str As String) As String
If IsNumeric(str) Then Exit Function
Dim item As Object
With CreateObject("vbscript.regexp")
    .Global = True: .Pattern = "\d{7}"
    For Each item In .Execute(str)
        joinn = joinn & IIf(joinn = "", "", "-") & item
    Next
End With
End Function
 
Bạn thử code này xem!!!
PHP:
Function joinn(str As String) As String
If IsNumeric(str) Then Exit Function
Dim item As Object
With CreateObject("vbscript.regexp")
    .Global = True: .Pattern = "\d{7}"
    For Each item In .Execute(str)
        joinn = joinn & IIf(joinn = "", "", "-") & item
    Next
End With
End Function
T
Bài đã được tự động gộp:

Cám ơn bạn excel lv1.5
Để mình thử xem.
Thank
Bài đã được tự động gộp:

Nhờ bạn giải thích dùm code này.
Mình gà VBA lắm.
Nhưng thấy VBA rất hay và hữu ích.
Cám ơn bạn excel lv1.5 nhiều.
 
Lần chỉnh sửa cuối:
T
Bài đã được tự động gộp:

Cám ơn bạn excel lv1.5
Để mình thử xem.
Thank
Bài đã được tự động gộp:

Nhờ bạn giải thích dùm code này.
Mình gà VBA lắm.
Nhưng thấy VBA rất hay và hữu ích.
Cám ơn bạn excel lv1.5 nhiều.
VBA thật sự tôi không biết giải thích sao, bạn thấy được thì cứ sài thôi!!
 
T
Bài đã được tự động gộp:

Cám ơn bạn excel lv1.5
Để mình thử xem.
Thank
Bài đã được tự động gộp:

Nhờ bạn giải thích dùm code này.
Mình gà VBA lắm.
Nhưng thấy VBA rất hay và hữu ích.
Cám ơn bạn excel lv1.5 nhiều.
Bài đã được tự động gộp:

Code bạn viết rất hay và chạy đúng nhu cầu.
Cám ơn bạn nhiều.
Nhưng còn 1 ý là tại các ô có merge cell thì Function chưa hiểu.
Bạn có cách nào khắc phục được giúp mình luôn ko vậy?
Lưu ý: các ô có merge cell là có cùng mã hoặc hàng KM nên có thể lấy từ dòng merge đầu làm dữ kiện cho các ô sau.
Nhờ bạn giúp dùm.
Cám ơn rất nhiều.
 
Bài đã được tự động gộp:

Code bạn viết rất hay và chạy đúng nhu cầu.
Cám ơn bạn nhiều.
Nhưng còn 1 ý là tại các ô có merge cell thì Function chưa hiểu.
Bạn có cách nào khắc phục được giúp mình luôn ko vậy?
Lưu ý: các ô có merge cell là có cùng mã hoặc hàng KM nên có thể lấy từ dòng merge đầu làm dữ kiện cho các ô sau.
Nhờ bạn giúp dùm.
Cám ơn rất nhiều.
Không cần chỉnh code đâu bạn, bạn dùng công thức này ở ô T10:
Mã:
T10=IFERROR(joinn(LOOKUP("zzzz",$K$10:K10)),"")
Rồi copy xuống!!!
 
Không cần chỉnh code đâu bạn, bạn dùng công thức này ở ô T10:
Mã:
T10=IFERROR(joinn(LOOKUP("zzzz",$K$10:K10)),"")
Rồi copy xuống!!!
Bài đã được tự động gộp:

Vẫn còn lỗi do ô trống lại có dữ liệu?
File đính kèm.
Bạn xem lại giúp.
Cám ơn
 

File đính kèm

  • TBKM SO 02-TEST.xlsx
    223.5 KB · Đọc: 7
Bài đã được tự động gộp:

Vẫn còn lỗi do ô trống lại có dữ liệu?
File đính kèm.
Bạn xem lại giúp.
Cám ơn
Bạn sửa code lại như vầy:
PHP:
Function joinn(cell As Range) As String
If IsNumeric(cell) And cell.MergeCells = False Then Exit Function
With CreateObject("vbscript.regexp")
    .Global = True: .Pattern = "\d{7}"
    For Each item In .Execute(cell.MergeArea(1, 1))
        joinn = joinn & IIf(joinn = "", "", "-") & item
    Next
End With
End Function
 
Bạn sửa code lại như vầy:
PHP:
Function joinn(cell As Range) As String
If IsNumeric(cell) And cell.MergeCells = False Then Exit Function
With CreateObject("vbscript.regexp")
    .Global = True: .Pattern = "\d{7}"
    For Each item In .Execute(cell.MergeArea(1, 1))
        joinn = joinn & IIf(joinn = "", "", "-") & item
    Next
End With
End Function
Bài đã được tự động gộp:

Function chạy quá ok.
Đáp ứng 100% nhu cầu người dùng.
Cám ơn bạn excel_lv1.5 nhiều lắm.
Ko biết bạn ở đâu vậy?
Mình ở TP.HCM
 
Xin mấy thầy giúp đở , làm sao để lưu code random line này vào file excel khi cần mở ra sài ạ
đây là đoạn code em tìm trên google
 

File đính kèm

  • random_line.txt
    2.2 KB · Đọc: 5
Các cao nhân giúp em cái tách số này với , chỉ cần lấy cái số sau chữ VAT Amt như ở mục C4 ạ ! e cám ơn các bác !
 

File đính kèm

  • Z.xlsx
    10.3 KB · Đọc: 13
Nếu gửi cho đối tác, vd. là tôi, thì sẽ có thể kết quả sai. Cái nguy hiểm nhất không phải là là kết quả sai mà là vẫn có kết quả nên đối tác sẽ không biết, không ý thức được là sai.

Còn nếu một mình trong vũ trụ, ta làm ta hưởng thì thế nào cũng được.

Trên máy tôi:12.JPG
 
Nếu gửi cho đối tác, vd. là tôi, thì sẽ có thể kết quả sai. Cái nguy hiểm nhất không phải là là kết quả sai mà là vẫn có kết quả nên đối tác sẽ không biết, không ý thức được là sai.

Còn nếu một mình trong vũ trụ, ta làm ta hưởng thì thế nào cũng được.

Trên máy tôi:View attachment 205594
Đúng là máy em đang để phân cách hàng nghìn là dấu "." thì sẽ bị sai.
Em thử dùng công thức này thì đúng, hi vọng sẽ đúng cho được nhiều trường hợp
Mã:
C4=--SUBSTITUTE(MID(B4;SEARCH("VAT Amt:";B4)+8;SEARCH(".00";B4;SEARCH("VAT Amt:";B4))-SEARCH("VAT Amt:";B4)-8);",";"")
 
Web KT
Back
Top Bottom