2016-10-27 3 views
0

나는 처음부터 다시 시작하고 있으므로 내 문제에 대해 생각해 보았습니다.두 장 사이의 행 비교 - 기능

두 개의 스프레드 시트가 있습니다. 하나는 원본 데이터베이스 (org_DB)이고 두 번째는 업데이트 된 데이터베이스 (new_DB)입니다. 행 수는 org_DB의 경우 약 15,000이고 new_DB의 경우 약 18,000입니다. 관련된 인접한 열의 수는 둘 다 정확히 14입니다.

원래 데이터베이스와 다른 new_DB 항목 만 포함 된 세 번째 시트가 필요하며, 추가되는 모든 new_DB 항목이 필요합니다.

DIFFERENT의 정의는 0보다 큰 차이가있는 행입니다.

ADDITIONAL의 정의는 동등하지 않은 행입니다.

'새로운 DB'가 'org DB'보다 길고 모든 수식이 org_DB의 끝 지점에서 실패하기 때문에 두 개의 정의가 필요하다고 생각합니다. 두 테스트 DB를 크기

은 다음과 같습니다

org_DB

Code 1 Code 2 Code 3 Code 4 
AA00001 AAGA 1180218  24 
AA00007 AAGA 03821787-97 58 
AA00008 AAGA 11821260-99 59 
AA00009 AAGA 11001017  60 
AA00016 AAGA 3801648  67 
AA00017 AAGA 3801649  120 
AA00018 AAGA 3801692  66 
AA00019 AAGA 03821084-61 70 

new_DB

Code 1 Code 2 Code 3 Code 4 
AA00001 AAGA 1180218  24 
AA00008 AAGA 11821260-99 59 
AA00009 AAGA 11001015  60 
AA00016 AAGA 3801648  67 
AA00017 AAGA 3801649  120 
AA00018 AAGA 3801692  69 
AA00019 AAGA 03821084-61 70 
XX00101 XXGA 1234X567X  101 
XX00102 XXGB 1234X567X  101 

결과 DB (결과는 내가 찾고 있어요)

01 제가

=filter(new_DB,if(ArrayFormula(sum(--(new_DB=org_DB)))<>4) 

문제 1을 사용하고 결과의 배열을 얻으려면

=if(ArrayFormula(sum(--(new_DB!A2:D2=org_DB!A2:D2)))<>4,"Copy row","Ignore") 

사용하고 (행별로 열 작동) 행 비교 용 23,516,
AA00009 AAGA 11001015 60 
AA00018 AAGA 3801692  69 
XX00101 XXGA 1234X567X 101 
XX00102 XXGB 1234X567X 101 

가 있다는 FILTER 조건 인수는 ArrayFormula에서 단일 수식 결과 만 가져 오므로 # N/A와 함께 실패합니다 - "FILTER의 범위 크기가 일치하지 않습니다. 예상 행 수 : nn, 열 수 : 1. 실제 행 수 : 1, 열 수 : 1입니다. "

문제점 2는 IF가 1 행과 nn 열을 비교 한 후의 ArrayFormula입니다. 전체적인 함수를 다른 ArrayFormula로 래핑하면 더 이상한 결과가 도출됩니다.

문제 3. 행 비교 함수를 IF ArrayFormula에서 SUMPRODUCT로 변경하면 ArrayFormula 래퍼에서 사용할 때 잘못된 결과가 생성됩니다.

이 방법을 사용하면 재귀 프로세스가 매우 길어질 수 있습니다. 따라서 내 방법을 받아 들일 수있게 된 것은 근본적으로 결함이 있습니다. 열 A에 VLOOKUP 및 FILTER 콤보를 사용해야합니까? A ​​열은 실제로 SKU ID이므로 항상 고유해야합니다.

아무도 도와 줄 수 있습니까? TIA

org_DB 행 3 (AA0007 ...)이 결과에 나타나지 않습니다. 신중한.여기

테스트 시트 : Test DB Sheet

+1

DIFFERENT 및 ADDITIONAL의 정의는 동일하게 보입니다. 각 정의에 맞는 행의 예를 제공해주십시오. –

+0

[기본 키] (https://www.techopedia.com/definition/5547/primary-key) 인 14 개 미만의 단일 열 또는 열 조합이 있습니까? –

+0

또한 코드 4가 변경되었을뿐만 아니라 AA00017이 나타나지 않아야합니까? –

답변

0

나는 당신이 어떤 열이의 부탁 해요 이유 인 열이 많은 정말 빠르게 정말 예쁘게 것이다 당신이 자신을 제한 할 수 있습니다.

=ARRAYFORMULA(FILTER(
    'New DB'!A2:D10, 
    ISERROR(MATCH('New DB'!A2:A10 & "|" & 
       'New DB'!B2:B10 & "|" & 
       'New DB'!C2:C10 & "|" & 
       'New DB'!D2:D10, 
       'Org DB'!$A$2:$A$9 & "|" & 
       'Org DB'!$B$2:$B$9 & "|" & 
       'Org DB'!$C$2:$C$9 & "|" & 
       'Org DB'!$D$2:$D$9, 
       0)))) 

이것은 당신이있는 경우 다른 구분 기호를 사용할 수 있습니다, 새로운 DB의 연결된 열이 조직 DB에서 발견 할 수 있는지 여부에 의해 새로운 DB의 내용을 필터링 | 거기에.

+0

입력 해 주셔서 감사합니다. @Robin - 테스트 열 제한, 예. 결과 배열은 모든 열을 필요로하므로 전체 배열이 FILTER로 전달 된 답을 테스트 할 것입니까? – DeeKay789

+0

예, 방금 샘플 데이터를 사용했습니다. 14 개 열 모두를 사용하게됩니다. –