나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내

작성자:  

 김진우 (rplymc)

추천:  2
파일:     통합 문서1.xltm (22.3KB) 조회:  4786
제목:   index match 사용하여 vba
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007):

* 아래줄에 질문을 작성하세요 >>

sheet1에 있는 값을 참고해서 sheet2의 e7의 값을 넣어주는 vba 코드가 잘 안되네요 ; 

index match써서 하려고 하는데 

Sub dsh()
Worksheets("Sheet2").Range("e7") = Application.WorksheetFunction.Index(Worksheets("Sheet1").Range("d3:d11"), Application.WorksheetFunction.Match(Worksheets("sheet2").Range("c7") & Worksheets("sheet2").Range("d7"), Worksheets("Sheet1").Range("b3:b11") & Worksheets("sheet1").Range("c3:c11"), 0))
End Sub

이게 아닌가봐요;
저렇게 써노니 복잡해서 어디가 틀린지도 모르겠네요 

어떻게 넣어줘야 하나요 ㅠ
 
[불량 게시물 신고]  
조삿갓Match 함수의 두 번째 인수는 워크시트의 범위로서 1차원 배열의 형태(한 줄짜리)여야 합니다. 그런데
Worksheets("Sheet1").Range("b3:b11") & Worksheets("sheet1").Range("c3:c11")
이렇게 문자열 연산을 하셨네요?

그리고 워크시트 함수로 해결할 수 있는 문제를 굳이 VB 코드에서 빌려다 써야 할 이유가 있을까요?

그냥 워크시트에서 E7 셀에 해당 함수식을 입력하는 것이 훨씬 속도도 빠를텐데요...?
06-20 (10:26)
삭제 ■신고
조삿갓혹시 sheet2!C7 과 일치하는 값을 Sheet1!b3:b11 에서 찾고
sheet2!d7 과 일치하는 값을 Sheet1!c3:c11에서 찾고 싶다는 건가요?

이렇게 하시면 아니되옵니다.

별도의 새로운 열(예: D열)에 참조대상 범위를 따로 만들어서
D3 셀: =B3&C3
으로 입력하여 아래로 쭈욱 복사한 후에(이건 워크시트에서)

WorksheetFunction.Match(Worksheets("sheet2").Range("c7") & Worksheets("sheet2").Range("d7"), Worksheets("Sheet1").Range("d3:d11"), 0)

와 같이 쓰셔야지요.

오히려, VB가 아니고 워크시트에서 함수식으로 해결한다면
배열수식을 이용할 수 있는 방법도 있을 것 같습니다만...
(별도의 열을 이용하지 않고)
06-20 (10:33)
삭제 ■신고
김진우다중조건을 만족하는 값을 찾고 싶었구요 이분 함수식을 vba로 바꿔보고 싶었습니다 어떻게 안될까요?ㅠhttps://duyeol.wordpress.com/2014/07/25/excel-%EB%8B%A4%EC%A4%91%EC%A1%B0%EA%B1%B4%EC%9D%84-%EB%A7%8C%EC%A1%B1%ED%95%98%EB%8A%94-%ED%85%8D%EC%8A%A4%ED%8A%B8-%EA%B0%92-%EC%B0%BE%EA%B8%B0/06-20 (14:39)
삭제 ■신고
조삿갓첨부하신 파일은 "파일형식과 확장명이 일치하지 않아서 열수 없다"고 오류가 뜨네요.

제가 끝부분에 지적한 "오히려, VB가 아니고 워크시트에서 함수식으로 해결한다면, 배열수식을 이용할 수 있는 방법도 있을 것 같다"는 의미가 바로 링크하신 분이 설명한 내용이네요.
그 설명에서처럼, 이 수식은 배열수식이기 때문에 VB로 문자 그대로 이식은 안되고, 워크시트에서만 가능합니다.

Sheet2 의 e7 셀에 다음과 같이 타이핑하고 Ctrl+Shift+Enter를 눌러서 배열수식으로 입력해 보세요.

=Index(Sheet1!d3:d11, Match(sheet2!c7&sheet2!d7, Sheet1!b3:b11&sheet1!c3:c11, 0))
06-20 (22:34)
삭제 ■신고
        
  

작성일 : 2018-06-19(15:09)
최종수정일 : 2018-06-19(15:09)