2009-12-31 2 views
0

특정 값이 발생하는 행의 인덱스를 반환하는 명령을 찾으려고합니다. 또한이 값은 비워 둘 수 없습니다.VBA에서 매크로가있는 특정 값의 행 번호를 확인할 수 있습니까?

총 3 개의 워크 시트가 있습니다. 워크 시트 A에는 모든 값이 포함 된 열이 있습니다. 워크 시트 B는 그 값에 대한 자세한 정보와 워크 시트 (A)에 표시 값과 열이있는 열이 나는 워크 시트 C.에 해당 정보를 복사 할

말 워크 시트 A는 (라인이 빈 셀을 나타냅니다) :

a 
b 
c 

a 
b 
c 
: 나는 매크로를 실행하기 전에

a 12 32 
c 34 45 
b 23 21 

워크 시트 C는 다음과 같습니다 : 나는 매크로를 실행하기 전에

워크 시트 B는 다음과 같습니다

이 같은나는 매크로를 실행 한 후 :

a 12 32 
b 23 21 
c 34 45 

매크로의 구조는 다음과 같습니다 : 워크 시트 A의 값이 비어 있지 않으면

  • , 해당하는 행을 찾습니다 워크 시트 "B"의 값으로 변경하십시오.
  • 워크 시트 B의 행에있는 정보를 복사하십시오.
  • 워크 시트 "C"의 행 i에 붙여 넣으십시오.
+0

을보십시오, 나는 귀하의 질문에 조금 포맷. 인 텐트를 변경하지 않았는지 확인하십시오. – paxdiablo

답변

0

Excel의 VLookup 기능을 살펴 보셨습니까? 이를 사용하여 시트에서 값을 찾은 다음 해당 행에서 다른 값을 가져올 수 있습니다. C에서 각 셀은 VLookup을 사용하여 B에서 올바른 값을 가져올 수 있습니다 (존재하지 않는 경우 비어 있음).

0

예, 저는 이미 VLOOKUP으로 시도했지만, 배열의 인덱스가 아닌 행의 값만 찾아 관리했습니다.

즉 = VLOOKUP (1, A2 : C10,2)

+0

왜 행 인덱스가 필요합니까? 워크 시트 C A1 : A3에 a, b, c가 있으면 워크 시트 C B1 : B3은 VLOOKUP (A1, wkshtB! a1 : wkshtB! c3,2)과 유사 할 것이며 C1 : C3은 인덱스를 3으로 변경합니다. VLookup을 사용하면 다른 시트를 참조 할 수 있는지 여부를 알 수 없지만 현재 시트의 다른 셀에 값을 복사하고 해당 열을 숨길 수는 없습니다. –

1

가 excel34 @이

Public Sub ProcessData() 
Dim i As Long 
Dim LastRow As Long 
Dim RowNum As Long 

    With Worksheets("C") 

     LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
     For i = 1 To LastRow 

      If Not IsError(Application.Match(.Cells(i, "A"), Worksheets("A").Columns(1), 0)) Then 

       RowNum = Application.Match(.Cells(i, "A"), Worksheets("B").Columns(1), 0) 
       Worksheets("B").Cells(RowNum, "B").Resize(, 2).Copy .Cells(i, "B") 
      End If 
     Next i 
    End With 

End Sub 
관련 문제