Ghép 2 cột dữ liệu

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

tuanxitin

Thành viên mới
Tham gia
5/6/16
Bài viết
44
Được thích
3
Anh/Chị xem giúp em đoạn code cột C em chạy chưa đúng, nhờ anh/chị xem và fix lỗi giúp em
cảm ơn anh/chị
Dữ liệu ra đúng là cột F
 

File đính kèm

  • map dulieu 2024.xlsm
    22.5 KB · Đọc: 15
Anh/Chị xem giúp em đoạn code cột C em chạy chưa đúng, nhờ anh/chị xem và fix lỗi giúp em
cảm ơn anh/chị
Dữ liệu ra đúng là cột F
Excel 2007 trở lên có hơn 1 triệu dòng, nên thay Integer bằng Long.

Thử sửa lại như sau:

PHP:
Sub ghepdulieu()
    Dim i As Long
    Dim y As Long
    Dim n As Long
    n = 1
    
    For y = 2 To 217
    For i = 2 To 58
    n = n + 1
    Cells(n, 3) = Cells(i, 1) & "#" & Cells(y, 2)
    Next
    Next
   
    
End Sub
 
Upvote 0
Excel 2007 trở lên có hơn 1 triệu dòng, nên thay Integer bằng Long.

Thử sửa lại như sau:

PHP:
Sub ghepdulieu()
    Dim i As Long
    Dim y As Long
    Dim n As Long
    n = 1
   
    For y = 2 To 217
    For i = 2 To 58
    n = n + 1
    Cells(n, 3) = Cells(i, 1) & "#" & Cells(y, 2)
    Next
    Next
  
   
End Sub
Anh ơi cho vào mảng đi để thế kia chạy chậm lắm.
 
Upvote 0
Code viết kiểu mảng bằng AI, bạn tham khảo
Mã:
Sub ghepdulieu()
    Dim i As Long
    Dim y As Long
    Dim n As Long
    Dim LastRowA As Long
    Dim LastRowB As Long
    Dim data1 As Variant
    Dim data2 As Variant
    Dim result() As Variant
    
    ' Xác định hàng cuối cùng có dữ liệu trong cột A và B
    LastRowA = Cells(Rows.Count, 1).End(xlUp).Row
    LastRowB = Cells(Rows.Count, 2).End(xlUp).Row
    
    ' Lấy dữ liệu từ cột A và B
    data1 = Range("A2:A" & LastRowA).Value
    data2 = Range("B2:B" & LastRowB).Value
    
    ' Khởi tạo mảng kết quả
    ReDim result(1 To (LastRowA - 1) * (LastRowB - 1), 1 To 1)
    n = 1
    
    ' Duyệt và ghi kết quả vào mảng
    For y = 1 To LastRowB - 1
        For i = 1 To LastRowA - 1
            result(n, 1) = data1(i, 1) & "#" & data2(y, 1)
            n = n + 1
        Next i
    Next y
    
    ' Ghi kết quả từ mảng vào cột C
    Range("C2").Resize(UBound(result, 1), 1).Value = result
End Sub
 
Upvote 0
Với công thức nối chuỗi giản dị thì không cần dùng mảng.

Sub t()
' blend each cell of blend1 to each cell of blend2
' with blend1 as prefix, "#" as in-between and blend2 as suffix

Dim reslt As Range, cel As Range
Dim blend1 As String, blend2 As String, oSet As Long
blend1 = "A2:A58"
blend2 = "B2:B217"
Set reslt = Range(blend1).Offset(0, 5) ' write results 5 columns away from blend1
oSet = reslt.Rows.Count
For Each cel In Range(blend2)
reslt.Value = Evaluate(blend1 & "&""#""&" & cel.Value) ' block by block
Set reslt = reslt.Offset(oSet)
Next cel
End Sub
 
Upvote 0
Web KT
Back
Top Bottom