Chris는 A부터 F까지의 열에 고객 이름이있는 워크 시트를 가지고 있습니다. G 열에는 6 개의 이름 열에서 모든 이름을 가져 와서 각 이름 사이에 // 문자가있는 하나의 긴 문자열로 연결하는 수식을 포함하려고합니다. . 6 개 열 모두에 이름이 없을 수 있으며 // 선행 또는 후행 구분 기호가 없어야합니다.

Excel에서 텍스트를 연결하는 것은 쉽습니다. 예를 들어 A2 셀에 무언가가 있고이를 B2 셀에있는 것과 연결하려는 경우 다음 공식을 사용하여 연결할 수 있습니다.

=A2 & B2
=A2 & "//" & B2

이것은 매우 쉽습니다. 이 방법을 사용하면 다음 공식을 사용하여 6 개의 이름을 모두 연결할 수 있습니다.

=A2 & "//" & B2 & "//" & C2 & "//" & D2 & "//" & E2 & "//" & F2

상황이 까다로워지는 부분은 일부 세포에 아무것도 없을 수 있음을 인식 할 때입니다. 따라서 수식은 후행 또는 끝에 // 구분 기호 또는 이중 구분 기호 (////)

결과 중간 어딘가에.

명백한 해결책은 IF 문을 사용하여 셀을 연결하기 전에 이름 셀의 내용을 확인하는 것입니다. 그러나 이것은 놀랍도록 긴 공식을 만들 수 있습니다. 예를 들어, 다음 공식은 검사 및 연결을 올바르게 수행합니다.

=IF(RIGHT(CONCATENATE(IF(A3="","",CONCATENATE(A3,"//")), IF(B3="","",CONCATENATE(B3,"//")),IF(C3="","",CONCATENATE(C3,"//")), IF(D3="","",CONCATENATE(D3,"//")),IF(E3="","",CONCATENATE(E3,"//")), IF(F3="","",F3)),2)="//",LEFT(CONCATENATE(IF(A3="","", CONCATENATE(A3,"//")),IF(B3="","",CONCATENATE(B3,"//")), IF(C3="","",CONCATENATE(C3,"//")),IF(D3="","",CONCATENATE(D3,"//")), IF(E3="","",CONCATENATE(E3,"//")),IF(F3="","",F3)), LEN(CONCATENATE(IF(A3="","",CONCATENATE(A3,"//")), IF(B3="","",CONCATENATE(B3,"//")),IF(C3="","",CONCATENATE(C3,"//")), IF(D3="","",CONCATENATE(D3,"//")),IF(E3="","",CONCATENATE(E3,"//")), IF(F3="","",F3)))-2),CONCATENATE(IF(A3="","",CONCATENATE(A3,"//")), IF(B3="","",CONCATENATE(B3,"//")),IF(C3="","",CONCATENATE(C3,"//")), IF(D3="","",CONCATENATE(D3,"//")),IF(E3="","",CONCATENATE(E3,"//")), IF(F3="","",F3)))

예, 이것은 한 줄 공식입니다. (휴!)이 공식은 IF 문을 중첩하는 방식을 사용하여 원하는 결과를 얻습니다. 이 특정 인스턴스에서 작동 할 수 있지만 수식은 IF 문을 7 단계 깊이까지 중첩 할 수있는 Excel의 한계에 매우 가깝게 실행됩니다.

잠재적 인 중첩 수준 문제에 대한 해결책은 IF 문을 중첩하지 않는 것입니다. 대신 각 셀을 개별적으로 평가하고 반환 된 모든 항목을 연결할 수 있습니다.

=MID(IF(ISTEXT(A3),"//"&A3,"") & IF(ISTEXT(B3),"//"&B3,"")

& IF(ISTEXT(C3),"//"&C3,"") & IF(ISTEXT(D3),"//"&D3,"") & IF(ISTEXT(E3),"//"&E3,"") & IF(ISTEXT(F3),"//"&F3,""),3,2000)

이 공식은 훨씬 더 짧습니다. 여러 줄에 “분리 된”수식을 보면 어떤 작업을하는지 더 잘 알 수 있습니다.

=MID( IF(ISTEXT(A3),"//"&A3,"") & IF(ISTEXT(B3),"//"&B3,"") & IF(ISTEXT(C3),"//"&C3,"") & IF(ISTEXT(D3),"//"&D3,"") & IF(ISTEXT(E3),"//"&E3,"") & IF(ISTEXT(F3),"//"&F3,""),3,2000)

수식의 각 개별 IF 문은 이름 셀을 평가하고 셀에 텍스트가없는 경우 아무 것도 반환하지 않거나 ( “”) 이름 뒤에 구분 기호 (//)를 반환합니다. 그런 다음 전체 수식이 MID 문 안에 포함되어 문자열에서 // 첫 번째 구분 기호를 효과적으로 잘라냅니다.

ISTEXT 함수를 사용하여 셀을 평가하는 대신 다음과 같이 셀에 텍스트가 있는지 확인하기 위해 부울 비교를 수행하면이 수식을 훨씬 더 줄일 수 있습니다.

=MID(IF(A3>"","//"&A3,"") & IF(B3>"","//"&B3,"") & IF(C3>"","//"& C3,"") & IF(D3>"","//"&D3,"") & IF(E3>"","//"&E3,"") & IF(F3>"","//"&F3,""),3,2000)

이것은 똑같은 기술이며 조금 더 짧습니다. (원래 공식에서 상당히 짧습니다.)

이 수식은 이름 셀의 값이 텍스트이면 훌륭하게 작동합니다. 이름 열에 어떤 이유로 숫자 값이있는 경우 다음과 같이 ISTEXT 대신 ISBLANK를 사용하도록 수식을 쉽게 수정할 수 있습니다.

=MID(IF(ISBLANK(A3),"","//"&A3) & IF(ISBLANK(B3),"","//"&B3)

& IF(ISBLANK(C3),"","//"& C3) & IF(ISBLANK(D3),"","//"&D3)

& IF(ISBLANK(E3),"","//"&E3) & IF(ISBLANK(F3),"","//"&F3),3,2000)

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (2173)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다.