Sao chép một phần số sang cột khác trong Excel
Kính gửi các thành viên cộng đồng:
Tôi muốn sao chép một phần mã của mình sang một cột khác trong bảng tính bằng cách áp dụng công thức như sau:
- 35DI060050
- 38DAHH070080
- 28BALL050060
Vậy từ đoạn mã trên, tôi muốn sao chép sang cột tiếp theo:
- 35DI 06 0050 -----> 06
- 38DAHH 07 0080-----> 07
- 28BALL 05 0060 -----> 05
Có ai có thể giúp tôi không?
Trả lời:
Tuyệt vời! Tôi rất vui vì cách đó hiệu quả! Nếu bạn không còn câu hỏi nào nữa, hãy thoải mái chọn xếp hạng và chúc bạn một ngày tốt lành!
Không có video hướng dẫn nhưng bạn nên tìm hiểu về công thức mảng. Tốt nhất là học từ kênh YouTube của Mike Girvin về Excel.
Trả lời:
Chào Ali
Dưới đây là thêm 2 cách để giải quyết câu hỏi của bạn.
TRƯỜNG HỢP 1:
Tạo một hàm UDF trong Excel như sau:
Hàm công khai GetMyNumber(addr As String)
Dim allMatches As Object
Dim RE As Object
Đặt RE = CreateObject("vbscript.regexp")
Biểu thức chính quy này sẽ khớp với mẫu
''' Bất kỳ chữ số nào + bất kỳ chữ cái viết hoa nào + 2 chữ số
RE.Pattern = "(\d{1,}?[AZ]{1,}\d{2})"
RE.Global = True
RE.IgnoreCase = True
Đặt allMatches = RE.Execute(addr)
Nếu (allMatches.Count <> 0) thì
kết quả = allMatches.Item(0).submatches.Item(0)
Kết thúc nếu
"Khi đã tìm ra được quy luật với hàm số phù hợp thì sẽ thành công."
'' trích xuất hai chữ số bạn cần
GetMyNumber = Right(result, 2)
Kết thúc hàm
Ghi chú:
*Bạn cần kiểm tra trong bảng VBA, chọn Công cụ\Tham chiếu\tìm và nhấp vào Biểu thức chính quy Microsoft VBscript*** như hình bên dưới
Đây là kết quả khi nhập công thức =GetMyNumber(A#) vào cột B.
TRƯỜNG HỢP 2
Với một macro như thế này
***************************************************************************
Sub GetMyNumberTwo()
Dim i As Integer 'Để đếm số ký tự trong một ô
Dim rng As Range 'Đối tượng Range để lặp qua tất cả các ô trong phạm vi đã chọn
Dim LetterChar As Variant 'Ký tự được so sánh'
Dim DigitChar1 As Variant 'Chữ số đầu tiên'
Dim DigitChar2 As Variant 'Chữ số thứ 2'
Dim MyNumber As String
'Vòng lặp cho từng ô trong vùng chọn của người dùng
Đối với mỗi rng trong lựa chọn
X = rng.Row
Đối với i = 1 Đến Len(rng)
LetterChar = Mid(rng, i, 1)
DigitChar1 = Mid(rng, i + 1, 1)
DigitChar2 = Mid(rng, i + 2, 1)
Nếu IsNumeric(DigitChar1) = True Và IsNumeric(DigitChar2) = True Thì
'''Các dòng mã này sẽ được in đậm và tô màu đỏ.''
'' khớp các chữ số trong chuỗi
Với rng.Characters(Start:=i + 1, Length:=2).Font
.FontStyle = "In đậm"
.Color = -16777024
Kết thúc bằng
"Các dòng này lấy số và nhập giá trị vào cột tiếp theo."
MyNumber = DigitChar1 & DigitChar2
rng.Offset(0, 1).Value = MyNumber
Chuyển đến chuỗi tiếp theo
Kết thúc nếu
Tiếp theo tôi
Chuỗi tiếp theo:
Tiếp theo rng
End Sub
>**********************************************************************************************
Ghi chú:
*Bạn phải chọn ô hoặc phạm vi ô mà bạn muốn lấy số liệu, sau đó chạy macro.
**Macro này sẽ in đậm và tô màu ĐỎ các số bạn muốn trích xuất và nhập giá trị đó vào ô ở cột kế tiếp.**
**Bạn phải tự định dạng cột đầu ra thành "00" như trong hình minh họa**
Kết quả sẽ trông như hình ảnh này.
Cột Định dạng Tùy chỉnh
******************************************************************************************
Hi vọng những câu trả lời này sẽ giúp ích cho bạn.
Nếu vậy, vui lòng đánh dấu câu hỏi là đã được trả lời bất kể lựa chọn hay sở thích của bạn.
Người dân trong cộng đồng sẽ đánh giá cao cử chỉ của bạn.
Đây là đường dẫn đến tập bài tập.
https://www.dropbox.com/s/zsqy2m47tvism9a/GetMyNumberforComunity.xlsm?dl=0
Cảm ơn
Trân trọng,
CV của Jeovany
Comments
Post a Comment