vba按条件提取数据到另一个表格,vba提取条件数据到新表

http://www.itjxue.com  2023-01-04 15:46  来源:未知  点击次数: 

[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 '写入数据

(责任编辑:IT教学网)

更多

推荐Illustrator教程文章