lọc lấy text trong cột

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

quen_tat_ca

Thành viên mới
Tham gia
7/9/24
Bài viết
11
Được thích
1
Mình có dữ liệu ở cột B của sheet1 vừa có số vừa có text, giờ mình muốn lọc lấy text ra cột D của sheet2, sau đó tách lấy số ra ờ cột E và text ở cột F, nhờ các bác hướng dẫn dùm. Xin cám ơn!
 

File đính kèm

  • LOCTEXT.xlsx
    9.5 KB · Đọc: 6
Mình có dữ liệu ở cột B của sheet1 vừa có số vừa có text, giờ mình muốn lọc lấy text ra cột D của sheet2, sau đó tách lấy số ra ờ cột E và text ở cột F, nhờ các bác hướng dẫn dùm. Xin cám ơn!
Thử code dưới đây
Mã:
Option Explicit

Sub abcd()
Dim sArr
Dim Res
Dim i, j, k

sArr = Sheet1.Range("B3").CurrentRegion
ReDim Res(1 To UBound(sArr), 1 To 3)

k = 1
For i = 1 To UBound(sArr)
    If IsNumeric(sArr(i, 1)) = False Then
        Res(k, 1) = sArr(i, 1)
        For j = Len(Res(k, 1)) To 1 Step -1
            If IsNumeric(Left(Res(k, 1), j)) Then
                Res(k, 2) = Left(Res(k, 1), j)
                Res(k, 3) = Right(Res(k, 1), Len(Res(k, 1)) - j)
                
                k = k + 1
                Exit For
            End If
        Next j
    End If
Next i

Sheet2.Range("H3").Resize(k, 3) = Res
End Sub
 
Upvote 0
Mình có dữ liệu ở cột B của sheet1 vừa có số vừa có text, giờ mình muốn lọc lấy text ra cột D của sheet2, sau đó tách lấy số ra ờ cột E và text ở cột F, nhờ các bác hướng dẫn dùm. Xin cám ơn!
Bạn thử

D3=IF(COLUMN(A:A)=1,INDEX(Sheet1!$B$3:$B$18,AGGREGATE(15,6,ROW($1:$50)/(ISTEXT(Sheet1!$B$3:$B$18)),ROWS($1:1))),IF(COLUMN(A:A)=2,--LEFT(INDEX(Sheet1!$B$3:$B$18,AGGREGATE(15,6,ROW($1:$50)/(ISTEXT(Sheet1!$B$3:$B$18)),ROWS($1:1))),2),RIGHT(INDEX(Sheet1!$B$3:$B$18,AGGREGATE(15,6,ROW($1:$50)/(ISTEXT(Sheet1!$B$3:$B$18)),ROWS($1:1))))))

Bạn kéo công thức xuống và sang ngang.

Thân
 

File đính kèm

  • LOCTEXT.xlsx
    10.8 KB · Đọc: 0
Upvote 0
Mình có dữ liệu ở cột B của sheet1 vừa có số vừa có text, giờ mình muốn lọc lấy text ra cột D của sheet2, sau đó tách lấy số ra ờ cột E và text ở cột F, nhờ các bác hướng dẫn dùm. Xin cám ơn!
1727706836811.png
Công thức cũng được nè, nếu bạn có Office 365 và đã được update tới hàm Regex thì khỏe đó mà, không lại dài thêm chút. Mình ví dụ nên làm luôn bên sheet data đó.
=LET(a, FILTER(B3:B18,ISTEXT(B3:B18)), HSTACK(a, REGEXREPLACE(a,{"[^\d]","[^\D]"},)))
 
Upvote 0
Thử code dưới đây
Mã:
Option Explicit

Sub abcd()
Dim sArr
Dim Res
Dim i, j, k

sArr = Sheet1.Range("B3").CurrentRegion
ReDim Res(1 To UBound(sArr), 1 To 3)

k = 1
For i = 1 To UBound(sArr)
    If IsNumeric(sArr(i, 1)) = False Then
        Res(k, 1) = sArr(i, 1)
        For j = Len(Res(k, 1)) To 1 Step -1
            If IsNumeric(Left(Res(k, 1), j)) Then
                Res(k, 2) = Left(Res(k, 1), j)
                Res(k, 3) = Right(Res(k, 1), Len(Res(k, 1)) - j)
              
                k = k + 1
                Exit For
            End If
        Next j
    End If
Next i

Sheet2.Range("H3").Resize(k, 3) = Res
End Sub
Mình test chạy rất ok, xin cảm ơn bác, nhưng khi mình bỏ trống 1 ô ( thí dụ như ô B6) thì nó không chạy, mong bác chỉ dạy thêm.
 
Upvote 0
Mình test chạy rất ok, xin cảm ơn bác, nhưng khi mình bỏ trống 1 ô ( thí dụ như ô B6) thì nó không chạy, mong bác chỉ dạy thêm.
Bạn tìm dòng trên, thay = dòng dưới rồi chạy lại xem sao
Mã:
'sArr = Sheet1.Range("B3").CurrentRegion
sArr = Sheet1.Range("B3", Sheet1.Range("B" & Rows.Count).End(xlUp))
 
Upvote 0
Web KT

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

Back
Top Bottom