TÁCH PLANO (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

huonglien1901

GPE là ngôi nhà thứ 2 của tôi!!!
Tham gia
17/4/16
Bài viết
2,701
Được thích
2,434
Giới tính
Nam
Nghề nghiệp
Nhân viên kỹ thuật in ấn
Chào mọi người trên diễn đàn!

Trong quá trình làm việc có vấn đề phát sinh nhờ mọi người giúp

Trong file đính kèm em có ghi kết quả.

Em cảm ơn mọi người nhiều!​
 

File đính kèm

Bạn chạy code này xem sao, thấy kết quả có vẻ giống trong file bạn đính kèm
Mã:
Option Explicit
Sub HL1901PLN()
Dim SArr, Res() As String, Tmp
Dim i, j, k
SArr = Sheet1.Range("A2", Sheet1.Range("A2").End(xlDown))
ReDim Res(1 To UBound(SArr), 1 To 4)
For i = 1 To UBound(SArr)
    Tmp = Split(SArr(i, 1))
    For j = 2 To UBound(Tmp)
        If IsNumeric(Tmp(j)) = True And Len(Tmp(j)) >= 8 Then
            k = k + 1
            Res(i, k + 1) = Tmp(j)
        End If
    Next j
    For j = UBound(Tmp) To 1 Step -1
        If IsNumeric(Tmp(j)) = True And Len(Tmp(j)) = 1 And Len(Tmp(j - 1)) > 1 Then
            Res(i, 4) = Tmp(j)
            Exit For
        End If
    Next j
    Res(i, 1) = Tmp(0)
    k = 0
Next i
Sheet1.Range("B2", Sheet1.Range("E" & UBound(SArr) + 1)).ClearContents
Sheet1.Range("B2", Sheet1.Range("E" & UBound(SArr) + 1)) = Res
End Sub
 
Upvote 0
Bạn chạy code này xem sao, thấy kết quả có vẻ giống trong file bạn đính kèm
Mã:
Option Explicit
Sub HL1901PLN()
Dim SArr, Res() As String, Tmp
Dim i, j, k
SArr = Sheet1.Range("A2", Sheet1.Range("A2").End(xlDown))
ReDim Res(1 To UBound(SArr), 1 To 4)
For i = 1 To UBound(SArr)
    Tmp = Split(SArr(i, 1))
    For j = 2 To UBound(Tmp)
        If IsNumeric(Tmp(j)) = True And Len(Tmp(j)) >= 8 Then
            k = k + 1
            Res(i, k + 1) = Tmp(j)
        End If
    Next j
    For j = UBound(Tmp) To 1 Step -1
        If IsNumeric(Tmp(j)) = True And Len(Tmp(j)) = 1 And Len(Tmp(j - 1)) > 1 Then
            Res(i, 4) = Tmp(j)
            Exit For
        End If
    Next j
    Res(i, 1) = Tmp(0)
    k = 0
Next i
Sheet1.Range("B2", Sheet1.Range("E" & UBound(SArr) + 1)).ClearContents
Sheet1.Range("B2", Sheet1.Range("E" & UBound(SArr) + 1)) = Res
End Sub

dạ code ra đúng rồi anh ơi. Anh ơi chọn cột B format là text luôn anh ơi


Em cảm ơn Anh.
 
Upvote 0
Thêm dòng này trước End Sub là được bạn.
Mã:
Sheet1.Range("B2", Sheet1.Range("B1000000").End(xlUp)).NumberFormat = "@"

Dạ em cảm ơn Anh, Để em test thử xem có xảy ra lỗi gì không, rồi em báo lại cho anh!

Một lần nữa em cảm ơn anh rất nhiều!
 
Upvote 0
Dạ em cảm ơn Anh, Để em test thử xem có xảy ra lỗi gì không, rồi em báo lại cho anh!

Một lần nữa em cảm ơn anh rất nhiều!

Anh ơi em test nó có lỗi như trong file nhờ Anh xem giúp. Em có tô màu vàng để nhận biết

Em cảm ơn nhiều!
 

File đính kèm

Upvote 0

File đính kèm

Upvote 0
Bạn chạy code này xem sao, thấy kết quả có vẻ giống trong file bạn đính kèm
Mã:
Option Explicit
Sub HL1901PLN()
Dim SArr, Res() As String, Tmp
Dim i, j, k
SArr = Sheet1.Range("A2", Sheet1.Range("A2").End(xlDown))
ReDim Res(1 To UBound(SArr), 1 To 4)
For i = 1 To UBound(SArr)
    Tmp = Split(SArr(i, 1))
    For j = 2 To UBound(Tmp)
        If IsNumeric(Tmp(j)) = True And Len(Tmp(j)) >= 8 Then
            k = k + 1
            Res(i, k + 1) = Tmp(j)
        End If
    Next j
    For j = UBound(Tmp) To 1 Step -1
        If IsNumeric(Tmp(j)) = True And Len(Tmp(j)) = 1 And Len(Tmp(j - 1)) > 1 Then
            Res(i, 4) = Tmp(j)
            Exit For
        End If
    Next j
    Res(i, 1) = Tmp(0)
    k = 0
Next i
Sheet1.Range("B2", Sheet1.Range("E" & UBound(SArr) + 1)).ClearContents
Sheet1.Range("B2", Sheet1.Range("E" & UBound(SArr) + 1)) = Res
End Sub

Anh ơi cho em hỏi ý nghĩa những code này!
 
Upvote 0
Em gửi lại file anh xem giúp em, em có nêu kết quả mong muốn trong đó
Bạn chạy thử Sub này xem sao.
PHP:
Public Sub GPE()
Dim sArr(), dArr(), I As Long, J As Long, N As Long, R As Long, Tmp
sArr = Range("A2", Range("A2").End(xlDown)).Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 4)
For I = 1 To R
    Tmp = Split(sArr(I, 1), " "): N = UBound(Tmp)
    dArr(I, 1) = Tmp(0):        dArr(I, 2) = "'" & Tmp(2)
    dArr(I, 3) = "'" & Tmp(N - 2): dArr(I, 4) = Tmp(N - 1)
