Code nối các cột

Liên hệ QC

hoahuongduong1986

Thành viên thường trực
Tham gia
14/11/18
Bài viết
346
Được thích
40
Kính gửi Các Anh chị,
E muốn tạo cột phụ tại cột A để nối các cột rời rạc của một bảng gồm cột 2, cột 4, cột 10, cột 20 theo code dưới nhưng không được. Code em sai chỗ nào ạ.

Sub concat()

Dim j As Integer

Lr = Sheet8.Range("B" & Rows.Count).End(xlUp).Row

Sheet8.Select

For j = 2 To Lr

Cells(1, j).Value = Cells(2, j).Value + Cells(4, j).Value + Cells(10, j).Value + Cells(20, j).Value
Next j

End Sub
 
Kính gửi Các Anh chị,
E muốn tạo cột phụ tại cột A để nối các cột rời rạc của một bảng gồm cột 2, cột 4, cột 10, cột 20 theo code dưới nhưng không được. Code em sai chỗ nào ạ.

Sub concat()

Dim j As Integer

Lr = Sheet8.Range("B" & Rows.Count).End(xlUp).Row

Sheet8.Select

For j = 2 To Lr

Cells(1, j).Value = Cells(2, j).Value + Cells(4, j).Value + Cells(10, j).Value + Cells(20, j).Value
Next j

End Sub
Bạn có thể gửi dữ liệu mẫu được không, bạn thử code sau xem ạ:
Mã:
Option Explicit
Sub NoiNoiNoi()
    Dim j As Long, Lr As Long
    With Sheet8
        Lr = .Range("B" & .Rows.Count).End(xlUp).Row
        For j = 2 To Lr
            .Cells(j, 1) = .Cells(j, 2) & .Cells(j, 4) & .Cells(j, 10) & .Cells(j, 20)
        Next j
    End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Bạn có thể gửi dữ liệu mẫu được không, bạn thử code sau xem ạ:
Mã:
Option Explicit
Sub NoiNoiNoi()
    Dim j As Long, Lr As Long
    With Sheet8
        Lr = .Range("B" & .Rows.Count).End(xlUp).Row
        For j = 2 To Lr
            .Cells(j, 1) = .Cells(j, 2) & .Cells(j, 4) & .Cells(j, 10) & .Cells(j, 20)
        Next j
    End With
End Sub
Nó chạy chưa chính xác ạ.
Bài đã được tự động gộp:

Muốn làm gì tiếp thì phải đọc về các kiểu dữ liệu + tầm vực của nó. Kế đó là khai báo biến.
Như kia là hỏng rồi. j là integer gặp Lr to > 32767 là lăn ra ngỏm.



Dim j As Long, Lr

Sheet8.Select

Lr = Cells(Rows.Count, "B").End(xlUp).Row

For j = 2 To Lr

Cells(1, j).Value = Cells(2, j).Value + Cells(4, j).Value + Cells(10, j).Value + Cells(20, j).Value
Next j


Em làm vầy mà nó vẫn báo lỗi ạ.
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Sub conMèoMeoMeo()
Const sdeli = " | "
Const scolRef = "B"
Const startRow = 2
Const rngData = "A2:T2"
Const scllTarget = "A2"
Dim i as Long, lastRow as Long
Dim data as variant, result as variant
Dim listCols as variant, icol as variant, stext as string, idex as long
listCols = array(2, 4, 10, 20)
with sheet8
lastRow  = .Range(scolRef & .Rows.Count).End(xlUp).Row
if lastRow < startRow then msgbox "No data": Exit sub
data = .Range(rngData).resize(lastRow - startRow + 1).value2
lastRow = ubound(data,1)
end with
redim result(1 to lastRow, 1 to 1)
idex  = len(sdeli) + 1
For i = 1 To lastRow 
stext = ""
For each icol in listCols
stext = stext & sdeli & data(i, icol)
Next icol
result(i,1) = mid(stext,idex)
Next i

sheet8.range(scllTarget).resize(lastRow, 1).value = result
Erase data, result
End Sub
 
Upvote 0
PHP:
Sub conMèoMeoMeo()
Const sdeli = " | "
Const scolRef = "B"
Const startRow = 2
Const rngData = "A2:T2"
Const scllTarget = "A2"
Dim i as Long, lastRow as Long
Dim data as variant, result as variant
Dim listCols as variant, icol as variant, stext as string, idex as long
listCols = array(2, 4, 10, 20)
with sheet8
lastRow  = .Range(scolRef & .Rows.Count).End(xlUp).Row
if lastRow < startRow then msgbox "No data": Exit sub
data = .Range(rngData).resize(lastRow - startRow + 1).value2
lastRow = ubound(data,1)
end with
redim result(1 to lastRow, 1 to 1)
idex  = len(sdeli) + 1
For i = 1 To lastRow
stext = ""
For each icol in listCols
stext = stext & sdeli & data(i, icol)
Next icol
result(i,1) = mid(stext,idex)
Next i

sheet8.range(scllTarget).resize(lastRow, 1).value = result
Erase data, result
End Sub
Dạ được rồi ạ, em cảm ơn anh ạ.
 
Upvote 0
Web KT

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

Back
Top Bottom