vba按条件提取数据到另一个表格,vba提取条件数据到新表
[Excel+VBA]如何查找某个表格里的数据并将相关数据复制到另一个表中的相应列中?
用函数也可以
数组公式
=INDEX(三角网原始数据!A:A,SMALL(IF(ISNUMBER(FIND("编号",三角网原始数据!$A$1:$A$100)),ROW(三角网原始数据!$A$1:$A$100),65536),ROW(A1)))""
同时按CTRL SHFIT 回车键
出现结果,下拉公式
第3列同理
VBA的要依次循环包含了 编号或 挖方的数据
或设置 步长
复制到 sheet1表
Sub 编号()
Dim i, n
n = 2
For i = 1 To Sheets("三角网原始数据").Range("a65536").End(xlUp).Row Step 6
n = n + 1
Cells(n, "a") = Sheets("三角网原始数据").Cells(i, "A")
Cells(n, "C") = Sheets("三角网原始数据").Cells(i + 4, "A")
Next
End Sub
A3=RIGHT(INDEX(三角网原始数据!A:A,SMALL(IF(ISNUMBER(FIND("编号",三角网原始数据!$A$1:$A$100)),ROW(三角网原始数据!$A$1:$A$100),65536),ROW(A1)))"",LEN(INDEX(三角网原始数据!A:A,SMALL(IF(ISNUMBER(FIND("编号",三角网原始数据!$A$1:$A$100)),ROW(三角网原始数据!$A$1:$A$100),65536),ROW(A1)))"")-3)
C3=MID(INDEX(三角网原始数据!A:A,SMALL(IF(ISNUMBER(FIND("挖方",三角网原始数据!$A$1:$A$100)),ROW(三角网原始数据!$A$1:$A$100),65536),ROW(A1)))"",4,FIND("填方",INDEX(三角网原始数据!A:A,SMALL(IF(ISNUMBER(FIND("挖方",三角网原始数据!$A$1:$A$100)),ROW(三角网原始数据!$A$1:$A$100),65536),ROW(A1)))"")-5)
数组公式
VBA中怎样把行里数据根据某一条件写到另一张表对应的列中?
有很多方法。
写起来最简单的放到是复制粘贴或者直接赋值,声明一个变量作为自变量作为写入目标的行号。
核心是判断,用if语句判断是否符合条件,符合条件的处理。
也可以先从数据源表先读取数据到字典或者数组,然后再依次写入。
我习惯于用字典,速度比较快。其次是数组。
需要注意的是,Mac系统在用VBA时不支持字典。所以,建议用数组方式,或单元格区域赋值的方法解决。

如何用VBA编程实现将满足条件的数据填充到另一个指定的表格中?
看不出难度呀,单元格是一对一的复制,表1的B-F列右移一下到表2的C-G列,8节课在2-3、4-5之间添加一个空行,要求就是这样吗,解决此问题用公式最好,如果作为学VBA的例子,主要是练习数组使用、FOR循环使用。代码可以这样:
dim arr1,arr2,i,j,t
arr1=sheets("表1").range("a1:f10")
arr2=sheets("表2").range("c5:g14") '需要填写数据的区域
t=Array(0,3,4,0,5,6,0,7,8,9,10) '行对应关系,t(x)值表示arr2的x行数据在arr1中的行号
for i=lbound(arr2) to ubound(arr2)
if t(i)0 then
for j=lbound(arr2,2) to ubound(arr2,2)
arr2(i,j)=arr1(t(i), j+1)
next j
end if
next i
sheets("表2").range("c5:g14")=arr2 '写入数据