VBA excel vướng mắc về For.....next. (1 người xem)

Liên hệ QC

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

duynhatgpe

Thành viên mới
Tham gia
1/12/15
Bài viết
42
Được thích
5
Chào mọi người !
trong chập chững thực tập VBA phân tách một ô số ra thành riêng lẻ từng số ,nếu ô có ít sồ thì chạy tốt nhưng khi ô số có nhiều trên hàng trăm thì đơ ,..mình muốn hiểu chổ này ....hihihj thành thật cảm ơn !

Sub tachso()
tonghop = Range("a1")
For i = 1 To Len(tonghop)
tachra = Mid(tonghop, i, 1)
Range("sheet1!B1").Offset(i, 0).Value = tachra
Next i
End Sub

Xin cảm ơn nhiều!
 

File đính kèm

Chào mọi người !
trong chập chững thực tập VBA phân tách một ô số ra thành riêng lẻ từng số ,nếu ô có ít sồ thì chạy tốt nhưng khi ô số có nhiều trên hàng trăm thì đơ ,..mình muốn hiểu chổ này ....hihihj thành thật cảm ơn !

Sub tachso()
tonghop = Range("a1")
For i = 1 To Len(tonghop)
tachra = Mid(tonghop, i, 1)
Range("sheet1!B1").Offset(i, 0).Value = tachra
Next i
End Sub

Xin cảm ơn nhiều!

Mình mở file lên thấy chạy bình thường chứ có thấy đơ gì đâu
 
Upvote 0
kết quả nó như vầy nè ....?
 

File đính kèm

  • Slide_1.jpg
    Slide_1.jpg
    64 KB · Đọc: 82
Upvote 0
Hihihihj hay thử nhập a1= 2541745896547895451236987412565551 thì nó ra như vậy đó ...không ra đủ từng số mà là ký hiêu = -..

Thì ở ô A1 hiển thị sao thì nó sẽ tách thành vậy. Bạn thử gõ CT này: =REPT(1234567,1000) vào A1 rồi cho chạy xem
 
Upvote 0
Nếu là "Chập chững" thì bạn nên giới hạn tổng kí số ô nào đó đang khảo sát chỉ là 15 mà thôi!
 
Upvote 0
uhu giáp mình với ,hình tìm mãi không ra....

Lâu lâu ôn lại regexp , mượn tạm bài này để ôn tập :
Mã:
Sub tachso1()
Dim tmp, oMatch As Object, Arr
    tmp = Range("A1")
    tmp = Format(tmp, "#,##0.00")
    With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = "(,|/.)"
        tmp = .Replace(tmp, "")
        .Pattern = "\B"
        tmp = .Replace(tmp, "!")
        Arr = Split(tmp, "!")
    End With
    Range("C1").Resize(UBound(Arr, 1) + 1) = WorksheetFunction.Transpose(Arr)
End Sub
[INFO1]
lưu ý kết quả có thể không giống yêu cầu của bạn !
[/INFO1]
 
Upvote 0
Lâu lâu ôn lại regexp , mượn tạm bài này để ôn tập :
Mã:
Sub tachso1()
Dim tmp, oMatch As Object, Arr
    tmp = Range("A1")
    tmp = Format(tmp, "#,##0.00")
    With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = "(,|/.)"
        tmp = .Replace(tmp, "")
        .Pattern = "\B"
        tmp = .Replace(tmp, "!")
        Arr = Split(tmp, "!")
    End With
    Range("C1").Resize(UBound(Arr, 1) + 1) = WorksheetFunction.Transpose(Arr)
End Sub
[INFO1]
lưu ý kết quả có thể không giống yêu cầu của bạn !
[/INFO1]
Mình cũng muốn học cái này lắm ...sao có khúc hiểu khúc không ...nói chung đau đầu quá ...Từ từ ngâm cứu rồi ta cũng sẽ học được ...--=0
Cảm ơn Bạn
 
Upvote 0
Chào mọi người !
trong chập chững thực tập VBA phân tách một ô số ra thành riêng lẻ từng số ,nếu ô có ít sồ thì chạy tốt nhưng khi ô số có nhiều trên hàng trăm thì đơ ,..mình muốn hiểu chổ này ....hihihj thành thật cảm ơn !

Sub tachso()
tonghop = Range("a1")
For i = 1 To Len(tonghop)
tachra = Mid(tonghop, i, 1)
Range("sheet1!B1").Offset(i, 0).Value = tachra
Next i
End Sub

Xin cảm ơn nhiều!

Bạn thay dòng màu đỏ trong code thành: tonghop = Format(Sheet1.Range("A1"), "#") là được
 
Upvote 0
Đến giờ cũng chưa được nữa các bạn ạ ,vẩn con số nhỏ thì ok , còn con số lớn cỡ 20 số trở lên thì ...hihihi không được, vây đây có khúc mắc chổ nào các bạn
 
Upvote 0
Đến giờ cũng chưa được nữa các bạn ạ ,vẩn con số nhỏ thì ok , còn con số lớn cỡ 20 số trở lên thì ...hihihi không được, vây đây có khúc mắc chổ nào các bạn
Bạn làm như sau:

Thêm dấu nháy đơn (') vào dãy số bạn nhập rồi chạy code.
 
Upvote 0
Lâu lâu ôn lại regexp , mượn tạm bài này để ôn tập :
Mã:
Sub tachso1()
Dim tmp, oMatch As Object, Arr
    tmp = Range("A1")
    tmp = Format(tmp, "#,##0.00")
    With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = "(,|/.)"
        tmp = .Replace(tmp, "")
        .Pattern = "\B"
        tmp = .Replace(tmp, "!")
        Arr = Split(tmp, "!")
    End With
    Range("C1").Resize(UBound(Arr, 1) + 1) = WorksheetFunction.Transpose(Arr)
End Sub
[INFO1]
lưu ý kết quả có thể không giống yêu cầu của bạn !
[/INFO1]

Lâu quá khong ôn lại nên lụt nghề rồi bạn ơi.

Mẫu 1 ký tự thì không phải dùng cái |
Dùng character class tốt hơn.
"(,|/.)" = "[.,]"
 
Upvote 0
Đến giờ cũng chưa được nữa các bạn ạ ,vẩn con số nhỏ thì ok , còn con số lớn cỡ 20 số trở lên thì ...hihihi không được, vây đây có khúc mắc chổ nào các bạn

Sao mình làm vẫn đc bình thường mà. Bạn thử đưa cái file không đc lên xem sao
 
Upvote 0
Web KT

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

Back
Top Bottom