Thử: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
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
Do thực hiện trên cùng 1 sheetTô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.
Dài quá, dư biến KDo thực hiện trên cùng 1 sheet
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
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:Dài quá, dư biến K
Hoặc làm trực tiếp trên range: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
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
.Range("D2").Resize(i) = b
.Range("D2").Resize(i-1) = b
Cám ơn anh nha.Cột C làDài quá, dư biến K
Hoặc làm trực tiếp trên range: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
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
Thực ra bài toán của bạn chỉ cần Code Sub Test2 như của bạn phuocam là được rồi & dễ hiểu.Cám ơn anh nha.Cột C là
.Range("C:C").Delete
Như vầy mới đúng yêu cầu