Giúp em tách các số hoặc chuỗi và nhập vào ô liên tục!

Liên hệ QC

Duong_VBA

Thành viên chính thức
Tham gia
10/11/07
Bài viết
89
Được thích
26
Các bác giúp em code VBA cho bài toán này với:
Khi nhập vào Cell A1: dãy ký tự 678m thì code vba sẽ tách các ký tự ra và nhập số vào B1=6; C1=7; D1=8 và E1=10
Và khi nhập vào A1: chuỗi 2,345 thì sẽ để B1=2,345 các cell khác bỏ trống
(Khi cột A từ A1 đến A100 nhập như trên thì tách ra từ B1 đến B100)
Cảm ơn các bác!
 

File đính kèm

Lần chỉnh sửa cuối:
Các bác giúp em code VBA cho bài toán này với:
Khi nhập vào Cell A1: dãy ký tự 678m thì code vba sẽ tách các ký tự ra và nhập số vào B1=6; C1=7; D1=8 và E1=10
Và khi nhập vào A1: chuỗi 2,345 thì sẽ để B1=2,345 các cell khác bỏ trống
(Khi cột A từ A1 đến A100 nhập như trên thì tách ra từ B1 đến B100)
Cảm ơn các bác!
Bạn đưa file 100 dòng lên xem thử... chứ nói không chẳng lẽ mọi người phải giã lập dử liệu cho bạn sao
Dử liệu có đủ tất cả các trường hợp càng tốt (ghi vào các cột B, C, D, E kết quả bạn cần để mọi người tham khảo)
 
Upvote 0
Bạn viết như vậy mình hiểu chết liền đó!! Trường hợp A1=678m thì B1=6; C1=7; D1=8 và E1=10 Trường hợp A1=2,345 thì B1=2,345 Vậy bạn cần trường hợp nào? Bótay. Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Xem đúng ý bạn chưa nha!

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 On Error Resume Next
 If Not Intersect(Target, Range("A1:A999")) Is Nothing _
    And Target.Cells.Count = 1 Then
    Dim Num As Double, Jj As Integer, Ww As Integer, DDai As Integer
    Target.Offset(, 1).Resize(, 20).ClearContents
    DDai = Len(Target.Value)
    For Ww = DDai To 1 Step -1
        If IsNumeric(Left(Target.Value, Ww)) Then
            Num = Left(Target.Value, Ww):                 Exit For
        End If
    Next Ww
    If Num - Int(Num) > 0 Then
        Target.Offset(, 1) = Num
    Else
        For Jj = 1 To Ww
            Target.Offset(, Jj) = Mid(Target.Value, Jj, 1)
        Next Jj
        Target.Offset(, Ww + 1) = 10
    End If
 End If
End Sub


Cần chú ý viết để người khác hiểu, chứ không phải viết thứ gì mình hiểu! Thân ái
 
Upvote 0
Bạn dùng công thức sau:
Mã:
=IF(AND(COLUMN()=2,MID($A3,2,1)=","),$A3,IF(AND(COLUMN()2,MID($A3,2,1)=","),"",IF(MID($A3,COLUMN()-1,1)="m",10,MID($A3,COLUMN()-1,1))))
Fill xuống, rồi quét chọn Fill tiếp cho các cột bên. Trong trường hợp này là cách dễ nhất. Thân.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Có file thì dể hiểu hơn nhiều
Làm vầy gọn hơn đây:
1> Công thức cho cột B
PHP:
B3 =IF(COUNTIF($A3,"*,*"),$A3,SUBSTITUTE(MID($A3,COLUMNS($A:A),1),"m","10"))
Kéo fill xuống
2> Công thức cho các cột còn lại
PHP:
C3 =IF(COUNTIF($B3,"*,*"),"",SUBSTITUTE(MID($A3,COLUMNS($A:B),1),"m","10"))
kéo fill sang phải và xuống dưới
Nếu muốn 1 công thức duy nhất thì:
PHP:
=IF(COUNTIF($A3,"*,*"),CHOOSE((COLUMNS($A:A)>1)+1,$A3,""),SUBSTITUTE(MID($A3,COLUMNS($A:A),1),"m","10"))
Nên dùng COLUMNS chứ không nên COLUMN
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom