vba 使用高级筛选,将此工作薄sheet1表A列中的不重复值筛选出放在另一个工作薄sheet1r的A列里。
答案:3 悬赏:40 手机版
解决时间 2021-02-21 12:23
- 提问者网友:嗝是迷路的屁
- 2021-02-20 14:43
前提是,此工作薄sheet1表A列中的值很多,不知道都有些什么。只要把不重复的提出来就可以。结果必须要放到新的工作薄中。请高手老师不吝赐教!
最佳答案
- 五星知识达人网友:未来江山和你
- 2021-02-20 15:38
Function MyFunction()
Dim I As Long, J As Long
With Workbooks.Add(xlWBATWorksheet) '新建表
For I = 1 To Range("A65536").End(xlUp).Row 'A列范围
For J = 1 To .Sheets(1).Range("A65536").End(xlUp).Row '新表 A 列范围
If Range("A" & I).Value = .Sheets(1).Range("A" & J).Value Then Exit For '有相等则退出
Next
If J > .Sheets(1).Range("A65536").End(xlUp).Row Then _
.Sheets(1).Range("A" & J).Value = Range("A" & I).Value '没有相等的则复制该值
Next
.Sheets(1).Range("A1").Delete xlUp '删除A1空单元格
.SaveAs ThisWorkbook.Path & "\" & "Newbook.xls" '重命名并保存
End With
End Function
Dim I As Long, J As Long
With Workbooks.Add(xlWBATWorksheet) '新建表
For I = 1 To Range("A65536").End(xlUp).Row 'A列范围
For J = 1 To .Sheets(1).Range("A65536").End(xlUp).Row '新表 A 列范围
If Range("A" & I).Value = .Sheets(1).Range("A" & J).Value Then Exit For '有相等则退出
Next
If J > .Sheets(1).Range("A65536").End(xlUp).Row Then _
.Sheets(1).Range("A" & J).Value = Range("A" & I).Value '没有相等的则复制该值
Next
.Sheets(1).Range("A1").Delete xlUp '删除A1空单元格
.SaveAs ThisWorkbook.Path & "\" & "Newbook.xls" '重命名并保存
End With
End Function
全部回答
- 1楼网友:夜风逐马
- 2021-02-20 17:02
可以用vba实现,速度快,精度高,按照你的要求的vba代码如下:
option explicit
sub 告诉匹配()
dim i, k, v, arr, db
'扫描sheet1表,建立字典
arr = sheets("sheet1").range("a1").currentregion
set db = createobject("scripting.dictionary")
for i = 1 to ubound(arr)
k = trim(arr(i, 1))
v = arr(i, 2)
db(k) = v
next i
'扫描sheet2表,填写b列
sheets("sheet2").select
for i = 1 to sheets("sheet2").usedrange.rows.count
k = trim(cells(i, 1))
v = db(k)
cells(i, 1) = v
next i
end sub
- 2楼网友:笑迎怀羞
- 2021-02-20 16:27
用VBA编写代码的思路与方法就是:
1)设置sheet1表单元格为“A1”,即行号为1;
2)读取sheet1表当前单元格数据
3)如果数据为空,就结束,否则执行4)
4)到sheet1r的A列里,从第1行开始到最后1行,一一比较;
如果不相同,就不复制到最后一行的下一个单元格;
如果相同,就结束比较,不复制
5)sheet1表当前行号+1
6)执行2)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