嵌套循环问题

时间:2020-09-14 15:10:42

标签: excel vba

目前,我正在处理具有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`

1 个答案:

答案 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