`
qqt31
  • 浏览: 2575 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

VBA根据某列值分割多Sheet

阅读更多
Sub 分割()
    Dim arr, sht As Worksheet, temp As String, i As Long, k, t, rng1 As Range

    Dim x, xx As String
    Dim x1, x2, y As Integer
   
    x = UCase(InputBox("", "请输入标题列"))
    y = InputBox("", "请输入标题行")
    xx = UCase(InputBox("", "请输入最后一列"))
   
    x1 = Asc(x) - 64
    x2 = Asc(xx) - 64
   
   
    Set rng1 = Range("A1:" & xx & y)
    Dim z As Range
    Set z = Range("" & x & 65536)
   
   
    arr = Range("A" & y + 1 & ":" & x & z.End(xlUp).Row).Value '减去黄色区域
    Application.ScreenUpdating = False
    With CreateObject("scripting.dictionary")
        For i = 1 To UBound(arr)
            temp = arr(i, x1)
            If temp <> "" Then
                If Not .exists(temp) Then
                    .Add temp, Range("a" & i + y).Resize(1, x2)
                Else
                    Set .Item(temp) = Union(.Item(temp), Range("a" & i + y).Resize(1, x2))
                End If
            End If
        Next i
        k = .keys
        t = .Items
        On Error Resume Next
        For i = 0 To .Count - 1
            If Len(Sheets(k(i)).Name) > 0 Then '判断工作表存在
                If Err.Number = 9 Then '如果不存在则添加
                    Sheets.Add(after:=Sheets(Sheets.Count)).Name = k(i)
                  
                End If
            End If
            With Sheets(k(i))
                .Cells.Clear
                rng1.Copy .Range("a1") '把表头的前两行也一同复制到新工作表中
                t(i).Copy .Range("a" & y + 1)
               
            End With
        Next
    End With
    Application.ScreenUpdating = True
    MsgBox "处理完毕"
End Sub
分享到:
评论

相关推荐

    Excel VBA 操作 拆分当前Excel表中 / 所选取文件夹所有子文件中 所有sheet保存到对应文件夹路径中拆分表内

    在Excel VBA编程中,有时候我们需要对大型工作簿进行管理和优化,这可能涉及到将一个大文件拆分成多个小文件,每个文件对应原工作簿中的一个单独工作表。这个任务可以通过编写VBA宏来实现,从而自动化整个过程。下面...

    excel导出功能,保存到不同sheet页中

    1. VBA编程:通过编写Visual Basic for Applications (VBA)宏,可以实现更复杂的自动化导出功能,例如批量创建Sheet页并将特定数据自动导入。 2. Power Query:利用Excel的Power Query功能,可以从不同源导入数据,...

    将超大excel文件按sheet分成多个excel小文件

    在Excel处理中,有时我们可能遇到非常大的工作簿文件,包含多个工作表(sheet),这样的文件不仅占用大量存储空间,而且在本地计算机上打开、编辑或传输时可能会遇到困难,甚至无法正常操作。针对这种情况,一种有效...

    VBA精华代码50例

    13. **模块和库**:将常用功能封装在模块中,方便在多个工作簿中重复使用,还可以引用外部的VBA库,如Microsoft Excel Object Library。 14. **数据连接**:使用ADO(ActiveX Data Objects)与数据库进行交互,读取...

    Excel VBA实例,很实用的哦

    - `Range`对象可以扩展到多行多列,如`Range("A1:C10")`,一次写入多个单元格。 - 可以使用`For`循环遍历数组并将数据逐一写入Excel。 7. **错误处理**: - VBA中的`On Error`语句用于处理可能出现的错误,例如...

    办公技能-使用ExcelVBA代码实现表格拆分功能-嘉为科技.pdf

    如果希望根据某一列的数据(如特定值或范围)进行拆分,可以类似地编写VBA代码。例如,我们可以创建新工作表并只保留满足条件的行。 ```vba Sub SplitByColumn() Dim ws As Worksheet Dim newWs As Worksheet ...

    VBA语句集100句.rar_Excel VBA_VBA语句集100句_VBa

    2. **数据类型**:VBA支持多种数据类型,如Integer(整数)、Double(双精度浮点数)、String(字符串)、Boolean(布尔值)、Date(日期)等。 3. **赋值语句**:使用`=`符号进行赋值,如`myVariable = 10`。 4. ...

    在excel的一个sheet中导出大批量数据>20万

    例如,可以按行或列设置分隔,然后分别保存为多个工作簿。 2. **利用VBA宏**:通过编写Visual Basic for Applications (VBA)宏,可以自定义数据导出过程,提高效率。VBA宏允许用户执行批处理操作,如循环遍历数据并...

    第9章 文件操作代码【超实用VBA】

    首先,它获取`Sheet2`的使用范围的行数和列数,然后创建一个二维数组`Arr`来存储这些数据。接着,清空文件,打开文件以便输出,并遍历数组,将每个单元格的值转换为字符串并添加到输出字符串`Str`中,用逗号分隔。...

    求算图幅号的ExcelVBA程序

    2. **百、十、一位编码**:根据经纬度的具体数值,计算出百位、十位和个位上的编码值,这些值进一步组合成最终的图幅号。 3. **循环处理**:通过循环遍历Excel表格中的每一行地理坐标,应用上述算法,逐个计算并...

    Excel_VBA常用技巧_第02章[1].range(单元格)对象.doc

    ### Excel VBA常用技巧之Range(单元格)对象详解 #### 第二章 Worksheet(工作表)对象 在Excel VBA编程中,对于工作表的操作占据了非常重要的地位。无论是数据处理还是自动化任务,都需要通过各种方法来引用和操作...

    导出文本文件的数据到Excel-VBA源码.rar

    3. **读取文本文件**:通过循环读取每一行,然后根据分隔符(如逗号或制表符)分割数据。例如: ```vba Do Until file.AtEndOfStream line = file.ReadLine data = Split(line, ",") ' 处理data数组 Loop ```...

    合并、拆分Excel文件

    使用VBA开发了合并、拆分EXCEL的小工具。 合并:将多个表头相同的excle文件(或者多sheet页),合并为一个汇总文件。 拆分:将一个汇总文件,按照某一列拆分为多个表头相同的excel文件。

    Excel-VBA宏编程实例源代码-以文本单位导入文本文档.zip

    例如,如果文本文件是以逗号分隔,我们可以根据逗号将每一行数据分解为多个单元格。 4. **将数据写入工作表**:读取文本文件后,VBA宏可以将数据写入Excel工作表的特定单元格。这通常通过Range对象的Value属性完成...

    Excel-VBA宏编程实例源代码-将指定文档中的内容输入到Excel中.zip

    - VBA提供了丰富的字符串处理函数,如`Split`用于分割字符串,`Replace`用于替换特定字符,`InStr`用于查找子串位置等。 - 这些函数可以帮助清洗和格式化从Word导入的数据。 7. **自动化流程**: - 通过循环结构...

    EXCEL百宝箱8.0终极版

    【禁止重复值】:可以指定某列不允许重复,指定后该列输入重复值时会自动提示 【标示重复值】:将重复出现的数据用不同颜色分别标示出来,不同重复值用不同颜色 【删除空白单元格所在行】:输入1则删除空白行(整行...

    Excel百宝箱8.0

    【生成系统图标】【获取内置命令】【修复Excel】【破解VBA密码】【删除空单元格】【转置选区】【按列倒置】【按列倒置】【字母大小写转换】【小写金额转大写】【大写金额转小写】【区域数据加密】【多区域复制】【按...

    Sub combineSub

    - 使用`If...Then`结构来处理不同类型的`matchType`,并根据类型设置`listSheet.Cells(fromRow,3)`的值。 - 对`oddsNum`字段进行特殊处理,如果其中包含特定字符,则进行字符串分割并重新组合。 5. **分数处理**...

Global site tag (gtag.js) - Google Analytics