2014-06-30 3 views
0

그래서 여기에 힘든 시간을 보내고 있습니다. 두 가지 다른 스프레드 시트가 있습니다. Sheet1에 x, y, z와 같은 행 (A1, A2, A3 ..)에 데이터가있는 열이 있다고 가정 해 봅시다.다른 시트의 일치하는 셀 값

이제 동일한 데이터 세트 (Sheet2)가있는 다른 스프레드 시트 x, y, z ...) 한 열에 "A"라고 말하십시오. 칼럼에서 "B"I는 해당 값 대답이 (1, 2, 3)이

A1 = X, B1 =

1 I 원하는 내 (시트 1의 첫 번째 열 오프 값을 읽어 매크로 즉 x, y 또는 z) 다음 Sheet2의 열 데이터 ("A")와 일치하므로 Sheet2의 열 "B"에서 해당 값을 선택하십시오.

나는 잠시 동안 노력했지만 어떻게 될지 알 수 없습니다. 그리고 그런 우연한 방법으로 그것을 제시해 주셔서 유감입니다. 하지만 누군가 도와주세요? 여기 뮤가 시도한 코드입니다. 그러나 이것은 열의 값이 ("2012-2013"등) 일 때만 작동합니다 (만약 그렇다면). 나는 그것이 동적 이길 원합니다.

Sub CalC_stat() 
Dim ws As Sheets 
Set ws = ThisWorkbook.Sheets(Array("S1 Fuel Consumption", "EF_Stat", "Summary")) 
Dim i As Integer, j As Integer 

For j = 7 To 15 Step 4 

Select Case ws(1).Range("A" & j).Value 

Case "2012-2013" 

For i = 1 To 4 
With ws(1).Shapes("Fuel " & i).ControlFormat 

Select Case .ListIndex 

Case 1 
ws(3).Range("B" & i).Value = Empty 
Case 2 
ws(3).Range("B" & i).Value = ws(2).Range("B3").Value 
Case 3 
ws(3).Range("B" & i).Value = ws(2).Range("C3").Value 
Case 4 
ws(3).Range("B" & i).Value = ws(2).Range("D3").Value 

End Select 
End With 
Next i 

Case "2013-2014" 
For i = 5 To 8 
    With ws(1).Shapes("Fuel " & i).ControlFormat 

    Select Case .ListIndex 

    Case 1 
    ws(3).Range("B" & i).Value = Empty 
    Case 2 
    ws(3).Range("B" & i).Value = ws(2).Range("B4").Value 
    Case 3 
    ws(3).Range("B" & i).Value = ws(2).Range("C4").Value 
    Case 4 
    ws(3).Range("B" & i).Value = ws(2).Range("D4").Value 

End Select 
End With 
Next i 

Case "2014-2015" 
    ' and so on.. 
+0

... 우리는 ** 쓰기 ** SO에 대한 코드, 왜 시도 코드를 해결하는 데 도움이되지 않습니다 ... 당신의 코드를 게시 제발 – SilverShotBee

+1

Vlookup을 시도 했습니까 – user3271518

+0

Vlookup을 사용하는 방법에 대해서는별로 확신하지 못합니다. 각 경우에 대해 다시 루프를 도입해야합니다. (.listindex 값) :/누군가 나를 도울 수 있습니까? –

답변

1

한 VBA 방법은 그것을 할 수 있습니다 :

Sub test() 

    dim a as Long, b as Long, c as Long 

    For a = 1 to 1048576 'last row of your excel sheet 
     If IsEmpty(Sheet1.Range("A" & a)) Then Exit For 
    Next a 

    For b = 1 to a 
     For c = 1 to a 
      If Sheet1.Range("A" & b) = Sheet2.Range("A" & c) Then 
       Sheet1.Range("B" & b) = Sheet2.Range("B" & c) 
       Exit For 
      End If 
     Next c 
    Next b 

End Sub 
+0

좋은 방법은 그것을 넣어 .. :)하지만 그것은 콤보 상자 값을 읽을 것인가? 나는 그렇게 생각하지 않는다. :/ –

+0

질문에 언급 된 콤보 박스를 보지 못했다. 시나리오에서 콤보 박스의 목적은 무엇입니까? – StandardDeviation

+0

Nevermind 나는 그것을 얻었다 :) 도움에 감사드립니다! –

관련 문제