excel根据条件拆分(vba根据条件拆分excel)

67 2022-10-07 19:45

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的话,可以用代码实现。


顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片