>

루프가 하나의 열에 데이터 열을 던져서 동일한 시트의 다른 열에있는 데이터와 일치하는 일부 코드를 작성하려고합니다. 두 개의 데이터 포인트가 일치하면 해당 데이터가 첫 번째 데이터 포인트 옆에 복사됩니다. 그것을 넣는 가장 간단한 방법은 if ​​루프 안에 if 문 안에 if 문이 있다는 것입니다. 문제는 내가 올바르게 반복하는 동안이 아니거나 데이터가 올바르게 할당되지 않았거나 스크립트가 데이터를 쓰거나 열로 작성하려고하는 열에 데이터를 쓰지 않는 방식이라고 생각합니다. 이 스크립트를 작동시키는 데 도움이 필요하면 아래 코드를 참조하십시오.

Sub s()
    Dim i As Integer
    Dim pointer As Integer
    pointer = 1
    Do While ThisWorkbook.Sheets("MPACSCodesedited").Cells(pointer, 13) <> ""
        For i = 1 To 305
            If ThisWorkbook.Sheets("MPACSCodesedited").Cells(i, 1).Value = 
        ThisWorkbook.Sheets("MPACSCodesedited").Cells(pointer, 13).Value Then
                ThisWorkbook.Sheets("MPACSCodesedited").Cells(pointer, 14).Value = ThisWorkbook.Sheets("MPACSCodesedited").Cells(i, 2).Value
                ThisWorkbook.Sheets("MPACSCodesedited").Cells(pointer, 15).Value = ThisWorkbook.Sheets("MPACSCodesedited").Cells(i, 3).Value
            End If
            pointer = pointer + 1
        Next i
    Loop
End Sub

  • 답변 # 1

    와이즈 비즈 이동  For 루프 외부

    pointer = pointer + 1
    
    

    <시간>

    하지만 변형 배열을 사용하는 의견에 명시된 바와 같이 더 빠릅니다.

    Sub s()
        Dim i As Long
        Dim pointer As Long
        pointer = 1
        Do While ThisWorkbook.Sheets("MPACSCodesedited").Cells(pointer, 13) <> ""
            For i = 1 To 305
                If ThisWorkbook.Sheets("MPACSCodesedited").Cells(i, 1).Value = ThisWorkbook.Sheets("MPACSCodesedited").Cells(pointer, 13).Value Then
                    ThisWorkbook.Sheets("MPACSCodesedited").Cells(pointer, 14).Value = ThisWorkbook.Sheets("MPACSCodesedited").Cells(i, 2).Value
                    ThisWorkbook.Sheets("MPACSCodesedited").Cells(pointer, 15).Value = ThisWorkbook.Sheets("MPACSCodesedited").Cells(i, 3).Value
                End If
            Next i
            pointer = pointer + 1
        Loop
    End Sub
    
    

    Sub s() With ThisWorkbook.Worksheets("MPACSCodesedited") lastrw = .Cells(.Rows.Count, 13).End(xlUp).Row Dim outarr As Variant outarr = .Range(.Cells(1, 13), .Cells(.Cells(.Rows.Count, 13).End(xlUp).row,15)).Value Dim SearchArr As Variant SearchArr = .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count,1).End(xlUp).Row, 3)) Dim i As Long For i = LBound(outarr, 1) To UBound(outarr, 1) Dim j As Long For j = LBound(SearchArr, 1) To UBound(SearchArr, 1) If SearchArr(j, 1) = outarr(i, 1) Then outarr(i, 2) = SearchArr(j, 2) outarr(i, 3) = SearchArr(j, 3) Exit For End If Next j Next i .Range(.Cells(1, 13), .Cells(.Rows.Count, 14).End(xlUp)).Value = outarr End With End Sub

관련 자료

  • 이전 스와 거 Nginx 플라스크 -restplus
  • 다음 android - 오류/웹 콘솔 - catch되지 않은 typeerror : http://myoutubecom/:844에서 null의 'getitem'메소드를 호출 할 수 없습니다