1. vba根据条件拆分excel
这个用VBA来做就很简单了,之前做过一个小例子,虽然表格结构和题主给的不相同,但是需求和结果是差不多的:
这个例子的效果也是,讲一张表种的数据,按照不同的品种,拆分到数个表格当中,所拆分的表格结构是相同的。
用VBA实现自动化的好处还在于,方便以后调用,可谓一劳永逸。此外,拓展性也很强,题主不是要打印吗,用VBA也可以实现拆分后的自动打印或者发送邮件之类的。大大减少工作量,还能提高准确率。
2. Excel按条件拆分表格vba
要将一个excel工作薄多张工作表拆分成多个对应的工作簿,可以使用vba实现:
1、使用alt+f11 打开vbe编辑器,鼠标右键,插入模块
2、在生成的模块区域输入代码:
3、代码:
Sub test() Application.ScreenUpdating = False '关闭刷屏 For Each sht In Sheets '遍历每张工作表 sht.Copy '工作表copy后,生成新的文件 With ActiveWorkbook .SaveAs ThisWorkbook.Path & "\" & sht.Name & ".xlsx" '将新生成的文件保存 .Close False '关闭文件 End With Next sht Application.ScreenUpdating = TrueEnd Sub
4、执行效果
3. VBA拆分
你在表2 写一个VBA程序,用公共变量将表1的内容读出,填入表2 中即可 。
或你将你的表发至网盘中,给你做一做。4. vba多条件分类汇总
1. VBA 局部变量和全局变量
2. VBA 变量赋值
3. VBA 选中一个Sheet
4. VBA 获取单元格内容
5. VBA 获取单元格行号和列号
6. VBA 单元格赋值
7. VBA Range获取单元区间
For Each cellVal In ThisWorkbook.Sheets(1).Range(startColName & rowNum & ":" & endColName & rowNum)
'cellVal即单元格的内容
'cellVal.Column 列号
'cellVal.Row 行号
Next
8. VBA 使用Find搜索单元格内容
在使用Find的时候经常会遇到两个问题: 1. VBA Find搜索失败,抛出异常 使用VBA中Find搜索内容,当搜索失败时,会抛出异常导致程序无法正常处理 解决方法如下,使用Rng存储,然后用If Not Rng Is Nothing Then判断。
Set Rng = ThisWorkbook.Sheets(1).Range(colName & firstRow & ":" & colName & lastRow).Find(styleColor)
If Not Rng Is Nothing Then
’可以找到(这里处理)
End If
Find循环破除
使用VBA中Find搜索内容,会出现循环搜索的问题,此时,可以使用判断是否回到第一次作为判断,断开循环。
Set Rng = ThisWorkbook.Sheets(1).Range(colName & firstRow & ":" & colName & lastRow).Find(styleColor)
If Not Rng Is Nothing Then
rowNum = Rng.Row
firstMatchRow = rowNum
While rowNum
' 这里写处理逻辑
' 继续搜索单店指定店铺
Set Rng = ThisWorkbook.Sheets(1).Range(colStyleColor & firstRow & ":" & colStyleColor & lastRow).Find(styleColor, after:=Range(colStyleColor & rowNum))
If Not Rng Is Nothing Then
rowNum = Rng.Row
End If
' 如果搜索回到第一个,退出函数 '
If firstMatchRow = rowNum Then
rowNum = fasle
End If
Wend
End If
9. VBA While循环退出循环
While i < 100
'这里处理逻辑 '
If i = 20 Then
i = 100 '利用While的破坏条件退出循环 '
End if
Wend
10. VBA 字典类型使用
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
If dic.exists(key) = False Then
dic.Add key, val
End If
' 循环读取字典内容 '
For Each key In dic
val = dic.Item(key)
Next
' 移除一个内容 '
dic.Remove(key)
' 移除全部内容 '
dic.RemoveAll
11. VBA For 循环
For i = 1 To 10
MsgBox i
Next i
12. VBA 获取最大行号
13. VBA If ElseIf
Name = "vba"
If Name = "vba" Then
MsgBox "Yes"
ElseIf Name = "xxx" Then
MsgBox "No"
Else
MsgBox "X"
End If
14. VBA 函数定义
' 1~num求和 '
Function getSum(num)
Sum = 0
For i = 1 To num
Sum = Sum + i
Next i
' 返回值为函数同名变量赋值 '
getSum = Sum
End Function
15. VBA 函数返回值
VBA中的字典无法作为返回值,此时需要借助全局变量传递返回值
Public tmpDic As Object
Function test()
Set tmpDic = CreateObject("Scripting.Dictionary")
tmpDic.Add "a", 5
End Function
16. VBA 退出Sub或Function
使用exit sub或exit function即可
17. VBA 注释
VBA使用单引号作为注释
18. 复制Sheet
19. 添加Sheet
Worksheets.Add().Name = "Sheet xxx"
5. vba的分隔符
建一个文件夹,把目标txt文件和excel文件放入其中,在excel的宏编辑器中写入以下代码,有些地方可根据你的实际情况做相应改动:
Sub import_from_txt()
Dim file_name As String, my_path As String
Dim lines, cols
Dim i As Integer, j As Integer, k As Integer, q As Integer
Application.ScreenUpdating = False
Worksheets("Sheet1").Range("A1:Z65536").ClearContents
my_path = ThisWorkbook.Path
file_name = "test.txt"
'读取文件
Open my_path & "\" & file_name For Input As #1
lines = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
Close #1
k = UBound(lines) + 1 '文件的行数
'遍历每一行
For i = 1 To k
cols = Split(lines(i - 1), ",") '以逗号作为分隔,将每行字符分割,分隔符可根据实际情况自己修改
q = UBound(cols) + 1 '分隔成的列数
For j = 1 To q '遍历该行的每一列
Worksheets("Sheet1").Cells(i, j) = cols(j - 1) '输出到表格中
Next
Next
MsgBox ("文件" & file_name & "读取完成,共" & k & "行")
Application.ScreenUpdating = True
End Sub
6. vba 字符串拆分
1.将表格根据首行字段中的某一个字段拆分为多个sheet
2.根据sheet名称,将1个Excel文件拆分为多个Excel文件
它们的操作与都非常的简单,点点鼠标即可轻松搞定,下面就让我们来学下吧
一、拆分为多个sheet
将1个表格拆分为多个sheet,最简单的方法就是利用数据透视表,假设在这里我们想要按照省份来拆分表格
1.创建透视表
首先我们点击表格中的任何一个单元格,然后在新工作表中插入一个数据透视表,随后在右侧的字段列表中按照顺序勾选字段,字段勾选完毕后点击【设计】将【分类汇总】设置为不显示,【总计】设置为对行和列禁用,【报表布局】设置为以表格的形式显示与重复所有标签,这样的话就会得到一个与数据源一模一样的表格
2.拆分透视表
在这里我们想要根据省份这个字段来拆分数据,所以在右侧的字段列表中将【省份】这个字段放在筛选区域,随后点击【数据透视表设计】在最左侧找到【选项】然后点击【显示报表筛选页】然后点击确定,这样的话就会根据省份批量的新建sheet
3.修改拆分表
拆分之后的表格它是数据透视表,表头中会带有【求和项:】你如果不影响的话,这一步就不用做了,如果觉得影响比较大,我们可以将表格中的【求和项:】替换掉。
首先选择第一个sheet名称,然后按住shift键再选择最后一个sheet名称,这样的话就会批量选中需要设置的表格,我们在左上角复制整个表格,然后把它粘贴为数值,删除前2行数据,然后Ctrl+H调出替换,替换为设置为求和项:然后点击全部替换这样的话就会将表头中的求和项:删除掉,至此就拆分完毕了
二、拆分为多个Excel文件
想要把1个Excel拆分为多个Excel文件,最简单的方法就是利用vba代码,首先我们复制下面这一段代码
7. excel按条件拆分
E1=0(必须填0)E2=ROUNDUP(D2/10,0)+E1下拉至E6G2=IF(ROW(G1)>SUMPRODUCT(ROUNDUP($D$2:$D$6/10,0)),"",INDEX(A$2:A$6,MATCH(ROW(G1)-1,$E$1:$E$5,1)))向右复制到I2J2=IF(ROW(G1)>SUMPRODUCT(ROUNDUP($D$2:$D$6/10,0)),"",IF(INDEX(D$2:D$6,MATCH(ROW(J1)-1,$E$1:$E$5,1))-(COUNTIF(I$2:I2,I2)-1)*10>=10,10,MOD(INDEX(D$2:D$6,MATCH(ROW(J1)-1,$E$1:$E$5,1)),10)))把G至J列第二行公式向下复制到需要处。
8. vba分隔符分列
首字2字1要复制的内容的地方插入分隔符 - 分节符 - 连续,然后复制WORD1。字2,如果它被插在中间,它是建议的插入位置之前和之后插入“分节
9. vba按条件拆分工作表
你这是一套组合拳啊,跟前面都是连续剧。我当时学函数和VBA也是不喜欢机械操作。。。
动动脑,手就轻松。其实这个拆分,用正版的Excel数据透视表一下,然后分别双击一下就可以生成对应的工作表了。目前wps还没开发此功能,如果安装了VBA的话,可以用代码实现。
- 相关评论
- 我要评论
-