2016-12-28 1 views
-2

올바른 형식을 얻는 데 도움이되는 코드를 만들려고합니다. 내가 원했던 것은 종업원 (EE) 전체 행을 붙여서 새로운 시트에 붙여 넣은 다음 두 번째 파트 (ER) 값을 동일한 직원과 일치시키는 것입니다.기준에 따라 데이터베이스 조작

즉, 100 (Pen EE (Tal))의 고용인 연금 기여금과 고용주가 같은 고용인을 대신하여 200 (Pen ERS (Tal))의 비용을 지불하는 경우. 그런 다음 워크 시트는 열 A = Pers No, 열 B = 직원 이름, 열 C = ID 번호, 열 D = PenPay, 열 E = 펜 EE (Tal) 및 열 F = 펜 ER (Tal) 총계 (펜 EE + 펜 ER 값). 예제 탭과 동일합니다.

나는 이것이 의미가 있기를 바랍니다. 몇 가지 방법을 시도했지만 지금까지 행운이 없습니다. 도와 주셔서 감사합니다.

+0

ADODB를 통해 VBA에서 Excel에 대한 SQL 지원을 살펴 보셨습니까? 아마 가장 깨끗한 해결책 일 것입니다. –

+0

안녕하세요, 아니요. 당신이 그것을 볼 수 있도록 링크를 게시하시기 바랍니다 수 있습니다. 나는 VBA 코딩 프로세싱에 대해 상당히 새로운 것이다. – Mouctar

답변

1

문제 설명에서 나는 Excel을 사용하고 있음을 해독 할 수 있다고 생각합니다.

가장 간단한 방법은 전혀 VBA를 사용하는 대신 통합 문서 기능 INDEXMATCH을 사용하지 않는 것입니다 :

나는 당신의 문제를 해결하기위한 세 가지 기본 방법을 참조하십시오. 후자는 검색 범위에서 정확히 일치하는 부분이 1 차원이어야하는 행 또는 열을 반환합니다. 정확한 일치에는 실제로 검색 옵션 0이 필요합니다. 함수 INDEX은 범위의 주어진 행과 열에서 값을 반환합니다. 두 가지를 모두 합치면 VLOOKUPHLOOKUP,이라는보다 유연한 결과를 얻을 수 있습니다.이 직원을 통해 두 번째 테이블의 값을 찾을 수 있습니다. ( MATCH은 일치하는 항목이 없을 경우 N/A 오류를 반환합니다.)

두 번째 방법은 VBA에서 Excel 개체 모델을 사용하는 것입니다. 범위의 Find 메소드를 사용하여 값의 범위를 검색 할 수 있습니다. 일치하는 항목이있는 셀을 반환하고 일치하는 항목이없는 경우 Nothing을 반환합니다. 검색 결과가 Nothing이 아닌 경우 EntireRow 속성을 사용하여 전체 행을 가져오고 Cells 속성을 사용하여 행의 셀을 선택할 수 있습니다.

마지막으로 ADODB를 통해 SQL 용 Excel의 지원을 사용할 수 있습니다. 이를 수행하는 방법에 대한 설명은 Microsoft page과이 오래된 question을 참조하십시오. SQL 쿼리를 작성하는 방법을 알고 있다면 SQL을 통해 문제를 해결할 수 있습니다.

+0

@Mctct 나는 동의한다. 충분한 데이터가 주어지면 INDEX 및 MATCH 사용 속도가 느려질 수 있습니다. 이 경우 세 번째 방법을 살펴볼 수 있습니다. SQL 지원은보다 효율적인 조인 알고리즘을 사용하여 데이터를 일치시킵니다. –

+0

안녕하세요, 조언 해 주셔서 감사합니다. 그러나 저는 현재 Index and Match를 사용하여 올바른 형식을 얻고 있으며 70 가지 이상의 연금 제도와 약 7000 명의 직원을 보유하고 있으므로이 옵션은 작은 보고서에는 적합하지만 큰 보고서에는 적합하지 않습니다. 두 번째 제안은 더 나은 옵션일지도 모르지만 나는 VBA 코딩에 관해서 상당히 새로운 것으로부터 시작해야한다고 생각하기까지 고심하고 있습니다. 마지막 제안도 좋을지 모르지만, 처음 듣는 순간이므로 영원히 이해할 수있을 것입니다. 작업을 수행 할 코드를 작성하는 것을 잊지 마십시오. – Mouctar

+0

SQL에 대한 학습 자료를 찾을 수있는 곳이라면, 직장 생활을 더 잘 만들고 싶을 것입니다. 마감 기한이 짧아지기 때문에 스트레스를받을 수 있습니다. 어떤 도움을 많이 부탁드립니다 – Mouctar