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编程中,有时候我们需要对大型工作簿进行管理和优化,这可能涉及到将一个大文件拆分成多个小文件,每个文件对应原工作簿中的一个单独工作表。这个任务可以通过编写VBA宏来实现,从而自动化整个过程。下面...
1. VBA编程:通过编写Visual Basic for Applications (VBA)宏,可以实现更复杂的自动化导出功能,例如批量创建Sheet页并将特定数据自动导入。 2. Power Query:利用Excel的Power Query功能,可以从不同源导入数据,...
在Excel处理中,有时我们可能遇到非常大的工作簿文件,包含多个工作表(sheet),这样的文件不仅占用大量存储空间,而且在本地计算机上打开、编辑或传输时可能会遇到困难,甚至无法正常操作。针对这种情况,一种有效...
13. **模块和库**:将常用功能封装在模块中,方便在多个工作簿中重复使用,还可以引用外部的VBA库,如Microsoft Excel Object Library。 14. **数据连接**:使用ADO(ActiveX Data Objects)与数据库进行交互,读取...
- `Range`对象可以扩展到多行多列,如`Range("A1:C10")`,一次写入多个单元格。 - 可以使用`For`循环遍历数组并将数据逐一写入Excel。 7. **错误处理**: - VBA中的`On Error`语句用于处理可能出现的错误,例如...
如果希望根据某一列的数据(如特定值或范围)进行拆分,可以类似地编写VBA代码。例如,我们可以创建新工作表并只保留满足条件的行。 ```vba Sub SplitByColumn() Dim ws As Worksheet Dim newWs As Worksheet ...
2. **数据类型**:VBA支持多种数据类型,如Integer(整数)、Double(双精度浮点数)、String(字符串)、Boolean(布尔值)、Date(日期)等。 3. **赋值语句**:使用`=`符号进行赋值,如`myVariable = 10`。 4. ...
例如,可以按行或列设置分隔,然后分别保存为多个工作簿。 2. **利用VBA宏**:通过编写Visual Basic for Applications (VBA)宏,可以自定义数据导出过程,提高效率。VBA宏允许用户执行批处理操作,如循环遍历数据并...
首先,它获取`Sheet2`的使用范围的行数和列数,然后创建一个二维数组`Arr`来存储这些数据。接着,清空文件,打开文件以便输出,并遍历数组,将每个单元格的值转换为字符串并添加到输出字符串`Str`中,用逗号分隔。...
2. **百、十、一位编码**:根据经纬度的具体数值,计算出百位、十位和个位上的编码值,这些值进一步组合成最终的图幅号。 3. **循环处理**:通过循环遍历Excel表格中的每一行地理坐标,应用上述算法,逐个计算并...
### Excel VBA常用技巧之Range(单元格)对象详解 #### 第二章 Worksheet(工作表)对象 在Excel VBA编程中,对于工作表的操作占据了非常重要的地位。无论是数据处理还是自动化任务,都需要通过各种方法来引用和操作...
3. **读取文本文件**:通过循环读取每一行,然后根据分隔符(如逗号或制表符)分割数据。例如: ```vba Do Until file.AtEndOfStream line = file.ReadLine data = Split(line, ",") ' 处理data数组 Loop ```...
使用VBA开发了合并、拆分EXCEL的小工具。 合并:将多个表头相同的excle文件(或者多sheet页),合并为一个汇总文件。 拆分:将一个汇总文件,按照某一列拆分为多个表头相同的excel文件。
例如,如果文本文件是以逗号分隔,我们可以根据逗号将每一行数据分解为多个单元格。 4. **将数据写入工作表**:读取文本文件后,VBA宏可以将数据写入Excel工作表的特定单元格。这通常通过Range对象的Value属性完成...
- VBA提供了丰富的字符串处理函数,如`Split`用于分割字符串,`Replace`用于替换特定字符,`InStr`用于查找子串位置等。 - 这些函数可以帮助清洗和格式化从Word导入的数据。 7. **自动化流程**: - 通过循环结构...
【禁止重复值】:可以指定某列不允许重复,指定后该列输入重复值时会自动提示 【标示重复值】:将重复出现的数据用不同颜色分别标示出来,不同重复值用不同颜色 【删除空白单元格所在行】:输入1则删除空白行(整行...
【生成系统图标】【获取内置命令】【修复Excel】【破解VBA密码】【删除空单元格】【转置选区】【按列倒置】【按列倒置】【字母大小写转换】【小写金额转大写】【大写金额转小写】【区域数据加密】【多区域复制】【按...
- 使用`If...Then`结构来处理不同类型的`matchType`,并根据类型设置`listSheet.Cells(fromRow,3)`的值。 - 对`oddsNum`字段进行特殊处理,如果其中包含特定字符,则进行字符串分割并重新组合。 5. **分数处理**...