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

hondacrv2019

Thành viên hoạt động
Tham gia ngày
19 Tháng năm 2019
Bài viết
106
Được thích
9
Điểm
20
Tuổi
34
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
 

saobekhonglac

Thành viên tích cực
Tham gia ngày
1 Tháng mười một 2008
Bài viết
1,273
Được thích
865
Điểm
860
Nơi ở
Long An - HCM

buiquangthuan

Thành viên thường trực
Tham gia ngày
17 Tháng mười hai 2010
Bài viết
265
Được thích
75
Điểm
395
Nơi ở
Bắc Ninh
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
 

VetMini

Gian hùng bàn phiếm (thành viên trôi nước)
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
7,708
Được thích
9,050
Điểm
560
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õ.
 

AutoReply

Thành viên tiêu biểu
Tham gia ngày
18 Tháng hai 2016
Bài viết
512
Được thích
651
Điểm
360
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.
 

VetMini

Gian hùng bàn phiếm (thành viên trôi nước)
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
7,708
Được thích
9,050
Điểm
560
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õ.
 

buiquangthuan

Thành viên thường trực
Tham gia ngày
17 Tháng mười hai 2010
Bài viết
265
Được thích
75
Điểm
395
Nơi ở
Bắc Ninh
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.
 

hondacrv2019

Thành viên hoạt động
Tham gia ngày
19 Tháng năm 2019
Bài viết
106
Được thích
9
Điểm
20
Tuổi
34
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 ý.
 

phulien1902

GPE - My love
Tham gia ngày
6 Tháng bảy 2013
Bài viết
3,406
Được thích
4,220
Điểm
560
Nơi ở
Hải Phòng
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
 
Top Bottom