>

두 개의 Sheets, sheet1과 sheet2가 있습니다.

sheet1에 17 개의 열이 있고 sheet2에 14 개의 열이 있습니다.

sheet1의 L 열에 ID가 있습니다 (id는 D2B와 4로 시작합니다). 하나의 ID는 11 ~ 13 자리 길이이고 다른 하나는 8 자리 길이입니다. 결과적으로 D2B의 ID 만 있으면됩니다.

시트 2의 L 열에서 ID는 4로 시작하며 길이는 8 자리입니다. 또한 D2B 만 포함하는 열 A가 있습니다.

시트 1과 shee2의 열 (L)을 비교하고 있습니다. Id가 sheet1에 있으면 결과를 sheet2의 M 열에 복사합니다. D2B가있는 ID 만 필요하기 때문에 시트 2의 L 열과 M이 일치하는지 확인합니다. 일치하는 경우 N 열의 시트 2의 A 열에서 해당 ID d2B를 복사합니다.

이것이 코딩을 완료 할 때까지.

이제 ID 4로 시작하는 시트 1을 살펴보고 싶습니다. 시트 2에 D2C ID가 코어 스폰 딩되어 있음을 발견하면 시트 1의 M 열에 복사해야합니다. sheet1의 L 열 ID는 M 열에 복사해야합니다. 누구든지 나를 안내해 줄 수 있습니까, 어떻게해야합니까

아래는 코드입니다. 시트 1의 값을 확인하고 시트 2에 붙여 넣는 데 사용되었습니다.

Sub lookuppro()
Dim totalrows As Long
    Dim Totalcolumns As Long
    Dim rng As range
   totalrows = ActiveSheet.UsedRange.Rows.Count
    Sheets("Sheet2").Select
     For i = 1 To totalrows
     Set rng = Sheets("Sheet1").UsedRange.Find(Cells(i, 12).Value)
     'If it is found put its value on the destination sheet
       If Not rng Is Nothing Then
         Cells(i, 13).Value = rng.Value
          End If
         Next
End Sub

아래는 코드이며, 시트 2의 해당 D2C 번호가 일치하고 붙여 넣는 지 확인하는 데 사용되었습니다.

Sub match()
Dim i               As Long
    Dim lngLastRow      As Long
    Dim ws              As Worksheet
    lngLastRow = range("A1").SpecialCells(xlCellTypeLastCell).Row
    Set ws = Sheets("Sheet2")
    With ws

        For i = 1 To lngLastRow
            If .Cells(i, 12).Value = .Cells(i, 13).Value Then
                .Cells(i, 14).Value = .Cells(i, 1).Value
            Else
             'nothing
            End If
        Next i
    End With
End Sub


  • 답변 # 1

    이 솔루션에 danieltakeshi의 의견을 통합했습니다. 가장 효율적이지는 않지만 따르기 쉽고 동일한 목적을 달성하는 두 가지 방법을 보여줍니다. 주석은 코드에 포함되어 있습니다. 중요한 용어로, 나는 여러 개의 변수를 만들었습니다 : 각 시트 전용, 하나는 검색 기준, 2는 L 범위의 데이터 범위를 결정하기위한, 2는 각 범위의 셀을 테스트하기위한 변수, 순환하는 변수 찾기 기능으로 검색 기준을 변경하는 행과 변수

    유용한 범위의 한계를 설정하고 일치하는 정보를 테스트하여 D2C #을 시트 2에 넣은 다음 다시 시트 1에 넣었습니다. 논리가 필요하지 않고 자체 복제되기 때문에 동일한 정보를 두 번 추출하는 경우 ... 즉,이 프로그램이 어떻게 구성되어 있는지 다시 생각해보십시오.

    코드 자체 :

    Sub check_values()
    Dim sh1 As Worksheet, sh2 As Worksheet
    Dim cell As Range, cell2 As Range, lstcl As Variant, lstcl2 As Variant, rgFnd As Variant
    Dim n As Double, ID As String
    Set sh1 = ThisWorkbook.Sheets(1)
    Set sh2 = ThisWorkbook.Sheets(2)
    ID = "4"
    lstcl = sh1.Range("L10000").End(xlUp).Row
    lstcl2 = sh2.Range("L10000").End(xlUp).Row
    'comparing columns L in both sheets
    For Each cell In sh2.Range("L1:L" & lstcl2)
        For n = 1 To lstcl
            If cell = sh1.Range("L" & n) Then
                'the cell in column M next to the matching cell is equal to the 4xxxxxxx number
                cell.Offset(0, 1) = sh1.Range("L" & n)
                'the next cell in column N is equal to the D2C number in column A
                cell.Offset(0, 2) = cell.Offset(0, -11)
            End If
        Next
    Next
    'test that each cell in the first sheet corresponds to the located results in the second sheet _
    'and pastes back the D2C number, using the Range.Find function
    For Each cell2 In sh1.Range("L1:L" & lstcl)
        If Left(cell2, 1) = ID Then
            Set rgFnd = sh2.Range("M1:M" & lstcl2).Find(cell2.Value)
                If Not rgFnd Is Nothing Then
                    cell2.Offset(0, 1) = sh2.Range(rgFnd.Address).Offset(0, 1)
                End If
        End If
    Next
    
    End Sub
    
    

관련 자료

  • 이전 angular - ng2-ckeditor로 추가 플러그인을 추가하는 방법은 무엇입니까?
  • 다음 c - 입력 텍스트 GTK2 + Glade의 값을 얻는 방법