ExcelのVBAの-複数のワークシートのVBAループ - answerstu - answerstu.com AiAntZoo

ExcelのVBAの-複数のワークシートのVBAループ

私は、この同じトピックに関連する7つの質問があることを認識しますが、私は私の人生のためにこれを把握することはできません。私はワークシートに利用するVBAマクロを実行しようとしています。次のようにマクロを必要とします。「データベース」の「カテゴリ」列を通って、「文字列」の値を「カテゴリ」列から「小売業界」列に対して保存します。シート“データベース”の列Jに値“小売貿易”をペーストこれは私が今持っているものです。これは正しいコードですが、別の列を通過するループのためにもう1つを追加する必要があります。私はエラーを得ません、しかし、私がそれに入るとき、コードは私が加えた\' forループ\'をスキップします:

Sub IndustryMatch()



Dim wBk As Workbook



    Set wBk = ActiveWorkbook



    Dim dbSht As Worksheet

    Set dbSht = wBk.Sheets("Database")



    Dim indSht As Worksheet

    Set indSht = wBk.Sheets("Industry")



    Dim numRowsK As String



    numRowsK = dbSht.Range("K2", dbSht.Range("K2").End(xlDown)).Rows.Count



    Dim g As Integer

    Dim k As Integer

    Dim i As Integer



    For k = 1 To numRowsK + 1                                                \' start at first row. loop Column K



        numRowsG = indSht.Range("G2", Range("G2").End(xlDown)).Rows.Count



        For g = 1 To numRowsG + 1                                            \' start at first row. loop Column G



            If (indSht.Cells(g, "G").Value = dbSht.Cells(k, "K").Value) Then \' Check if the col G value is equal to the current col K value.

                dbSht.Cells(k, "J").Value = "Retail Trade"



        numRowsI = indSht.Range("I2", Range("I2").End(xlDown)).Rows.Count



          **For i = 1 To numRowsI + 1                                            \' start at first row. loop Column I



            If (indSht.Cells(i, "I").Value = dbSht.Cells(k, "K").Value) Then \' Check if the col I value is equal to the current col K value.

                dbSht.Cells(k, "J").Value = "Services"**



            End If



            Next i



            End If



        Next g



    Next k





End Sub

1つの答え

  1. 私はあなたのCodeyouにいくつかのシートオブジェクトを宣言しました、しかし、あなたが列をつけられた列に対するポインタを使用しなかったので、あなたはあなたのコードをテストしなかったが、しかし、それはそれがokであるように見えます。カラムの両方のデータの多くのデータが列k

    Sub IndustryMatch()
    
    
    
        Dim wBk As Workbook
    
        Set wBk = ActiveWorkbook
    
    
    
        Dim dbSht As Worksheet
    
        Set dbSht = wBk.Sheets("Database")
    
    
    
        Dim indSht As Worksheet
    
        Set indSht = wBk.Sheets("Industry")
    
    
    
    '   dbSht.Activate                                                           ' no need for this
    
    
    
    '   Dim currentK As String
    
        Dim numRowsK As String
    
    
    
        numRowsK = dbSht.Range("K2", dbSht.Range("K2").End(xlDown)).Rows.Count
    
    
    
        Dim g As Integer
    
        Dim k As Integer
    
    
    
        For k = 1 To numRowsK + 1                                                ' start at first row. loop Column K
    
    '       currentK = dbSht.Cells(k, "Category").Value                          ' Save the current value in column K
    
    '       indSht.Activate                                                      ' no need for this
    
    
    
            numRowsG = indSht.Range("G2", Range("G2").End(xlDown)).Rows.Count
    
    
    
            For g = 1 To numRowsG + 1                                            ' start at first row. loop Column G
    
    
    
                If (indSht.Cells(g, "G").Value = dbSht.Cells(k, "K").Value) Then ' Check if the col G value is equal to the current col K value.
    
                    dbSht.Cells(k, "J").Value = dbSht.Cells(g, "G").Value        ' If so copy to column J
    
                End If
    
            Next g
    
        Next k
    
    End Sub
    
    

    のように列jの同じ行にコピーするように変更された場合、コードは実行するのに長い時間がかかるかもしれません

Leave a Reply

Your email address will not be published. Required fields are marked *

You can use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>