2016-10-27 7 views
0

VBA 코딩이 새로 생겼습니다.이 문제에 도움이 될 수 있습니까?Excel VBA 코딩

현재 AJ 열의 특정 텍스트 (예 : '체이스')를 검색하는 매크로를 만들고 있는데, 발견되면 열 A의 엔티티를 찾은 다음 다른 시트에 붙여 넣기 복사합니다. 사전에

enter image description here

enter image description here

많은 감사합니다!

+0

지금까지 가지고있는 코드를 게시하시기 바랍니다. – jsheeran

+0

아마 'VLOOKUP' 기능이 당신이 찾고있는 것입니다! – RCaetano

+0

서브 EachLoopExample 워크()를 어둡게 WS1, WS2 워크로서 세트 WS1 = 시트 ("시트 1 ') 세트 WS2 = 시트 ("Sheet3에 ") ws1.Range ("AE의 각 MyCell 들어 : AE ") MyCell.Value ="check "이면 sResult = Application.WorksheetFunction.VLookup ("check ", ws1.Cells ("AE7 : A2693 "), 31). ws2.Range ("A2 ")를 선택하십시오. 선택. 값 최종면 다음 MyCell End Sub – Irvin

답변

0

시도해보십시오. 코멘트에서 가져온 것. VLookup 수식 때문에 오류가 발생할 수 있음을 기억하십시오. VLookup 수식이 어떻게 작동하는지 살펴 봐야합니다.
=VLOOKUP(Value you want to look up, range where you want to lookup the value, the column number in the range containing the return value, Exact Match or Approximate Match – indicated as 0/FALSE or 1/TRUE).

수식에서 "확인"을 검색하고 있습니다. 당신이 얻는 오류가 당신이 찾고있는 범위에 있다면, "AE7 : A2693"을 열 AE에서 A로 검색하고 있습니다. 역으로 검색 할 수 없기 때문에 A2693 : AE7이어야합니다. 올바른 범위를 찾아 아래 코드에서 변경해야합니다.
열 31에 반환 값이 포함되어 있습니까?

Sub EachLoopExample() 

Dim ws1 As Worksheet, ws2 As Worksheet 
Dim MyCell As Range 
Dim sResult As String 

Set ws1 = Sheets("Sheet1") 
Set ws2 = Sheets("Sheet3") 
For Each MyCell In ws1.Range("AE:AE") 
    If MyCell.Value = "check" Then 

     sResult = Application.WorksheetFunction.VLookup("check", ws1.Range("B1:C3"), 1, False) 
     ws2.Range("A2").Value = sResult 
    End If 
Next MyCell 
End Sub 
+0

안녕하세요 Niclas, 위의 코딩 작업을 할 수 있도록 관리하고 지침을 주셔서 대단히 감사드립니다. 그러나 단 하나의 셀 값은 위의 코딩에 대한 조회 수 있습니다. 예를 들어 AK 열에 "chase"값을 갖는 세 개의 셀이있는 경우 첫 번째 행만 지정된 시트에 복사됩니다. 위의 코딩에서 무엇이 바뀔 수 있는지 조언 해 주시겠습니까? – Irvin

+0

데이터 범위와 함께 사용중인 정확한 VLookup 수식을 게시 할 수 있습니까? 나는 아직도 당신이 무엇을하려고하는지 잘 모르겠습니다. 이 VLookup 수식을 Sheet3에 넣고 싶습니다 (일치하는 것을보기 위해 시트를 정리하십시오).하지만 Sheet1에 무엇이 있습니까? AE는 수표입니까, AK는 추적입니까? – Niclas

+0

질문을 다시 읽으십시오. 원하는 것을 찾으려면 예를 들어 AJ 열의 'Chase'를 찾아서 발견되면 Sheet3 열의 A 열 (예 : OC_81)의 값을 반환하겠습니까? – Niclas

0
Sub EachLoop() 

Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Dim FinalRow As Integer 
Dim i As Integer 

Set ws1 = Sheet1 
Set ws2 = Sheet3 

ws1.Select 
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row 

For i = 7 To FinalRow 
    If Cells(i, 31) = "check" Then 
     Range(Cells(i, 1), Cells(i, 7)).Copy 
     ws2.Select 
     Range("A200").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats 
     ws1.Select 
    End If 

Next i 

ws2.Select 

Range("B2").Select 

Call EachLoop2 

End Sub 

Sub EachLoop2() 

Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Dim FinalRow As Integer 
Dim i As Integer 

Set ws1 = Sheet1 
Set ws2 = Sheet3 

ws1.Select 
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row 

For i = 7 To FinalRow 
    If Cells(i, 32) = "check" Then 
     Range(Cells(i, 1), Cells(i, 13)).Copy 
     ws2.Select 
     Range("H200").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats 
     ws1.Select 
    End If 

Next i 

ws2.Select 

Range("B2").Select 

Call EachLoop2_ext 


End Sub 

Sub EachLoop2_ext() 

Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Dim FinalRow As Integer 
Dim i As Integer 

Set ws1 = Sheet1 
Set ws2 = Sheet3 

ws2.Select 
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row 

For i = 3 To FinalRow 
    If Range(Cells(i, 9), Cells(i, 13)) = "" Then 
     ws2.Select 
     Range(Cells(i, 9), Cells(i, 13)).ClearContents 
     Range(Cells(i, 14), Cells(i, 20)).Cut 
     Range("I200").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats 

    Else 
     ws2.Select 
     Range(Cells(i, 9), Cells(i, 13)).ClearContents 
     Range(Cells(i, 14), Cells(i, 20)).Cut 
     Range("I200").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats 

    End If 

Next i 

ws2.Select 

Range("I2").Select 

End Sub 
+0

안녕하세요 Niclas, 저는 이미 원하는 결과를 낼 수있는 또 다른 코드를 만들었습니다. 그러나, 나는 여전히 EachLoop2_ext()에 대한 마지막 코딩에 약간의 오류가 있습니다. 오류 1004. 친절하게 확인하고 이것에 대해 살펴 보시겠습니까 ?? – Irvin

+0

범위 선택에서 열을 건너 뛰는 방법을 모르기 때문에 EachLoop과 다른 매크로 코딩을 만들었습니다. 내가 정말로 원하는 것은 범위 (셀 (1, 1)에서 복사 한 다음 셀 (i, 1)로 점프하는 것입니다. 8) to Cell (i, 13). – Irvin

+0

더 간단한 코딩을 알고 계십니까? – Irvin