在excel中使用VBA将目标工作表中的数据按照列间隔,分配到新的工作表中,新工作表名称按照A列数据填写
在VBA编辑器中,插入一个新的模块。右键点击项目资源管理器中的"Microsoft Excel 对象",选择"插入" -> “模块”。打开Excel文件,按下Alt + F11打开Visual Basic for Applications(VBA)编辑器。
·
-
打开Excel文件,按下Alt + F11打开Visual Basic for Applications(VBA)编辑器。
-
在VBA编辑器中,插入一个新的模块。右键点击项目资源管理器中的"Microsoft Excel 对象",选择"插入" -> “模块”。
-
在模块中,复制粘贴以下函数代码:
Sub SplitColumns()
Dim i As Long
Dim j As Long
Dim lastRow As Long
Dim sourceSheet As Worksheet
Dim targetSheet As Worksheet
Dim sourceRange As Range
Dim targetRange As Range
' 设置源工作表为活动工作簿的第一个工作表
Set sourceSheet = ActiveWorkbook.Sheets(1)
j = 1
' 从第2行开始,每隔8列进行循环
For i = 2 To 200 Step 8
' 从列A中获取新工作表的名称
Dim sheetName As String
sheetName = sourceSheet.Cells(j, 1).Value
' 将工作表名称中的无效字符替换为下划线
sheetName = Replace(sheetName, "/", "_")
sheetName = Replace(sheetName, "\", "_")
sheetName = Replace(sheetName, "?", "_")
sheetName = Replace(sheetName, "*", "_")
sheetName = Replace(sheetName, "[", "_")
sheetName = Replace(sheetName, "]", "_")
sheetName = Replace(sheetName, ":", "_")
sheetName = Replace(sheetName, "|", "_")
sheetName = Replace(sheetName, "=", "_")
sheetName = Replace(sheetName, "+", "_")
sheetName = Replace(sheetName, "<", "_")
sheetName = Replace(sheetName, ">", "_")
' 创建一个以列A中的名称为名字的新工作表
Set targetSheet = ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))
targetSheet.Name = sheetName
' 将相应的列数据复制到新工作表
lastRow = sourceSheet.Cells(Rows.Count, i).End(xlUp).Row
Set sourceRange = sourceSheet.Range(sourceSheet.Cells(1, i), sourceSheet.Cells(lastRow, i + 7))
Set targetRange = targetSheet.Range("A1")
sourceRange.Copy Destination:=targetRange
' 调整新工作表的列宽和设置第一行为粗体
targetSheet.Columns.AutoFit
targetSheet.Rows("1:1").Font.Bold = True
j = j + 1
Next i
' 清除剪贴板中的复制内容
Application.CutCopyMode = False
End Sub
按需修改

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)