Bài tập xử lý chuỗi trong excel xls năm 2024

Không cần phải duyệt hết chuỗi. Sử dụng 1 biến đếm để đếm số chuỗi số liên tục và chỉ duyệt đến hết chuỗi số cần lấy.

  • 30

    Không cần phải duyệt hết chuỗi. Sử dụng 1 biến đếm để đếm số chuỗi số liên tục và chỉ duyệt đến hết chuỗi số cần lấy.

Dạ. Cám ơn Anh rất nhiều. Em sửa lại như thế này có được không ạ

PHP:

Function ExtractNumber(ByVal txt As String, ByVal N As Long) As Double
    Dim I As Long, strTemp As String, atmp, Str As String
txt = Replace(txt, ",", ".")
For I = 1 To Len(txt)
    Select Case Asc(Mid(txt, I, 1))
        Case 40 To 57, 94
            strTemp = strTemp & Mid(txt, I, 1)
        Case Else
            strTemp = strTemp & " "
    End Select
    Str = Application.Trim(strTemp)
    atmp = Split(Str, " ")
    If UBound(atmp) > N - 1 Then Exit For
Next I
If Len(Str) Then ExtractNumber = Val(Split(Str, " ")(N - 1))
End Function

Bài tập xử lý chuỗi trong excel xls năm 2024

  • 31

    Dạ. Cám ơn Anh rất nhiều. Em sửa lại như thế này có được không ạ

PHP:

Function ExtractNumber(ByVal txt As String, ByVal N As Long) As Double Dim I As Long, strTemp As String, atmp, Str As String txt = Replace(txt, ",", ".") For I = 1 To Len(txt) Select Case Asc(Mid(txt, I, 1)) Case 40 To 57, 94 strTemp = strTemp & Mid(txt, I, 1) Case Else strTemp = strTemp & " " End Select Str = Application.Trim(strTemp) atmp = Split(Str, " ") If UBound(atmp) > N - 1 Then Exit For Next I If Len(Str) Then ExtractNumber = Val(Split(Str, " ")(N - 1)) End Function

Đây là 1 cách, bạn tham khảo.

Mã:

Option Explicit
Sub TachSo()
Dim SArr, Res
Dim i
SArr = Sheet1.Range("b11", Sheet1.Range("b65000").End(xlUp))
ReDim Res(1 To UBound(SArr), 1 To 2)
With CreateObject("VbScript.RegExp")
    .Global = True
    .IgnoreCase = True
    .Pattern = "\D+(\d+)[x](\d+).*"
    For i = 1 To UBound(SArr)
        If .test(SArr(i, 1)) Then
            Res(i, 1) = .Replace(SArr(i, 1), "$1")
            Res(i, 2) = .Replace(SArr(i, 1), "$2")
        End If
    Next i
End With
With Sheet1
.Range("c11", "d" & UBound(Res) + 10).ClearContents
.Range("c11", "d" & UBound(Res) + 10) = Res
End With
End Sub

1

  • 32

    Đây là 1 cách, bạn tham khảo.

Mã:

Option Explicit Sub TachSo() Dim SArr, Res Dim i SArr = Sheet1.Range("b11", Sheet1.Range("b65000").End(xlUp)) ReDim Res(1 To UBound(SArr), 1 To 2) With CreateObject("VbScript.RegExp") .Global = True .IgnoreCase = True .Pattern = "\D+(\d+)x.*" For i = 1 To UBound(SArr) If .test(SArr(i, 1)) Then Res(i, 1) = .Replace(SArr(i, 1), "$1") Res(i, 2) = .Replace(SArr(i, 1), "$2") End If Next i End With With Sheet1 .Range("c11", "d" & UBound(Res) + 10).ClearContents .Range("c11", "d" & UBound(Res) + 10) = Res End With End Sub

1

Cái Code này nó coi dấu "." hoặc dấu "," là kiểu chuỗi ạ Ví dụ chuỗi tại ô A1 là: AA123.35bbb235 + ExtractNumber(A1,1) =123 + ExtractNumber(A1,2)=35 + ExtractNumber(A1,3)=235

  • 33

Chủ bài

30:

Bạn cố gắng quá độ cho nên code bị lỏng. 1. Thử số 1,234.5 xem 2. Thử vấn đề tôi nói ở bài

26 xem

Bài tập xử lý chuỗi trong excel xls năm 2024

  • 34

    Cái Code này nó coi dấu "." hoặc dấu "," là kiểu chuỗi ạ Ví dụ chuỗi tại ô A1 là: AA123.35bbb235 + ExtractNumber(A1,1) =123 + ExtractNumber(A1,2)=35 + ExtractNumber(A1,3)=235

Tôi làm theo dữ liệu bài 1 mà. Nếu muốn số thập phân thì sửa lại như sau:

Mã:

Option Explicit
Sub TachSo()
Dim SArr, Res
Dim i
SArr = Sheet1.Range("b11", Sheet1.Range("b65000").End(xlUp))
ReDim Res(1 To UBound(SArr), 1 To 2)
With CreateObject("VbScript.RegExp")
    .Global = True
    .IgnoreCase = True
    .Pattern = "\D+(\d+)[x](\d+).*"
    For i = 1 To UBound(SArr)
        If .test(SArr(i, 1)) Then
            Res(i, 1) = .Replace(SArr(i, 1), "$1")
            Res(i, 2) = .Replace(SArr(i, 1), "$2")
        End If
    Next i
End With
With Sheet1
.Range("c11", "d" & UBound(Res) + 10).ClearContents
.Range("c11", "d" & UBound(Res) + 10) = Res
End With
End Sub

3

  • 35

    Tôi làm theo dữ liệu bài 1 mà. Nếu muốn số thập phân thì sửa lại như sau:

Mã:

Option Explicit Sub TachSo() Dim SArr, Res Dim i SArr = Sheet1.Range("b11", Sheet1.Range("b65000").End(xlUp)) ReDim Res(1 To UBound(SArr), 1 To 2) With CreateObject("VbScript.RegExp") .Global = True .IgnoreCase = True .Pattern = "\D+(\d+)x.*" For i = 1 To UBound(SArr) If .test(SArr(i, 1)) Then Res(i, 1) = .Replace(SArr(i, 1), "$1") Res(i, 2) = .Replace(SArr(i, 1), "$2") End If Next i End With With Sheet1 .Range("c11", "d" & UBound(Res) + 10).ClearContents .Range("c11", "d" & UBound(Res) + 10) = Res End With End Sub

3

Hay là mình tìm cái dấu thập phân bằng lệnh này ạ: Application.DecimalSeparator

Bài tập xử lý chuỗi trong excel xls năm 2024

  • 36

Em là thành viên mới tham gia và thấy VBA thật quan trọng và tuyệt vời và đang muốn học để mở rộng kiến thức! mong các anh chị chỉ bảo địa điểm có thể dăng ký học từ cơ bản được không ạ. em ở gò vấp có địa điểm nào gần đây dạy ngoài giờ không các anh chị!

Bài tập xử lý chuỗi trong excel xls năm 2024

  • 37

    Hay là mình tìm cái dấu thập phân bằng lệnh này ạ: Application.DecimalSeparator

Giả sử bạn đưa code đó vào file, dùng công thức trên sheet sau đó chuyển file cho người khác họ mở trên máy có thiết lập khác thì điều gì sẽ xảy ra?