Next I
Range("B2:D2").Resize(R) = dArr
End Sub
 
Upvote 0
Bạn chạy thử Sub này xem sao.
PHP:
Public Sub GPE()
Dim sArr(), dArr(), I As Long, J As Long, N As Long, R As Long, Tmp
sArr = Range("A2", Range("A2").End(xlDown)).Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 4)
For I = 1 To R
    Tmp = Split(sArr(I, 1), " "): N = UBound(Tmp)
    dArr(I, 1) = Tmp(0):        dArr(I, 2) = "'" & Tmp(2)
    dArr(I, 3) = "'" & Tmp(N - 2): dArr(I, 4) = Tmp(N - 1)
Next I
Range("B2:D2").Resize(R) = dArr
End Sub

code ra đúng rồi anh ơi.
mà anh ơi code của anh Thethienchu em có nêu 3 trường hợp nhưng em muốn trường hợp của em thì thay đổi code như thế nào anh?

Đây là code của anhThethienchu
Mã:
Option Explicit
Sub HL1901PLN()
Dim SArr, Res() As String, Tmp
Dim i, j, k
SArr = Sheet1.Range("A2", Sheet1.Range("A2").End(xlDown))
ReDim Res(1 To UBound(SArr), 1 To 4)
For i = 1 To UBound(SArr)
Tmp = Split(SArr(i, 1))
For j = 2 To UBound(Tmp)
If IsNumeric(Tmp(j)) = True And Len(Tmp(j)) >= 8 Then
k = k + 1
Res(i, k + 1) = Tmp(j)
End If
Next j
For j = UBound(Tmp) To 1 Step -1
If IsNumeric(Tmp(j)) = True And Len(Tmp(j)) = 1 And Len(Tmp(j - 1)) > 1 Then
Res(i, 4) = Tmp(j)
Exit For
End If
Next j
Res(i, 1) = Tmp(0)
k = 0
Next i
Sheet1.Range("B2", Sheet1.Range("E" & UBound(SArr) + 1)).ClearContents
Sheet1.Range("B2", Sheet1.Range("E" & UBound(SArr) + 1)) = Res
End Sub
 
