前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel学习----一键创建相应“惟一性”的文件,再筛选数据并写入相应的文件中

Excel学习----一键创建相应“惟一性”的文件,再筛选数据并写入相应的文件中

作者头像
哆哆Excel
发布2022-10-25 11:08:25
8120
发布2022-10-25 11:08:25
举报
文章被收录于专栏:哆哆Excel

Excel学习----一键创建相应“惟一性”的文件,再筛选数据并写入相应的文件中

我们的口号是:Excel会用的是excel,不会用的是电子表格

领导是要求是:有这样的一个表格,请按“模板”文件,建立面试级别的几个文件,并筛选出相应的内容填写到各工作簿中,

常规的做法是:~~~~~~~~~头痛啦

目标:是把多次多次多次“打开文件”---“复制”---“粘贴”—“关闭文件”的工作化为“一键完成”

问题1:一键复制模板文件并按D列“惟一性”命名

问题2:分别筛选出相应的数据并写入到相应文件中,如:把“初中语文1组”的相应的数据填写到“初中语文1组.xlsm”文件中,把“小学数学1组”的相应的数据填写到“小学数学1组.xlsm”文件中,

====这是开始的两个文件========

=====代码在“控制文件.xlsm”中=====

代码如下:

Sub copy_test() ‘一键按复制模板文件并按D列惟一性命名

Dim r%, i%, pa, mfile, topath, f_num

Dim arr, brr

Dim d As Object

f_num = 4

pa = ThisWorkbook.path

mfile = pa & "\模板.xlsm"

topath = pa & "\files\"

If Dir(topath) = "" Then MkDir topath

Set d = CreateObject("scripting.dictionary")

With Worksheets("sheet1")

r = .Cells(.Rows.Count, 2).End(xlUp).Row

'MsgBox r

arr = .Range(Cells(2, f_num), Cells(r, f_num))

For i = 1 To UBound(arr)

d(arr(i, 1)) = ""

Next

End With

brr = d.keys

For i = 0 To UBound(brr)

FileCopy mfile, topath & brr(i) & ".xlsm"

Next

End Sub

Sub copy_data_file()‘分别筛选并写入相应的文件

Dim r%, i%, pa, mfile, topath, Lcol, j, crr_i, f_num

Dim arr, brr, crr(1 To 100, 1 To 3)

Dim d As Object, rng As Range, wb As Workbook, this_sht As Worksheet

f_num = 4

pa = ThisWorkbook.path

topath = pa & "\files\"

Set d = CreateObject("scripting.dictionary")

Application.ScreenUpdating = False

Application.DisplayAlerts = False

Set this_sht = Worksheets("Sheet1")

With Worksheets("Sheet1")

r = .Cells(.Rows.Count, 2).End(xlUp).Row

Lcol = .Range("a1").End(xlToRight).Column

'MsgBox Lcol

arr = .Range("a2").Resize(r - 1, Lcol)

'crr = .Range("a1").rezise(r, Lcol)

For i = 2 To UBound(arr)

d(arr(i, f_num)) = ""

Next i

End With

brr = d.keys

For i = 0 To UBound(brr)

crr_i = 1

For j = 2 To UBound(arr)

If arr(j, f_num) = brr(i) Then

crr(crr_i, 1) = arr(j, 1)

crr(crr_i, 2) = arr(j, 2)

crr(crr_i, 3) = arr(j, 3)

crr_i = crr_i + 1

End If

Next j

Set wb = Workbooks.Open(topath & brr(i) & ".xlsm")

wb.Worksheets("Sheet1").Range("a2").Resize(UBound(crr,1), UBound(crr, 2)) = crr

wb.Save: wb.Close True

Erase crr

Next i

Application.DisplayAlerts = True

Application.ScreenUpdating = True

End Sub

运行~~~~成功

【一键按复制模板文件并按D列惟一性命名】按钮~~~~~成功

【分别筛选并写入相应的文件】按钮~~~~~成功

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档