首页 > 解决方案 > 在将值与设置变量进行比较后,如何使此宏创建新工作表?

问题描述

我正在编写一个宏,在将 A 列中的值与一组变量进行比较后,将数据拆分到另一张表中。

A 列包含所有工单编号。我需要宏为每个新工作订单创建一个新工作表,并将所有行复制到该工作表。它需要使用在 A 列和 B 列中找到的值的串联来命名工作表,然后将与该工单关联的所有行复制到新工作表。

在此处输入图像描述

前缀是工单。前缀 12581 应该有自己的工作表,名为 12581-4,前缀 12695 应该有自己的工作表,名为 12695-4。应将 12581 的所有行复制到名为 12581 的工作表中。

这需要一个循环,因为要筛选 39000 行。

我想我需要为工单/前缀声明一个变量,并让宏将其与 A 列中的值进行比较。如果 A 列中的值与变量不匹配,它将创建一个新工作表并复制所有与该工单关联的列。

到目前为止我的代码:

Sub SortDataByWOxyz()

Option Explicit

Dim Variable_One as Integer
Dim Variable_Two As Integer
Dim cell As Range
Dim Sht_name As String
Dim intLastRow As Integer
Dim intSuffix As Integer

Set Variable_One = 0
Set intSuffix = .Range("b2", .Range("b2").End(xlDown))

intLastRow = ActiveSheet.UsedRange.RowsCount
Set cell = Range ("a2:a" & intLastRow) 'this is so the macro
doesn't keep trying to process rows without values



For Each cell In Sheets(1).Range("A2:F39986") 'Ok, another issue
is that I can't be certain the range of every report I am applying
this macro to. Is there some way to make the range globally applicable, like:
Dim SourceRange As Range
Set SourceRange= .Range("a2", .Range("A2").End(xlDown).End(xlToRight))


If cell.Value <> Variable_One Then

'Grab prefix - suffix
'Create sheet with sheet name
'Copy data

Sheets.Add.Name = Range(a2:a" & intSuffix).value
cell.EntireRow.CopyDestination:=Sheets(Sht_name).Range("a" & cell.Row)

Else: cell.EntireRow.Copy Destination:=Sheets(Sht_name).Range("a" & cell.Row)
End If
Next

End Sub

标签: excelvbaloops

解决方案


推荐阅读