我正在将数据从一个工作表复制到另一个工作表,从源范围(Q5:AIxxx)到目标范围(C6:Uxxx)
我的VBA代码以单元格开头并循环到列的末尾以完成复制该列的数据:
Set s = Worksheets("Source")
Set d = Worksheets("Destination")
Dim i As Integer, j As Integer
j = 6
For i = 5 To 1500
If s.Cells(i, 1).Value = "a" Or s.Cells(i, 1).Value = "b" Then
d.Cells(j, 3).Value = s.Cells(i, 17).Value
j = j + 1
End If
Next i
我有> 20列要移动,有没有办法可以一次复制行?像这样的东西:
d.Cells(j, 3:21).Value = s.Cells(i, 17:35).Value
目前,我必须指定每一栏:
d.Cells(j, 3).Value = s.Cells(i, 17).Value 'column 1
d.Cells(j, 4).Value = s.Cells(i, 18).Value 'column 2
d.Cells(j, 5).Value = s.Cells(i, 19).Value 'column 3
etc
答案 0 :(得分:1)
您可以使用:
.Range(<your_range>).copy
例如:
Activesheet.Range("A1:B10").Copy
然后只需粘贴到任何地方.Paste
ActiveSheet.Paste Destination:=Worksheets(2).Range("D1:D5")
这是vba中的内置功能。 另见复制范围:
https://msdn.microsoft.com/en-us/library/office/ff837760.aspx
对于粘贴: https://msdn.microsoft.com/en-us/library/office/ff821951.aspx
答案 1 :(得分:1)
您可以通过
来完成 d.range(d.cells(j,3), d.cells(j,21)).copy
s.range(s.cells(i,17), s.cells(i,35)).pastespecial xlvalues
答案 2 :(得分:1)
使用范围可以使它更容易一些:
$product_id = '1,2,3';
$products = explode(',', $product_id);
$data = [];
foreach($products as $products_id) {
echo $products_id.'<br><br>'; //output: 1
$query = $this->db->query('SELECT * FROM tbl_products WHERE products_id = "'.$products_id.'" AND products_status = "1"');
$count = $query->num_rows();
if($count > 0) {
$data = array_merge($data, $query->result_array());
}
}
if(empty($data)){
return 0;
}
return $data;
没有VBA,有更简单的方法可以做到这一点。例如,Power Query,PivotTable,Copy Link和Table Filter,Data选项卡&gt;来自Access等