Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel 2010:从第2页复制单元格块>;表1基于标准_Vba_Excel - Fatal编程技术网

Vba Excel 2010:从第2页复制单元格块>;表1基于标准

Vba Excel 2010:从第2页复制单元格块>;表1基于标准,vba,excel,Vba,Excel,早上好 我尝试在excel 2010中执行以下操作: 搜索表1,A栏中的“测试A”或“测试b”等。如果找到“测试A”,则搜索表2,A栏中所有出现的“测试A”,并将每行的表2 col b->p复制到表1 col b中,从表1中找到初始“测试A”的位置开始,对表2中找到的每行向下递增 第1页: A列: 测试a xxxxxx xxxxx xxxx 测试b xxxxxx xxxxx xxxx 测试c xxxxxx xxxxx xxxx 第2页: A、B、C、D列,p列 测试a,1,2,3,4 测试

早上好

我尝试在excel 2010中执行以下操作:

搜索表1,A栏中的“测试A”或“测试b”等。如果找到“测试A”,则搜索表2,A栏中所有出现的“测试A”,并将每行的表2 col b->p复制到表1 col b中,从表1中找到初始“测试A”的位置开始,对表2中找到的每行向下递增

第1页:

A列:

  • 测试a
  • xxxxxx
  • xxxxx
  • xxxx

  • 测试b

  • xxxxxx
  • xxxxx
  • xxxx

  • 测试c

  • xxxxxx
  • xxxxx
  • xxxx
第2页:

A、B、C、D列,p列

  • 测试a,1,2,3,4
  • 测试a、5、6、7、8
  • 测试a、a、b、c、d
  • 测试a、e、f、g、h

  • 测试b,1,2,3,4

  • 测试b,5,6,7,8
  • 测试b,a,b,c,d
  • 测试b、e、f、g、h

预期结果:

  • 测试a,1,2,3,4
  • xxxxxx、5、6、7、8
  • xxxxx,a,b,c,d
  • xxxx,e,f,g,h
由于从未做过任何excel/vb编码,我甚至都很难开始

我所能做的就是编写一个高级代码:

For search criteria 'test a|test b ..'
 if sheet 1, col A equal to 'criteria' (save row where found)
   if sheet2, col A equal to 'criteria'
     copy sheet2, col b->col p, row (where 'criteria' found) > sheet1, Col B, row (where criteria found in sheet1), incrementing row downwards as we go.
非常感谢关于如何实现这一点的一些指导


非常感谢

这里有一个大概的草图,可以让你开始。使用嵌套循环结构,因此效率不太高,但提供了基本功能,应允许您进行自定义以更好地适应数据

子搜索条件()
将ws1设置为工作表
设置ws1=Sheet1
将ws2设置为工作表
设置ws2=Sheet2
将ws1RowCounter设置为整数
ws1RowCounter=2
将ws2RowCounter设置为整数
ws2RowCounter=2
将计数器设置为整数
内部计数器=0
Dim WS1选择为字符串
Dim WS2选择为字符串
暗拷贝范围作为范围
当ws1.Cells(ws1RowCounter,1)”时执行此操作
'在ws2中查找此值
ws1Select=ws1.单元格(ws1RowCounter,1)
'在ws2范围内循环,查找匹配项
在ws2.Cells(ws2RowCounter,1)运行时执行此操作“
ws2Select=ws2.Cells(ws2RowCounter,1)
如果InStr(ws1Select,ws2Select)>0,则
'如果找到匹配项,则复制范围
设置copyRange=Range(ws2.Cells(ws2RowCounter,2),ws2.Cells(ws2RowCounter,16))
copyRange.copy
设置copyRange=Range(ws1.Cells(ws1RowCounter+innerCounter,2)_
ws1.单元(ws1RowCounter+innerCounter,16))
copyRange.paste特殊xlPasteAll
innerCounter=innerCounter+1
如果结束
ws2RowCounter=ws2RowCounter+1
环
ws1RowCounter=ws1RowCounter+1
ws2RowCounter=1
内部计数器=0
环
端接头

Ben,非常感谢上述内容,它给了我所需要的支持!从未在VB中编写过代码,这是一个学习曲线!。除了这些部分之外,您的示例运行得很好:Set copyRange=Range(ws2.Cells(…),我最终使用Set copyRange=ws2.Range(ws2.Cells(…)。。。