簡體   English   中英

如何在VBA Excel中初始化我的計數器

[英]how to initialise my counter in vba excel

我的vba項目有問題。 我的工作簿有4張紙(草稿,cky,co和bey),“草稿”中有我的所有數據,我想重新組織它們。“草稿”表的“ G”列包含值(cky,coy和bey)。我希望宏通過列並復制所有具有相同值的單元格,然后將其粘貼到從單元格(A2)開始的相應工作表中,例如:我希望宏程序復制所有數據具有“ cky”並將其粘貼到單元格A2中的“ cky”表中,依此類推/在下面,您可以看到我到目前為止所做的事情:

    Sub MainPower()

Dim lmid As String
Dim srange, SelData, ExtBbFor As String
Dim lastrow As Long
Dim i, j, k As Integer

    lastrow = ActiveSheet.Range("B30000").End(xlUp).Row
    srange = "G1:G" & lastrow
    SelData = "A1:G" & lastrow



    For i = 1 To lastrow
        If InStr(1, LCase(Range("E" & i)), "bb") <> 0 Then
            Range("G" & i).Value = Mid(Range("E" & i), 4, 3)

            ElseIf Left(Range("E" & i), 1) = "H" Then
                Range("G" & i).Value = Mid(Range("E" & i), 7, 3)
            Else
                Range("G" & i).Value = Mid(Range("E" & i), 1, 3)
        End If
    Next i
'Sorting data
    Range("A1").AutoFilter
    Range(SelData).Sort key1:=Range(srange), order1:=xlAscending, Header:=xlYes

'Spreading to the appropriate sheets
    j = 1
    For i = 1 To lastrow


        If Range("G" & i).Value = "CKY" Then


            Sheets("CKY").Range("A" & j & ":E" & j).Value = Sheets("Draft").Range("C" & i & ":G" & i).Value

            ElseIf Range("G" & i).Value = "BEY" Then

            Sheets("BEY").Range("A" & j & ":E" & j).Value = Sheets("Draft").Range("C" & i & ":G" & i).Value

            ElseIf Range("G" & i).Value = "COY" Then

            Sheets("COY").Range("A" & j & ":E" & j).Value = Sheets("Draft").Range("C" & i & ":G" & i).Value

        End If
        j = j + 1

    Next i


End Sub

謝謝您的幫助

在For循環中使用此重構代碼,它應該對您更好:

For i = 1 To lastrow

    Select Case Sheets("Draft").Range("G" & i).Value

        Case is = "CKY","COY","BEY"

            Dim wsPaste as Worksheet
            Set wsPaste = Sheets(Range("G"& i).Value)

            Dim lRowPaste as Long
            lRowPaste = wsPaste.Range("A" & .Rows.COunt).End(xlup).Offset(1).Row

            wsPaste.Range("A" & lRowPaste & ":E" & lRowPaste).Value = _
             Sheets("Draft").Range("C" & i & ":G" & i).Value

     End Select

Next i

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM