目前,我正在处理具有300种单位类型数据的Excel工作表。我正在尝试获取每行单独的数据并将其粘贴到单独的一张纸上。我创建了一个代码来创建工作表,并命名了每个单独的单元号。在我的代码中,这是Sub addsheet(),它添加工作表并为名为“ Unit#_Type”的工作表中的特定单元号命名。
我在Sub DataImport中遇到问题。就像我之前说过的,我试图用名为“ Unit #_Type”的工作表中的数据填充子Addsheets创建的工作表。我想获取A1-AD1行并将其放在Sub addsheets创建的第一张工作表中。然后,我想获取A2-AD2行并将其放在Sub addsheet创建的下一张工作表上。有没有办法让我接下来的For循环做到这一点?有没有更简单的方法可以完成我想做的事情?
Function SheetCheck(sheet_name As String) As Boolean
Dim ws As Worksheet
SheetCheck = False
For Each ws In ThisWorkbook.Worksheets
If ws.Name = sheet_name Then
SheetCheck = True
End If
Next
End Function
Sub Addsheet()
Dim sheets_count As Integer
Dim sheet_name As String
Dim i As Integer
Dim j As Long
sheet_count = Range("A2:A7").Rows.Count
For i = 1 To sheet_count
sheet_name = Sheets("Unit #_Type").Range("A2:A4").Cells(i, 1).Value
If SheetCheck(sheet_name) = False And sheet_name <> "" Then
Worksheets.Add().Name = sheet_name
End If
Next i
End Sub
Sub DataInport()
Dim i As Long
Dim j As Long
Dim k As Long
For i = 16 To ThisWorkbook.Sheets.Count
For j = 2 To 6
Sheets("Unit #_Type").Range("Aj:ADj").Copy
Next j
Sheets(i).Range("B1").PasteSpecial Transpose:=True
Next i
Application.CutCopyMode = False
End Sub`
答案 0 :(得分:0)
如果您的目标是每次仅获取下一行并将其粘贴到另一张纸上,我认为您不需要在这里使用嵌套循环。这样的事情可能会起作用:
Sub DataInport()
Dim i As Long
Dim j As Long
j = 2
For i = 16 To ThisWorkbook.Sheets.Count
Sheets("Unit #_Type").Range("A" & j & ":AD" & j).Copy
Sheets(i).Range("B1").PasteSpecial Transpose:=True
j = j + 1
Next i
Application.CutCopyMode = False
End Sub