发布网友 发布时间:2022-04-24 09:19
共5个回答
热心网友 时间:2023-10-09 07:12
根据图例是提取表1中B列所有不为空值的记录,这里要注意的是B列的数据不具有唯一性,所以表2中的A列不能根据表2中B列数据用INDEX+MATCH组合函数返回数据;
如图,在表2的A3输入公式:=INDEX(表1!A:A,SMALL(IF(表1!$B$3:$B$1000<>"",ROW($3:$1000),4^8),ROW(1:1)))&"",这是一个数组公式,即同时按Ctrl+Shift+Enter结束公式编辑,会自动生成一对{};
选中A3,右拉下拉填充,即可将表1中B列不为空的记录全部提取出来。
热心网友 时间:2023-10-09 07:13
为什么不直接筛选后粘贴?
公式法:
表2 B2 输入
=index(表1!$B$2:$B$1000,small(if(表1!$B$2:$B$1000<>"",row(表1!$B$2:$B$1000)-1,1001),row(A1)))
按ctrl+shift+ enter 结束公式, 鼠标移到B2右下角变实心十字下拉
A2 输入
=index(表1!A:A,match(B2,表1!B:B,0))
热心网友 时间:2023-10-09 07:13
1 以下代码复制到代码框,运行即可
Sub ZQT()
For Each AK In Range("B:B")
If AK.Value <> "" Then
Rows(AK.Row).Copy Sheets("表2").Rows(Sheets("表2").Range("A60000") _
.End(xlUp).Row + 1) '上一行的 表2 为显示数据的工作表名字,自己根据需要更改
End If: Next
End Sub
热心网友 时间:2023-10-09 07:14
看上去好像对B列做个排序筛选,然后复制、粘贴就可以实现目的。
用数据透视表也行,不过太复杂说不清楚。
用函数更复杂了,没有上下文没法说明的。
热心网友 时间:2023-10-09 07:15
我觉得不用VBA编程,只用函数和公式是做不到的。。。
手动做的话很简单,只要表一里设置自动筛选,选出现问题是非空的,然后拷到表2就行。。。要自动就没那么方便了。。。