Chèn dòng bằng VBA trên cùng 1 sheet

Liên hệ QC

khi ta 20

Thành viên thường trực
Tham gia
26/3/18
Bài viết
260
Được thích
209
Giới tính
Nữ
Chào mọi người, hôm nay em có 1 file excel nhờ mọi người giúp đỡ.
Em muốn tại sheet1 chèn các dòng chữ "Tổng cộng" từ cột C sang cột D, đồng thời xóa đi cột C.
Kết quả em mong muốn như sheet 2.
Em cám ơn rất nhiều
 

File đính kèm

Chào mọi người, hôm nay em có 1 file excel nhờ mọi người giúp đỡ.
Em muốn tại sheet1 chèn các dòng chữ "Tổng cộng" từ cột C sang cột D, đồng thời xóa đi cột C.
Kết quả em mong muốn như sheet 2.
Em cám ơn rất nhiều
Thử:
PHP:
Sub abc()
    Dim a, b, i&, k&
    With Sheet1
        a = .Range("C2", .Range("C" & Rows.Count).End(3)).Resize(, 2).Value
        ReDim b(1 To UBound(a), 1 To 1)
        For i = 1 To UBound(a)
            If a(i, 2) <> Empty Then
                k = k + 1
                b(k, 1) = a(i, 2)
            Else
                k = k + 1
                b(k, 1) = a(i, 1)
            End If
        Next i
        If k Then
            Sheet2.Range("D2").Resize(k) = b
        End If
    End With
End Sub
 

File đính kèm

Upvote 0
Tôi thắc mắc sao sử dụng dữ liệu mà lại xóa nó đi.
Tôi lấy dữ liệu từ sheet1 qua sheet2 (giữ nguyên trạng) thêm tổng cộng rồi Sum cột G, H, bạn muốn xóa cái gì thì xóa tùy ý, khi chạy code nó trở lại nguyên trạng.
 

File đính kèm

Upvote 0
Tôi thắc mắc sao sử dụng dữ liệu mà lại xóa nó đi.
Tôi lấy dữ liệu từ sheet1 qua sheet2 (giữ nguyên trạng) thêm tổng cộng rồi Sum cột G, H, bạn muốn xóa cái gì thì xóa tùy ý, khi chạy code nó trở lại nguyên trạng.
Do thực hiện trên cùng 1 sheet
Dạ em đã sửa code của anh phulien1902 cho phù hợp với yêu cầu của em rồi
Sub abc()
Dim a, b, i&, k&
With Sheet1
a = .Range("C2", .Range("C" & Rows.Count).End(3)).Resize(, 2).Value
ReDim b(1 To UBound(a), 1 To 1)
For i = 1 To UBound(a)
If a(i, 2) <> Empty Then
k = k + 1
b(k, 1) = a(i, 2)
Else
k = k + 1
b(k, 1) = a(i, 1)
End If
Next i
If k Then
Sheet1.Range("D2").Resize(k) = b
End If
Sheet1.Range("C:C").Delete
End With

End Sub
 
Upvote 0
Do thực hiện trên cùng 1 sheet
Dài quá, dư biến K
Mã:
Sub test()
Dim a, b, i As Long
With Sheet1
    a = .Range("C2", .Range("C" & Rows.Count).End(xlUp)).Resize(, 2).Value
    ReDim b(1 To UBound(a), 1 To 1)
        For i = 1 To UBound(a)
                b(i, 1) = IIf(a(i, 2) <> "", a(i, 2), a(i, 1))
        Next i
    .Range("D2").Resize(i) = b
    .Range("C:C").Clear
End With
End Sub
Hoặc làm trực tiếp trên range:
Mã:
Sub test2()
Dim lr As Long
With Sheet1
    lr = .Range("C" & Rows.Count).End(xlUp).Row
        For i = 2 To lr
             If .Cells(i, 4) = "" Then .Cells(i, 4) = .Cells(i, 3)
        Next i
    .Range("C:C").Clear
End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Dài quá, dư biến K
Mã:
Sub test()
Dim a, b, i As Long
With Sheet1
    a = .Range("C2", .Range("C" & Rows.Count).End(xlUp)).Resize(, 2).Value
    ReDim b(1 To UBound(a), 1 To 1)
        For i = 1 To UBound(a)
                b(i, 1) = IIf(a(i, 2) <> "", a(i, 2), a(i, 1))
        Next i
    .Range("D2").Resize(i) = b
    .Range("C:C").Clear
End With
End Sub
Hoặc làm trực tiếp trên range:
Mã:
Sub test2()
Dim lr As Long
With Sheet1
    lr = .Range("C" & Rows.Count).End(xlUp).Row
        For i = 2 To lr
             If Cells(i, 4) = "" Then Cells(i, 4) = Cells(i, 3)
        Next i
    .Range("C:C").Clear
End With
End Sub
Có lẽ phải sửa:
PHP:
 .Range("D2").Resize(i) = b
thành:
PHP:
 .Range("D2").Resize(i-1) = b
bạn phuocam nhỉ
 
Upvote 0
Dài quá, dư biến K
Mã:
Sub test()
Dim a, b, i As Long
With Sheet1
    a = .Range("C2", .Range("C" & Rows.Count).End(xlUp)).Resize(, 2).Value
    ReDim b(1 To UBound(a), 1 To 1)
        For i = 1 To UBound(a)
                b(i, 1) = IIf(a(i, 2) <> "", a(i, 2), a(i, 1))
        Next i
    .Range("D2").Resize(i) = b
    .Range("C:C").Clear
End With
End Sub
Hoặc làm trực tiếp trên range:
Mã:
Sub test2()
Dim lr As Long
With Sheet1
    lr = .Range("C" & Rows.Count).End(xlUp).Row
        For i = 2 To lr
             If Cells(i, 4) = "" Then Cells(i, 4) = Cells(i, 3)
        Next i
    .Range("C:C").Clear
End With
End Sub
Cám ơn anh nha.Cột C là
.Range("C:C").Delete
Như vầy mới đúng yêu cầu
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom