He he - Xin lỗi Bạn Ba Tê - Tôi viết nhầm - ý tôi là : Loại bỏ 03 ký tự đầu - lấy những ký tự sau
vì chuỗi còn lại có độ dài khác nhau nên tôi muốn hỏi có cách nào cho kết quả nhanh hơn cách Bạn chỉ ở trên không ?
Caem ơn Bạn nhiều
Giả sử có người tên NGHIÊNG thì hàm của bạn thành GHIÊNG.
Hãy xem kỹ các trường hợp trước khi post bài lên nhé, thêm nữa là hàm tách tên này tràn ngập trên diễn đàn này rồi. Hay bạn muốn quảng cáo cái trung tâm kia trong file nhỉ?
Giả sử có người tên NGHIÊNG thì hàm của bạn thành GHIÊNG.
Hãy xem kỹ các trường hợp trước khi post bài lên nhé, thêm nữa là hàm tách tên này tràn ngập trên diễn đàn này rồi. Hay bạn muốn quảng cáo cái trung tâm kia trong file nhỉ?
- Bạn đừng hiểu sai ý mình, mình chỉ muốn chia sẻ thêm một cách mà chỉ cần dùng những hàm cơ bản vẫn có thể sử lý được. Với những hàm ngắn thì sẽ tích hợp mà không phải ai cũng biết.
- Hi! Với tên "Nghiêng" bạn chỉ cần thêm một chút như code dưới đây là ổn:
- Bạn đừng hiểu sai ý mình, mình chỉ muốn chia sẻ thêm một cách mà chỉ cần dùng những hàm cơ bản vẫn có thể sử lý được. Với những hàm ngắn thì sẽ tích hợp mà không phải ai cũng biết.
- Hi! Với tên "Nghiêng" bạn chỉ cần thêm một chút như code dưới đây là ổn:
- Thanks sự góp ý của bạn! mình cũng bận nhiều việc nên không có dịp tham gia diễn đàn được nhiều! ở đây mình chỉ muốn chia sẻ thêm một cách tách "Tên" mà chỉ cần dùng những hàm căn bản mà ai cũng có thể biết.
Thanks bạn!
- Thanks sự góp ý của bạn! mình cũng bận nhiều việc nên không có dịp tham gia diễn đàn được nhiều! ở đây mình chỉ muốn chia sẻ thêm một cách tách "Tên" mà chỉ cần dùng những hàm căn bản mà ai cũng có thể biết.
Thanks bạn!
He he - Xin lỗi Bạn Ba Tê - Tôi viết nhầm - ý tôi là : Loại bỏ 03 ký tự đầu - lấy những ký tự sau
vì chuỗi còn lại có độ dài khác nhau nên tôi muốn hỏi có cách nào cho kết quả nhanh hơn cách Bạn chỉ ở trên không ?
Caem ơn Bạn nhiều
Mình đang muốn tách họ, tên đệm, tên, giống hệt như text to columm nhưng chưa biết hàm nào có thể xử lý được việc này (Mình muốn nó làm tự động, nhập tên vào là tự tách ngay)
Ex:
Nguyễn Thị Lung Linh Lúng Lính sẽ được tách thành :
Nguyễn| Thị|Lung| Linh| Lúng| Lính
trong đó "|" là khoảng chia các cột
Mình đang muốn tách họ, tên đệm, tên, giống hệt như text to columm nhưng chưa biết hàm nào có thể xử lý được việc này (Mình muốn nó làm tự động, nhập tên vào là tự tách ngay)
Ex:
Nguyễn Thị Lung Linh Lúng Lính sẽ được tách thành :
Nguyễn| Thị|Lung| Linh| Lúng| Lính
trong đó "|" là khoảng chia các cột
Mình có một file nhập liệu của Phổ Cập, ở Cột Họ Tên sau khi nhập sẽ tự động tách họ tên và viết hoa đầu từ mà không lệ thuộc vào cách nhập chữ in hay chữ thường. Xin gửi đến các bạn tham khảo. File do địa phương cung cấp nên mình không biết pass VBA ngen.
Cách này chỉ áp dụng được với số từ của họ tên bằng nhau. Họ tên ít nhất 2 từ, nhiều nhất 7, 8 từ hoặc hơn. Nếu trong danh sách có một người có tên 8 từ, Excel tách ra 8 cột. Nhặt tên ra khùng luôn !
cám ơn anh em đã làm được rồi
e có thêm bài này a xem giúp em cách ghép các chuổi này nhé, bài này dùng cột phụ thì ok rùi nhưng cột phụ quá nhiều, vậy anh có thể xem giúp có cách nào rút ngắn công thức và ít cột phụ lại được không anh nhé.
trong bài này e muốn viết công thức cho ra được kết quả như tại cột F
cám ơn
Cho em hỏi cái vụ tách tên: Em tìm nảy giờ cũng hơi khá lâu nhưng chưa đưa ra được giải pháp
VD như:Chung 1 lớp có 2 học sinh Họ & Tên đều giống nhau, nên nhà trường ghi danh sách là:
Lý Thị Như Ý (A); Lý Thị Như Ý (B).
Hỏi: Khi tách tên ra là Ý (A); Ý (B), thì công thức như thế nào? Em có dùng công thức này nhưng chưa được:
Cho em hỏi cái vụ tách tên: Em tìm nảy giờ cũng hơi khá lâu nhưng chưa đưa ra được giải pháp
VD như:Chung 1 lớp có 2 học sinh Họ & Tên đều giống nhau, nên nhà trường ghi danh sách là:
Lý Thị Như Ý (A); Lý Thị Như Ý (B).
Hỏi: Khi tách tên ra là Ý (A); Ý (B), thì công thức như thế nào? Em có dùng công thức này nhưng chưa được:
và em muốn gộp Họ và Tên lại như: Lý Ý (A), thì công thức ra sao? Xin được giúp đỡ. Em chân thành cảm ơn nhiều ạ.
Tặng bạn Function đơn giản này chép vào cửa số VBA
[GPECODE=vb]
Function GhepChuoi(ByVal Vung As Range, Optional DauNoi As String) As String
With WorksheetFunction
GhepChuoi = .Trim(Join(.Transpose(Vung.Value), DauNoi))
End With
End Function
[/GPECODE]
Công thức chỉ đúng với vùng dữ liệu là 1 cột nếu 2 cột sẽ bị sai hiện tại chỉ viết theo yêu cầu của bạn
Ví dụ:
=ghepchuoi(E5:E8,",")
Bạn post nhiều bài rồi nên chú ý đừng post không đúng chủ để
Tặng bạn Function đơn giản này chép vào cửa số VBA
[GPECODE=vb]
Function GhepChuoi(ByVal Vung As Range, Optional DauNoi As String) As String
With WorksheetFunction
GhepChuoi = .Trim(Join(.Transpose(Vung.Value), DauNoi))
End With
End Function
[/GPECODE]
Công thức chỉ đúng với vùng dữ liệu là 1 cột nếu 2 cột sẽ bị sai hiện tại chỉ viết theo yêu cầu của bạn
Ví dụ:
=ghepchuoi(E5:E8,",")
Bạn post nhiều bài rồi nên chú ý đừng post không đúng chủ để
Đúng như bạn nói họ lót bị dư 1 khoảng trắng, nhưng nếu mình -1 như công thức bạn đề nghị sẽ có trường hợp bị lỗi do không có họ lót (Trường hợp Họ và Tên có 2 chữ).
Nếu Họ và Tên chỉ có 1 chữ thì hàm cũng sẽ bị lỗi.
Đúng như bạn nói họ lót bị dư 1 khoảng trắng, nhưng nếu mình -1 như công thức bạn đề nghị sẽ có trường hợp bị lỗi do không có họ lót (Trường hợp Họ và Tên có 2 chữ).
Nếu Họ và Tên chỉ có 1 chữ thì hàm cũng sẽ bị lỗi.
Anh nói rất đúng, sẽ có trường hợp người dùng không có chữ lót sẽ gây ra lỗi,
Vậy ta ta phải thay công thức như thế này, giờ nó tạm thời sẽ trông như thế này:
Công thức giờ cứ luxubu cả lên, nhìn không đẹp gì cả !!!
-> Nếu không cắt bỏ chuỗi dư thừa, sau này (nếu có) đếm số ký tự thì sẽ gặp rắc rối !
-> Nếu dùng IFERROR thì ta sẽ phiền phức trong tương lai khi kiểm tra lỗi
-> Nếu dùng ERROR.TYPE thì cũng phải lặp lại công thức như IF
... )):zz
Đã test: công thức mảng (Ctrl+Shift+Enter), nếu C2 không có gì thì xảy ra lỗi #REF, nếu có thì lấy chuỗi bên phải khoảng trắng, nếu chỉ có 1 chuỗi thì lấy chính nó. Nếu gõ công thức bình thường thì lấy nguyên chuỗi của C2. Không biết là còn lỗi gì nữa không.
Có một phương pháp khá đơn giản không cần VBA hoặc công thức quá phức tạp. Xin góp thêm để mọi người tham khảo.
Ví dụ ban đầu ta có Cột A chứa Họ và Tên. Cần tách Họ sang cột B và Tên sang cột C. Cách làm như sau:
1. Chép toàn bộ dữ liệu cột A sang cột C.
2. Sử dụng tìm và thay trong excel đối với cột C. Ở mục Find what nhập * và một khoảng trắng. Mục Replace with để trống. Chọn Replace All. Sau khi thay thế cột C giờ chỉ còn tên.
3. Lập công thức ở cột B như sau: =LEFT(A2,LEN(A2)-LEN(C2)).
Cuối cùng ta đã có hai cột B và C đã tách họ tên theo yêu cầu. Quá đơn giản phải không!
Chúc mọi người có một ngày vui.
Có một phương pháp khá đơn giản không cần VBA hoặc công thức quá phức tạp. Xin góp thêm để mọi người tham khảo.
Ví dụ ban đầu ta có Cột A chứa Họ và Tên. Cần tách Họ sang cột B và Tên sang cột C. Cách làm như sau:
1. Chép toàn bộ dữ liệu cột A sang cột C.
2. Sử dụng tìm và thay trong excel đối với cột C. Ở mục Find what nhập * và một khoảng trắng. Mục Replace with để trống. Chọn Replace All. Sau khi thay thế cột C giờ chỉ còn tên.
3. Lập công thức ở cột B như sau: =LEFT(A2,LEN(A2)-LEN(C2)).
Cuối cùng ta đã có hai cột B và C đã tách họ tên theo yêu cầu. Quá đơn giản phải không!
Chúc mọi người có một ngày vui.
Đơn giản là ta tìm text bất kỳ có ký tự trống đi kèm ngay sau nó, thay thế bằng "không ai cả". Riêng tên nằm cuối cùng không có ký tự trống đi kèm nên được giữ lại.
em có một cột chuỗi họ và tên, em đã chạy công thức tách tên từ chuỗi nhưng một vài dòng chạy còn lại thì không, những chuỗi không tách được tên em phai đánh thủ công vào thì công thức mới chạy được. anh (chị) cho em hỏi là vì sao vậy và mình làm cách nào để chạy ko bị lỗi.E cảm ơn
em có một cột chuỗi họ và tên, em đã chạy công thức tách tên từ chuỗi nhưng một vài dòng chạy còn lại thì không, những chuỗi không tách được tên em phai đánh thủ công vào thì công thức mới chạy được. anh (chị) cho em hỏi là vì sao vậy và mình làm cách nào để chạy ko bị lỗi.E cảm ơn
Thực ra trên diễn đàn nói rất nhiều về vấn đề này rồi nên bạn có thể search để tìm giải pháp khác ngắn hơn.
Riêng cách của bạn hiện tại do chuỗi từ dòng số 2 có dấu cách trống ở phía cuối chuỗi nên khi bạn thay thế ký tự cách trống cuối cùng trong chuỗi bằng ký tự * để đánh dấu thì nó lại thay thế ký tự ở cuối chuỗi nên tham số thứ 2 của right() được chỉ định bị sai là đúng rồi. Muốn khắc phục thì bạn kẹp thêm hàm trim() vào chỗ nào có B3 là được.
Mình có 1 file cần mọingưiời chỉ giáo. File gồm 2 sheet
- Sheet MA: thể hiện tên nhân viên và mã tương ứng
- Sheet NV: tại đây mình muốn
Vì 1 nhân viên sẽ làm nhiều việc nên mình mã nhân viên đó và kèm theo số thứ tự đằng sau để tách từng công việc.
Ví dụ: Nguyen Van A mã là VA và công việc sẽ lần lượt là 01, 02, 03...
Mình muốn sau khi nhập mã VA01 cột A thì bên cột B sẽ hiện tên tương ứng.
Cảm ơn cả nhà
Mình muốn các bạn giúp mình tách: họ, tên đệm, tên ra mỗi chữ một ô. Mục đích để làm từ điển Việt - Hán.
Có thể sử dụng công thức hoặc macro.
Mình gửi kèm file ví dụ
Mình muốn các bạn giúp mình tách: họ, tên đệm, tên ra mỗi chữ một ô. Mục đích để làm từ điển Việt - Hán.
Có thể sử dụng công thức hoặc macro.
Mình gửi kèm file ví dụ
Mình muốn các bạn giúp mình tách: họ, tên đệm, tên ra mỗi chữ một ô. Mục đích để làm từ điển Việt - Hán.
Có thể sử dụng công thức hoặc macro.
Mình gửi kèm file ví dụ
Bạn có thấy Data/Text to columns không?
Chọn dữ liệu rồi làm như trên, sau đó có vài bước nữa bằng tiếng Anh (chắc bạn dịch được, đơn giản thôi mà).
Cách này dùng được cho các phiên bản excel + dữ liệu vài chục đến hàng trăm Text mà không phải copy công thức.
Không biết có ai giải thích công thức này hay chưa, sẵn tiện tôi giải thích một chút theo khả năng hiểu biết của mình.
Hàm TRIM để cắt khoảng trắng thừa.
Hàm MID để tách chuỗi con trong chuỗi lớn.
Hàm SUBSTITUTE để thay thế một chuỗi ký tự nào đó cho một chuỗi ký tự có trong chuỗi.
Hàm REPT để lặp lại chuỗi ký tự với số lần nhất định.
Hàm COLUMN để lấy số cột.
Mục đích tách chuỗi theo các khoảng trắng (" "), hàm SUBSTITUTE và hàm REPT biến chuỗi "a b" thành "a " và n khoảng trắng và "b", hàm MID sẽ lấy "vừa đủ" ký tự "a" và số khoảng trắng nhất định nào đó, miễn là chưa tới "b", hàm TRIM có nhiệm vụ gọt bỏ khoảng trắng, kết quả còn lại "a". Tiếp tục, hàm COLUMN nhân với số lần tăng lên khoảng trắng khi kéo qua cột mới sẽ tăng lên một đơn vị (vị trí bắt đầu trích ký tự của hàm MID), hàm MID sẽ bắt đầu trích ở một vị trí nào đó trước "b" một ký tự và lấy n khoảng trắng phía sau, và hàm TRIM làm nhiệm vụ còn lại, gọt bỏ khoảng trắng, chỉ còn "b", ... tương tự như thế.
Tôi diễn giải như một người đang học để các bạn mới tiếp cận có thể hiểu.
Bạn có thấy Data/Text to columns không?
Chọn dữ liệu rồi làm như trên, sau đó có vài bước nữa bằng tiếng Anh (chắc bạn dịch được, đơn giản thôi mà).
Cách này dùng được cho các phiên bản excel + dữ liệu vài chục đến hàng trăm Text mà không phải copy công thức.
Bạn tự tay thử tách text ra được rồi chứ?
Cách này có thể thay cho rất nhiều các công thức khác nhau do có nhiều lựa chọn để phân tách trong Delimiters là : Tab, Semiconlon, Comma, Space, Other...
Không biết có ai giải thích công thức này hay chưa, sẵn tiện tôi giải thích một chút theo khả năng hiểu biết của mình.
Hàm TRIM để cắt khoảng trắng thừa.
Hàm MID để tách chuỗi con trong chuỗi lớn.
Hàm SUBSTITUTE để thay thế một chuỗi ký tự nào đó cho một chuỗi ký tự có trong chuỗi.
Hàm REPT để lặp lại chuỗi ký tự với số lần nhất định.
Hàm COLUMN để lấy số cột.
Mục đích tách chuỗi theo các khoảng trắng (" "), hàm SUBSTITUTE và hàm REPT biến chuỗi "a b" thành "a " và n khoảng trắng và "b", hàm MID sẽ lấy "vừa đủ" ký tự "a" và số khoảng trắng nhất định nào đó, miễn là chưa tới "b", hàm TRIM có nhiệm vụ gọt bỏ khoảng trắng, kết quả còn lại "a". Tiếp tục, hàm COLUMN nhân với số lần tăng lên khoảng trắng khi kéo qua cột mới sẽ tăng lên một đơn vị (vị trí bắt đầu trích ký tự của hàm MID), hàm MID sẽ bắt đầu trích ở một vị trí nào đó trước "b" một ký tự và lấy n khoảng trắng phía sau, và hàm TRIM làm nhiệm vụ còn lại, gọt bỏ khoảng trắng, chỉ còn "b", ... tương tự như thế.
Tôi diễn giải như một người đang học để các bạn mới tiếp cận có thể hiểu.
Cũng hơi khó hiểu. Con số 255 trong công thức của bạn có phải là số lớn nhất có thể không.
Bây giờ nếu mình chèn thêm cột giữa phần tên và phần tách từ thì kết quả thì nó bị sai đi
Cũng hơi khó hiểu. Con số 255 trong công thức của bạn có phải là số lớn nhất có thể không.
Bây giờ nếu mình chèn thêm cột giữa phần tên và phần tách từ thì kết quả thì nó bị sai đi
Bạn chú ý hàm COLUMN, khi chèn cột hàm COLUMN sẽ nhảy thêm một số, bỏ hàm COLUMN ra và thay vào số, 1, 2, 3, 4, 5 cho 5 ô chứa công thức.
Số 255 là số ký tự có thể chứa trong một ô đối với Excel 2003, số này có thể tăng lên nếu dùng Excel 2007 trở lên (tránh lỗi vượt quá số ký tự cho phép), có thể giảm xuống miễn là đừng nhỏ quá, để hàm MID chỉ cắt ở giữa khoảng trắng được chèn vào.
Khi nhập liệu vào bảng tính Excel, thông thường ta nhập cả họ và tên vào cùng một ô. Tuy nhiên, có khi sau đó ta cần phải tách riêng tên ra khỏi họ và tên đệm, nếu làm thủ công bằng thao tác sao chép rồi dán qua ô khác thì sẽ rất bất tiện. Ngoài ra có những lúc bạn phải xắp xếp lại theo thứ tự A,B,C,...
Nếu sử dụng hàm Right kết hợp với một vài hàm khác thì cũng có thể cho ra kết quả như bạn muốn, nhưng trong một số trường hợp sẽ cho kết quả không chính xác. Có một phương pháp tối ưu hơn sẽ giúp bạn hoàn thành tốt công việc này, cách thực hiện cũng khá đơn giản như sau:
- Trên bảng tính chứa cột họ tên cần tách, bạn chọn menu Tools > Macro > Visual Basic Editor, lập tức xuất hiện chương trình Microsoft Visual Basic.
- Tiếp theo, bạn nhấn menu Insert và chọn Module sẽ xuất hiện một cửa sổ soạn thảo.
Mã:
Private Function Tachten(ten As String, lg As Integer)
Dim j As Integer
Name = Trim(ten)
For j = Len(Name) To 1 Step -1
If Mid(Name, j, 1) = " " Then
If lg = "1" Then
Tachten = Right(Name, Len(Name) - j)
Else
Tachten = Left(Name, j)
End If
Exit For
End If
Next
End Function
Bạn nhập đoạn mã lệnh sau vào cửa sổ soạn thảo:
- Bạn nhấn Ctrl+S để lưu lại và quay trở về bảng tính Excel.
- Bây giờ để tiến hành tách riêng họ và tên đệm vào một ô mới, bạn đặt con trỏ tại ô mới chứa họ và tên đệm rồi nhập vào công thức =TachTen(B3,0) và nhấn Enter sẽ thấy ngay kết quả.
- Để tách riêng tên vào một ô mới, bạn đặt con trỏ tại ô sẽ chứa tên cần tách và nhập vào công thức =TachTen(B3,1) rồi nhấn Enter là xong.
Ghi chú: B3 chính là địa chỉ của ô ban đầu chứa cả họ, tên đệm và tên.
Có mấy góp ý sau :
- Bạn nên hướng dẫn mọi người cách sử dụng, hàm này có tác dụng như thế nào ??
- Việc khai báo các biến cần đầy đủ và tường minh hơn
- Dòng : CatTen = "" là thừa, biến l là thừa
- Hãy bẫy lỗi khi HoVaTen = ""
- Nếu hàm này chỉ cắt mỗi tên thôi thì e rằng . . phí quá. hãy cho cái Option để có thể lấy HỌ - TÊN ĐỆM - TÊN
- Trên GPE có các hàm như thế này rất nhiều rồi và đã tối ưu, bạn nên tham khảo nhé.
Chỉ có tách họ và tên thành họ lót và tên thôi mà phải xây dựng nguyên cả hàm vậy sao?
Mình chỉ cần dùng hàm SUBSTITUTE La duoc roi: ví dụ ô A1 có chứa họ và tên thì dùng hàm SUBSTITUTE để chèn thêm nhiều khoảng trắng vào chỗ có khoảng trắng sẵn trong họ và tên (VD: Nguyễn Văn Thanh chèn thêm vô thành Nguyễn_____________Văn____________Thanh) lúc này dùng hàm Right lấy bên phải 20 kí tự (phòng cho dư các tên dài luôn), rồi tiếp tục dùng hàm TRIM để cắt bỏ khoảng trắng dư thì ta được tên rồi, còn họ lót thì dùng LEFT lấy ra
Vậy chỉ cần gõ vào C1(cột tên)
=TRIM(RIGHT(SUBSTITUE(A1," "," "),20)
là lấy được tên Thanh
Còn Nguyễn Văn (họ lót) thì dùng công thức
=TRIM(LEFT(A1,LEN(A1)-LEN(C1)))
Thế là xong rồi!
Đơn giãn còn phức tạp hơn nhưng không sợ tên dài cỡ nào đi nữa thì dùng
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",LEN(A1))),LEN(A1)))
để lấy tên Thanh
Chỉ có tách họ và tên thành họ lót và tên thôi mà phải xây dựng nguyên cả hàm vậy sao?
Mình chỉ cần dùng hàm SUBSTITUTE La duoc roi: ví dụ ô A1 có chứa họ và tên thì dùng hàm SUBSTITUTE để chèn thêm nhiều khoảng trắng vào chỗ có khoảng trắng sẵn trong họ và tên (VD: Nguyễn Văn Thanh chèn thêm vô thành Nguyễn_____________Văn____________Thanh) lúc này dùng hàm Right lấy bên phải 20 kí tự (phòng cho dư các tên dài luôn), rồi tiếp tục dùng hàm TRIM để cắt bỏ khoảng trắng dư thì ta được tên rồi, còn họ lót thì dùng LEFT lấy ra
Vậy chỉ cần gõ vào C1(cột tên)
=TRIM(RIGHT(SUBSTITUE(A1," "," "),20)
là lấy được tên Thanh
Còn Nguyễn Văn (họ lót) thì dùng công thức
=TRIM(LEFT(A1,LEN(A1)-LEN(C1)))
Thế là xong rồi!
Đơn giãn còn phức tạp hơn nhưng không sợ tên dài cỡ nào đi nữa thì dùng
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",LEN(A1))),LEN(A1)))
để lấy tên Thanh
Không biết có ai giải thích công thức này hay chưa, sẵn tiện tôi giải thích một chút theo khả năng hiểu biết của mình.
Hàm TRIM để cắt khoảng trắng thừa.
Hàm MID để tách chuỗi con trong chuỗi lớn.
Hàm SUBSTITUTE để thay thế một chuỗi ký tự nào đó cho một chuỗi ký tự có trong chuỗi.
Hàm REPT để lặp lại chuỗi ký tự với số lần nhất định.
Hàm COLUMN để lấy số cột.
Mục đích tách chuỗi theo các khoảng trắng (" "), hàm SUBSTITUTE và hàm REPT biến chuỗi "a b" thành "a " và n khoảng trắng và "b", hàm MID sẽ lấy "vừa đủ" ký tự "a" và số khoảng trắng nhất định nào đó, miễn là chưa tới "b", hàm TRIM có nhiệm vụ gọt bỏ khoảng trắng, kết quả còn lại "a". Tiếp tục, hàm COLUMN nhân với số lần tăng lên khoảng trắng khi kéo qua cột mới sẽ tăng lên một đơn vị (vị trí bắt đầu trích ký tự của hàm MID), hàm MID sẽ bắt đầu trích ở một vị trí nào đó trước "b" một ký tự và lấy n khoảng trắng phía sau, và hàm TRIM làm nhiệm vụ còn lại, gọt bỏ khoảng trắng, chỉ còn "b", ... tương tự như thế.
Tôi diễn giải như một người đang học để các bạn mới tiếp cận có thể hiểu.
Mình cảm ơn bạn!
Đa số mình đều thấy các bạn giải thích công thức kiểu này. Nhưng mình nghĩ giải thích kiểu này chỉ dễ hiểu vs những người có nghề thôi.
Còn vs bọn mình trước khi làm đã tìm hiểu các hàm rồi, bọn mình cần giải thích cách làm ấy. Giải thích như bạn @hoankhai198 đã giải thích đấy bạn. Rất dễ hiểu. Đấy là giải thích tại sao lại làm thế. Mà thể hiện sự rất bài bản luôn.
Xin chào các anh chị! e dang muốn tìm công thức để tách chuổi số liệu trong bảng như sau:
Từ: Thành: ô1 ô2 ô3 ô4
(197)121415 197 121415
(168)121415-(77)121615 168 121415 77 121615
(154)011316-(105)012016 154 011316 105 012016
(38)121615-(165)122815 38 121615 165 122815
e muốn tách số liệu ra như vậy thì dùng công thức ra sao, mong các anh chị giúp dùm e! xin chân thành cảm ơn
Xin chào các anh chị! e dang muốn tìm công thức để tách chuổi số liệu trong bảng như sau:
Từ: Thành: ô1 ô2 ô3 ô4
(197)121415 197 121415
(168)121415-(77)121615 168 121415 77 121615
(154)011316-(105)012016 154 011316 105 012016
(38)121615-(165)122815 38 121615 165 122815
e muốn tách số liệu ra như vậy thì dùng công thức ra sao, mong các anh chị giúp dùm e! xin chân thành cảm ơn
Cảm ơn khuongvietphong rất nhiều! rất hữu ích! Cho mình hỏi thêm nếu có thêm
(118)110315-(86)110515-(48)110615
hoặc
(118)110315-(86)110515-(48)110615-(5)021516
thì công thức triển khai như thế nào? xin bạn chỉ giúp
Một lần nửa xin cảm ơn rất nhiều!
bạn nên nói rõ quy luật làm thì người ta mới có cơ sở giúp bạn được, nhìn vô yêu cầu bạn thì cũng hiểu được sơ sơ chứ chưa lường trước hết các trường hợp bạn phát sinh thêm
Bạn nêu rõ quy luật làm thì người khác mới có cơ sở giúp bạn được;
Nhìn vô yêu cầu bạn thì cũng hiểu được sơ sơ chứ chưa lường trước hết các trường hợp bạn phát sinh thêm
Chuyển chuỗi họ tên (CHT) bất kỳ thành chuỗi gồm 3 kí tự viết hoa (VH), mà trong đó:
(*) Nếu CHT chỉ có 2 từ thì thêm kí tự 'J' vô giữa
Như Võ Trữ => VJT
(*) Nếu CHT gồm hơn 3 từ thì chỉ lấy ký tự đầu tiên (VH) của từ đầu & 2 kí tự (VH) đầu tiên của 2 từ cuối
Như Ngô Ngọc Bảo Trâm => NBT
(*) Nếu Kí tự cần lấy là chữ 'Đ' thì chuyển thành 'F'
Nhằm mục đích tạo mã toàn chữ cái tiếng Anh & cũng để bớt trùng mã CHT tiếng Việt
Như Đỗ Đại Việt => FFV
(*) Các nguyên âm đầu từ cần lấy làm mã sẽ chuyển sang nguyên âm tiếng Anh tương ứng.
Như Ôn => O; Âu => A; Ửng => U,. . . . .
Nếu các bạn thấy còn trường hợp nào khác, thì đưa lên giúp tôi, để chúng ta cùng trao đổi
Chuyển chuỗi họ tên (CHT) bất kỳ thành chuỗi gồm 3 kí tự viết hoa (VH), mà trong đó:
(*) Nếu CHT chỉ có 2 từ thì thêm kí tự 'J' vô giữa
Như Võ Trữ => VJT
(*) Nếu CHT gồm hơn 3 từ thì chỉ lấy ký tự đầu tiên (VH) của từ đầu & 2 kí tự (VH) đầu tiên của 2 từ cuối
Như Ngô Ngọc Bảo Trâm => NBT
(*) Nếu Kí tự cần lấy là chữ 'Đ' thì chuyển thành 'F'
Nhằm mục đích tạo mã toàn chữ cái tiếng Anh & cũng để bớt trùng mã CHT tiếng Việt
Như Đỗ Đại Việt => FFV
(*) Các nguyên âm đầu từ cần lấy làm mã sẽ chuyển sang nguyên âm tiếng Anh tương ứng.
Như Ôn => O; Âu => A; Ửng => U,. . . . .
Nếu các bạn thấy còn trường hợp nào khác, thì đưa lên giúp tôi, để chúng ta cùng trao đổi
có trường hợp tên có 5 từ hay 6 từ thì sao
Công Tằng Tôn Nữ Cẩm Tuân
chưa kể khi mã hóa sẽ có những ký tự giống nhau nữa, sau khi mã hóa xong dò lại bằng cách nào?
có trường hợp tên có 5 từ hay 6 từ thì sao
Công Tằng Tôn Nữ Cẩm Tuân
(*) Chưa kể khi mã hóa sẽ có những ký tự giống nhau nữa, sau khi mã hóa xong dò lại bằng cách nào?
(*) Việc trùng mã sẽ có sẩy ra; khi đó ta lại thêm 2 kí tự hay kí số fía sau để phân biệt, như
Ngô Viết Toàn := NVT00 Nguyễn Thị Vũ Thư := NVT99 Nhưng trước khi thêm ta sẽ phải sắp xếp dữ liệu theo cột mã mới tạo này & kiểm tra tính chính xác của hàm tạo mã này.
(*) Việc trùng mã sẽ có sẩy ra; khi đó ta lại thêm 2 kí tự hay kí số fía sau để phân biệt, như
Ngô Viết Toàn := NVT00 Nguyễn Thị Vũ Thư := NVT99 Nhưng trước khi thêm ta sẽ phải sắp xếp dữ liệu theo cột mã mới tạo này & kiểm tra tính chính xác của hàm tạo mã này.
cái này của bạn cũng khá rõ ràng, để một số thành viên khác vào sẽ giúp bạn vì tôi không sử dụng máy tính
tôi chỉ nói cách làm
kiểm tra tên có 2 từ hay hơn
nếu có 2 từ thì thêm ký tự J
nếu có hơn 2 từ thì lấy ký tự của từ đầu và 2 ký tự của 2 từ cuối( có thể mã hóa ký tự Đ)
đưa vào DIC các ký tự mã hóa kèm theo ký số tăng theo, thứ tự từ 0 đến 99 thì sẽ tạo ra được danh sách mã theo yêu cầu của bạn
cái này của bạn cũng khá rõ ràng, để một số thành viên khác vào sẽ giúp bạn vì tôi không sử dụng máy tính
tôi chỉ nói cách làm
kiểm tra tên có 2 từ hay hơn
nếu có 2 từ thì thêm ký tự J
nếu có hơn 2 từ thì lấy ký tự của từ đầu và 2 ký tự của 2 từ cuối( có thể mã hóa ký tự Đ)
đưa vào DIC các ký tự mã hóa kèm theo ký số tăng theo, thứ tự từ 0 đến 99 thì sẽ tạo ra được danh sách mã theo yêu cầu của bạn
Cũng không biết chủ Topic dùng để làm gì, chứ nếu chỉ là việc tạo mã thì việc có 1 table tham chiếu từ mã sang tên là rất bình thường với mã số được đánh thứ tự lần lượt.
Việc tách họ tên ra tạo mã theo ý kiến cá nhân là không ổn và nhìn vào số lượng mã số lớn thì nó lổn nhổn, nhấp nhô, không đẹp.
Nếu bạn chủ Topic dùng phương pháp table mã số - họ tên với mã số theo quy luật tăng dần thì sẽ thuận tiện hơn.
Cảm ơn khuongvietphong rất nhiều! rất hữu ích! Cho mình hỏi thêm nếu có thêm
(118)110315-(86)110515-(48)110615
hoặc
(118)110315-(86)110515-(48)110615-(5)021516
thì công thức triển khai như thế nào? xin bạn chỉ giúp
Một lần nửa xin cảm ơn rất nhiều!
(*) Việc trùng mã sẽ có sẩy ra; khi đó ta lại thêm 2 kí tự hay kí số fía sau để phân biệt, như
Ngô Viết Toàn := NVT00 Nguyễn Thị Vũ Thư := NVT99 Nhưng trước khi thêm ta sẽ phải sắp xếp dữ liệu theo cột mã mới tạo này & kiểm tra tính chính xác của hàm tạo mã này.
Gởi bạn bài tham khảo. tôi viết code theo cây nhà lá vườn, các lỗi lầm bạn tự bẫy. tôi chỉ làm theo ý tưởng của bài thôi, hy vọng đúng yêu cầu của bạn
Function MATEN(HoTen As String) As String
Dim temp As String
Dim SoKhoanTrang As Byte
Dim Dem As Byte
HoTen = Trim(HoTen)
HoTen = Replace(HoTen, ChrW(272), "F")
temp = Replace(HoTen, " ", "")
SoKhoanTrang = Len(HoTen) - Len(temp)
If SoKhoanTrang = 1 Then
For i = 1 To Len(HoTen)
If (Mid(HoTen, i, 1) = " ") Then
MATEN = Mid(HoTen, i + 1, 1)
End If
Next
MATEN = Left(HoTen, 1) & "J" & MATEN
Else
For i = Len(HoTen) To 2 Step -1
If (Mid(HoTen, i, 1) = " ") Then
MATEN = Mid(HoTen, i + 1, 1) & MATEN
Dem = Dem + 1
End If
If (Dem = 2) Then Exit For
Sub MaHoa()
Dim Arr_N()
Dim Arr_D()
Dim i As Long
Dim J As Long
Dim temp As String
Dim dongcuoi as Long
Arr_N = Sheet1.Range("A1:A28")
ReDim Arr_D(1 To 28, 1 To 3)
For i = 1 To 28
temp = Arr_N(i, 1)
Arr_D(i, 1) = MATEN(temp)
Next
dongcuoi = 1
While (dongcuoi <= 28)
Dem = 0
For i = 1 To dongcuoi
If Arr_D(dongcuoi, 1) = Arr_D(i, 1) Then
Dem = Dem + 1
End If
Next
Arr_D(dongcuoi, 2) = Dem
dongcuoi = dongcuoi + 1
Wend
For i = 1 To 28
Arr_D(i, 1) = Arr_D(i, 1) & Format(Arr_D(i, 2), "00")
Next
Sheet1.Range("B1").Resize(28, 1) = Arr_D
End Sub
Nếu giữa 3 ký tự đầu và 2 ký tự "số" đằng sau có thêm dấu "-" thì có thể sẽ dễ nhìn hơn nhỉ ???
Đến ngày 8/3 đem....mực lên chơi tiếp nhé (nhớ cắt gọn ghẽ, đừng để dính như vừa rồi, "nguy hiểm" quá)
Thân
Chú Phi chưa làm cái này (công nhận code....hoành tráng thật)
Nếu giữa 3 ký tự đầu và 2 ký tự "số" đằng sau có thêm dấu "-" thì có thể sẽ dễ nhìn hơn nhỉ ???
Đến ngày 8/3 đem....mực lên chơi tiếp nhé (nhớ cắt gọn ghẽ, đừng để dính như vừa rồi, "nguy hiểm" quá)
Thân
mấy cái bỏ dấu đó để cho người ta tự làm đi thầy, mấy cái bỏ dấu đó người ta biết làm mà, 8/3 này thì hơi gấp, nhưng mà nếu thầy rảnh thì ok thôi, 90% là chắc chắn có mồi
Toán: 4.50 Ngữ văn: 2.50 Vật lí: 6.00 Hóa học: 5.20 Sinh học: 5.60 Tiếng Anh: 3.40
[TABLE="width: 56"]
[TR]
[TD="width: 56"][/TD]
[/TR]
[/TABLE]
dùng công thúc gì tách lấy điểm thi môn toán, hóa, sinh
mong các cao thủ giúp dùm e
Toán: 4.50 Ngữ văn: 2.50 Vật lí: 6.00 Hóa học: 5.20 Sinh học: 5.60 Tiếng Anh: 3.40
[TABLE="width: 56"]
[TR]
[TD="width: 56"][/TD]
[/TR]
[/TABLE]
dùng công thúc gì tách lấy điểm thi môn toán, hóa, sinh
mong các cao thủ giúp dùm e
Theo mình thì nên linh động trong cách sử dụng hàm:
- Nếu chỉ thao tác trên lượng data ít, thì chỉ cần sử dụng các hàm LEFT, RIGHT, FIND như bạn tedaynui - Còn ngược lại, nếu có một danh sách họ tên thật dài, thì nên viết macro.
Nhưng trong ô tên ví dụ có chữ HT hoặc (HT) nằm cuối cùng thì mình muốn loại bỏ các chữ đó và lấy từ cuối cùng trước chữ HT hoặc (HT) thì sửa công thức thế nào ạ?
Ví dụ ô có chứa: aa bb cc HT - muốn lấy chữ cc
aa bb cc dd (HT) - muốn lấy chữ dd
Nhưng trong ô tên ví dụ có chữ HT hoặc (HT) nằm cuối cùng thì mình muốn loại bỏ các chữ đó và lấy từ cuối cùng trước chữ HT hoặc (HT) thì sửa công thức thế nào ạ?
Ví dụ ô có chứa: aa bb cc HT - muốn lấy chữ cc
aa bb cc dd (HT) - muốn lấy chữ dd