Giúp code tách dữ liệu 1 cột thành 2 cột

Liên hệ QC

hondacrv2019

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
19/5/19
Bài viết
116
Được thích
9
1574741508025.png

Em cần code tách 1 cột thành 2 cột như hình. Mong các Quý tộc giúp đở. Xin đa tạ cảm ơn các quý tộc, cán bộ trước nhen
 
Upvote 0
View attachment 229027

Em cần code tách 1 cột thành 2 cột như hình. Mong các Quý tộc giúp đở. Xin đa tạ cảm ơn các quý tộc, cán bộ trước nhen
Mã:
Sub test()
    Dim i&, lR&, arr(), KQ, a&
    lR = Range("A" & Rows.Count).End(xlUp).Row
    arr = Range("A2:A" & lR).Value
    ReDim KQ(1 To (UBound(arr) / 2), 1 To 2)
    For i = 1 To UBound(arr)
        If IsNumeric(arr(i, 1))  = false Then
            a = a + 1
            KQ(a, 1) = arr(i, 1)
            KQ(a, 2) = arr(i + 1, 1)
        End If
    Next
    Range("C2:d2").Resize(a) = KQ
End Sub
ko biết đúng không nữa
 
Upvote 0
1 cách khác:
PHP:
Sub Test()
    With Selection
        .SpecialCells(xlCellTypeConstants, 2).Copy Range("D2")
        .SpecialCells(xlCellTypeConstants, 1).Copy Range("E2")
    End With
    Application.CutCopyMode = False
End Sub
 
Upvote 0
Em cần code tách 1 cột thành 2 cột như hình. Mong các Quý tộc giúp đở. Xin đa tạ cảm ơn các quý tộc, cán bộ trước nhen
Học ở đâu cái từ "quý tộc" vậy?
Quý tộc là bắt nguồn từ dòng họ. Phải biết chọn cửa đầu thai mới được làm quý tộc. Người sinh của khó dẫu có giỏi như thiên tài cũng không tự biến mình thành hàng quý tộc được.

Tạm xếp qua cái vụ từ ngữ. Cái hình trên có 2 nghĩa:
1. tách theo thứ tự, cứ dòng chẵn qua cột 1, dòng lẻ qua cột 2
2. tách theo định dạng, cứ ký tự sang cột 1 và số sang cột 2
Tập ăn nói tiếng VIệt cho rõ.
 
Upvote 0
Học ở đâu cái từ "quý tộc" vậy?
Quý tộc là bắt nguồn từ dòng họ. Phải biết chọn cửa đầu thai mới được làm quý tộc. Người sinh của khó dẫu có giỏi như thiên tài cũng không tự biến mình thành hàng quý tộc được.

Tạm xếp qua cái vụ từ ngữ. Cái hình trên có 2 nghĩa:
1. tách theo thứ tự, cứ dòng chẵn qua cột 1, dòng lẻ qua cột 2
2. tách theo định dạng, cứ ký tự sang cột 1 và số sang cột 2
Tập ăn nói tiếng VIệt cho rõ.

Có thể không tách theo chữ hoặc dòng đâu à, biết đâu họ muốn căn format chữ lệch trái thì cho vào cột 1, lệch phải cho qua cột 2 đó nha.
 
Upvote 0
Mã:
Sub test()
    Dim i&, lR&, arr(), KQ, a&
    lR = Range("A" & Rows.Count).End(xlUp).Row
    arr = Range("A2:A" & lR).Value
    ReDim KQ(1 To (UBound(arr) / 2), 1 To 2)
    For i = 1 To UBound(arr)
        If IsNumeric(arr(i, 1))  = false Then
            a = a + 1
            KQ(a, 1) = arr(i, 1)
            KQ(a, 2) = arr(i + 1, 1)
        End If
    Next
    Range("C2:d2").Resize(a) = KQ
End Sub
ko biết đúng không nữa
Code này luộm thuộm:
For i = 1 To UBound(arr)
If IsNumeric(arr(i, 1)) = false Then
a = a + 1
KQ(a, 1) = arr(i, 1)
KQ(a, 2) = arr(i + 1, 1)
End If
Next
Đã làm việc với cả i và i+1 thì vòng lặp phải nhảy bước 2

Và sai:
1. nếu có vài dữ liệu không phải là số đi liên tiếp thì nó chép ra tùm lum hết.
2. nếu có hơn 50% là ký tự thì mảng KQ sẽ bị tràn

Có thể không tách theo chữ hoặc dòng đâu à, biết đâu họ muốn căn format chữ lệch trái thì cho vào cột 1, lệch phải cho qua cột 2 đó nha.
Cứ coi như có 2+ cách đi.
Chung cuộc vẫn là thớt cần tập nói tiếng Việt cho rõ.
 
Upvote 0
Hihi. Con tập tọe chú ạ. Khả năng cần học nhiều. Đang theo dõi mà chưa thấy anh chị nào sổ code để xem cách tư duy.
Chứ lúc con viết cũng thấy có vấn đề. Nhưng thấy kết quả giống kia nên đưa tạm lên.
 
Upvote 0
1 cách khác:
PHP:
Sub Test()
    With Selection
        .SpecialCells(xlCellTypeConstants, 2).Copy Range("D2")
        .SpecialCells(xlCellTypeConstants, 1).Copy Range("E2")
    End With
    Application.CutCopyMode = False
End Sub

1574771955174.png
Code chạy sai rồi. Ý mình muốn nói dữ liệu mình có thể là số hoặc text tùy ý.
 
Upvote 0
View attachment 229051
Code chạy sai rồi. Ý mình muốn nói dữ liệu mình có thể là số hoặc text tùy ý.
Bạn thử:
PHP:
Sub Test2()
    Dim i&, LR&
    LR = Range("A" & Rows.Count).End(3).Row
    For i = 1 To LR Step 2
        Range("A" & i).Resize(2, 1).Copy
        Range("C" & Rows.Count).End(3).Offset(1).PasteSpecial Transpose:=True
    Next
    Application.CutCopyMode = False
End Sub
 
Upvote 0
Web KT
Back
Top Bottom