Upvote 0
Em gửi file Anh BATE, anh xem giúp em với! Em có nêu tất cả các trường hợp!

Em cảm ơn Anh!
 

File đính kèm

Upvote 0
Em gửi file Anh BATE, anh xem giúp em với! Em có nêu tất cả các trường hợp!

Em cảm ơn Anh!
Tất cả trường hợp là sao? Kết quả tham khảo là chỗ nào?
60 dòng cùng 1 kiểu dữ liệu, tách chuỗi ra từng nhóm, lấy nhóm đầu tiên, nhóm thứ ba, nhóm thứ tư, nhóm kế "bét".
 
Upvote 0
Tất cả trường hợp là sao? Kết quả tham khảo là chỗ nào?
60 dòng cùng 1 kiểu dữ liệu, tách chuỗi ra từng nhóm, lấy nhóm đầu tiên, nhóm thứ ba, nhóm thứ tư, nhóm kế "bét".
dạ em gửi nhầm file cho anh, em gửi lại file cho anh xem, em có nêu tất cả trường hợp xảy ra, em có nêu kết quả tham khảo đó anh!
 

File đính kèm

Upvote 0
dạ em gửi nhầm file cho anh, em gửi lại file cho anh xem, em có nêu tất cả trường hợp xảy ra, em có nêu kết quả tham khảo đó anh!
Vậy thì xét theo kiểu "lòng vòng".
PHP:
Sub GPE()
Dim sArr, dArr(), I As Long, J As Long, N As Long, R As Long, Tmp
sArr = Range("A2", Range("A2").End(xlDown)).Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 4)
For I = 1 To UBound(sArr)
    Tmp = Split(sArr(I, 1)): N = UBound(Tmp)
    dArr(I, 1) = Tmp(0): dArr(I, 2) = Tmp(2)
    For J = 3 To UBound(Tmp)
        If IsNumeric(Tmp(J)) Then
            N = J + 1: dArr(I, 3) = Tmp(J)
            Exit For
        End If
    Next J
        For J = UBound(Tmp) To N Step -1
            If IsNumeric(Tmp(J)) And (Not IsNumeric(Tmp(J - 1)) Or J = N) Then
                dArr(I, 4) = Tmp(J): Exit For
            End If
        Next J
Next I
Range("B2:E2").Resize(R) = dArr
End Sub
 
Upvote 0
Vậy thì xét theo kiểu "lòng vòng".
PHP:
Sub GPE()
Dim sArr, dArr(), I As Long, J As Long, N As Long, R As Long, Tmp
sArr = Range("A2", Range("A2").End(xlDown)).Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 4)
For I = 1 To UBound(sArr)
    Tmp = Split(sArr(I, 1)): N = UBound(Tmp)
    dArr(I, 1) = Tmp(0): dArr(I, 2) = Tmp(2)
    For J = 3 To UBound(Tmp)
        If IsNumeric(Tmp(J)) Then
            N = J + 1: dArr(I, 3) = Tmp(J)
            Exit For
        End If
    Next J
        For J = UBound(Tmp) To N Step -1
            If IsNumeric(Tmp(J)) And (Not IsNumeric(Tmp(J - 1)) Or J = N) Then
                dArr(I, 4) = Tmp(J): Exit For
            End If
        Next J
Next I
Range("B2:E2").Resize(R) = dArr
End Sub
Format cột B,C,D là Text trước khi chạy code.
 
Upvote 0
Quái luôn! Dữ liệu từ dòng 82 trở xuống đâu có giống "dạng" bên trên, và kết quả bạn muốn có là gì?

Dạ em xin đưa hết tất cả trường hợp nếu có trường hợp khác xảy ra thì em tự làm, em có đưa ra kết quả trong file, em có tô màu đánh dấu những trường hợp.

Em cảm ơn anh đã hỗ trợ giúp em!
 

File đính kèm

Upvote 0
Em đi hỏi mà tới bài #19 em mới bảo "em đưa hết các trường hợp" có tin nổi không?
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom