Hỏi về code mảng tách Xã huyện tỉnh (1 người xem)

Liên hệ QC

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

tueyennhi

Thành viên tích cực
Tham gia
18/10/10
Bài viết
1,192
Được thích
105
Chào anh chị. Em đã đọc về Function tách xã, huyện, tỉnh nhưng chưa nắm được cách thức hoạt động nếu em áp dụng sang dạng mảng trong VBA.

Giả sử tại A1:A10 em có địa chỉ xã huyện tỉnh được cách nhau bởi dấu ","
Vậy viết code mảng như thế nào để khi gán từ địa chỉ B2 sẽ ra kết quả như file đính kèm?

Em cảm ơn!
 

File đính kèm

Chào anh chị. Em đã đọc về Function tách xã, huyện, tỉnh nhưng chưa nắm được cách thức hoạt động nếu em áp dụng sang dạng mảng trong VBA.

Giả sử tại A1:A10 em có địa chỉ xã huyện tỉnh được cách nhau bởi dấu ","
Vậy viết code mảng như thế nào để khi gán từ địa chỉ B2 sẽ ra kết quả như file đính kèm?

Em cảm ơn!
 

File đính kèm

Upvote 0
Chào anh chị. Em đã đọc về Function tách xã, huyện, tỉnh nhưng chưa nắm được cách thức hoạt động nếu em áp dụng sang dạng mảng trong VBA.

Giả sử tại A1:A10 em có địa chỉ xã huyện tỉnh được cách nhau bởi dấu ","
Vậy viết code mảng như thế nào để khi gán từ địa chỉ B2 sẽ ra kết quả như file đính kèm?

Em cảm ơn!
1 cách:
PHP:
Sub abc()
    Dim a As Range, i As Long
    For i = 2 To Range("A" & Rows.Count).End(3).Row
        Set a = Range("A" & i)
        If a = "" Then Exit Sub
        Range("B" & i) = Split(a, ",")(2)
        Range("C" & i) = Split(a, ",")(1)
         Range("D" & i) = Split(a, ",")(0)
    Next i
End Sub
 
Upvote 0

Befaint ơi đây là dạng công thức rồi, mình muốn viết dạng gán vào mảng ấy.
 
Upvote 0
1 cách:
PHP:
Sub abc()
    Dim a As Range, i As Long
    For i = 2 To Range("A" & Rows.Count).End(3).Row
        Set a = Range("A" & i)
        If a = "" Then Exit Sub
        Range("B" & i) = Split(a, ",")(2)
        Range("C" & i) = Split(a, ",")(1)
         Range("D" & i) = Split(a, ",")(0)
    Next i
End Sub

Cảm ơn bạn nhé :)
 
Upvote 0
Sử dụng cái có sẳn là Text to Columns để tách xã huyện tỉnh, xong dùng TRIM để loại bỏ ký tự trống phía trước cụm từ.
 
Upvote 0
Befaint ơi đây là dạng công thức rồi, mình muốn viết dạng gán vào mảng ấy.
PHP:
Sub SubConLai()
Dim arrDiachi()
Dim i As Long, k As Long, j As Long, n As Long, iTem
arrDiachi = Sheet1.Range("A2:A11").Value: n = UBound(arrDiachi, 1)
ReDim arrResult(1 To n, 1 To 3)
For i = 1 To n
    iTem = TachDiachi(arrDiachi(i, 1))
    If UBound(iTem) >= 0 Then
        j = 0
        For k = UBound(iTem) To LBound(iTem) Step -1
            j = j + 1
            arrResult(i, j) = Trim(iTem(k))
            If j = 3 Then Exit For
        Next k
    End If
Next i
Sheet1.Range("I2").Resize(n, 3) = arrResult
End Sub
 
Upvote 0
Chào anh chị. Em đã đọc về Function tách xã, huyện, tỉnh nhưng chưa nắm được cách thức hoạt động nếu em áp dụng sang dạng mảng trong VBA.

Giả sử tại A1:A10 em có địa chỉ xã huyện tỉnh được cách nhau bởi dấu ","
Vậy viết code mảng như thế nào để khi gán từ địa chỉ B2 sẽ ra kết quả như file đính kèm?

Em cảm ơn!
Cho bạn thêm đoạn code:
PHP:
Sub tach()
Dim num1 As Long, num2 As Long, arr1, arr2
arr1 = Range("A2:A" & [a65000].End(xlUp).Row)
ReDim arr2(1 To UBound(arr1), 1 To 3)
With CreateObject("vbscript.regexp")
    .Global = True: .ignorecase = True: .Pattern = "(.*),(.*),(.*)"
    For num1 = 1 To UBound(arr1)
        For num2 = 1 To 3
            arr2(num1, num2) = Trim(.Execute(arr1(num1, 1)).Item(0).submatches(3-num2 ))
        Next num2
    Next num1
End With
[b2].Resize(UBound(arr1), 3).Value = arr2
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Cho bạn thêm đoạn code:
PHP:
Sub tach()
Dim num1 As Long, num2 As Long, arr1, arr2
arr1 = Range("A2:A" & [a65000].End(xlUp).Row)
ReDim arr2(1 To UBound(arr1), 1 To 3)
With CreateObject("vbscript.regexp")
    .Global = True: .ignorecase = True: .Pattern = "(.*),(.*),(.*)"
    For num1 = 1 To UBound(arr1)
        For num2 = 1 To 3
            arr2(num1, num2) = Trim(.Execute(arr1(num1, 1)).Item(0).submatches(num2 - 1))
        Next num2
    Next num1
End With
[b2].Resize(UBound(arr1), 3).Value = arr2
End Sub
Hình như trong Code của bạn có sự nhầm lẫn?
 
Upvote 0
Cho bạn thêm đoạn code
Còn cần bẫy lỗi: Khi trong vùng có ô trống, địa chỉ có dạng: Tỉnh hoặc Huyện, tỉnh (tức là không đủ 2 dấy phẩy).
Có khi code bẫy lỗi dài hơn/ khó hơn phần code kết quả.
Và cần đảo ngược kết quả lại chút.
 
Upvote 0
Còn cần bẫy lỗi: Khi trong vùng có ô trống, địa chỉ có dạng: Tỉnh hoặc Huyện, tỉnh (tức là không đủ 2 dấy phẩy).
Có khi code bẫy lỗi dài hơn/ khó hơn phần code kết quả.
Và cần đảo ngược kết quả lại chút.
Em chưa hiểu ý anh, nếu chỉ có 2 cái thì khó phân biệt được cái nào là tình hoặc huyện hoặc xã nếu không có bảng tham chiếu .
 
Upvote 0
Web KT

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

Back
Top Bottom