여러 열을 조건으로 결합

여러 열을 조건으로 결합

다양한 열(A1,B1,C1,D1)이 있습니다. 이 열의 값은 1부터 20까지입니다. F1에는 다음과 같은 수식이 있습니다.

암호:

=if($A1>7,"U",if($B1>7,"X",If($C1>7,"Y",if($D1>7,"Z",""))))

이 공식은 이러한 셀(A1,B1,C1 또는 D1) 중 하나가 7보다 큰 경우 U,X,Y 및 Z의 값을 넣습니다.

하지만 7보다 큰 셀이 두 개 있으면 처리할 수 없습니다.

어떻게 해야 합니까? 7보다 큰 열이 두 개 있으면 최종 결과는 U,X,Y 또는 Z(쉼표로 구분) 쌍이 됩니다.

감사해요.

답변1

이는 수식을 사용하여 수행할 수 있지만 다소 길기 때문에 VBA가 더 나은 솔루션일 수 있습니다. 또한 이것은 가능한 경우를 처리하지 않습니다.값 > 7. 하지만 어쨌든 수식 방법을 보여 드리겠습니다.

7보다 큰 셀이 하나만 있는 더 간단한 경우부터 시작해 보겠습니다.

여기에 이미지 설명을 입력하세요

F1의 공식은 다음과 같습니다.

=IF(COUNTIF($A$1:D$1,">7")>1,"Double",IF($A1>7,"U",IF($B1>7,"X",IF($C1>7,"Y",IF($D1>7,"Z","")))))

COUNTIF() 부분은 A1:D1 범위에서 7보다 큰 셀 수를 계산합니다. 해당 합계가 1보다 큰 경우 IF()는 "Double"을 반환합니다. 이는 더 큰 수식에 대한 자리 표시자일 뿐입니다. 나중에. 합계가 1보다 크지 않으면 수식은 중첩된 IF() 문을 사용하여 7보다 큰 셀에 대한 코드를 표시합니다.

두 셀이 7보다 큰 경우 중첩된 IF()가 작동하지 않습니다. 어떤 열이 7보다 큰지 알아야 합니다. 이 데이터가 있으면

여기에 이미지 설명을 입력하세요

먼저, 7보다 큰 열을 나열하는 배열을 만듭니다. 이 표현식이 (A1:D1>7)*COLUMN(A1:D1)이를 수행합니다. 첫 번째 부분은 (A1:D1>7)어느 셀이 7보다 큰지 묻고 {TRUE,FALSE,TRUE,FALSE} 배열로 평가됩니다. 두 번째 부분은 A1:D1 또는 {1,2,3,4}의 열 번호입니다. 이 두 배열을 곱하면 논리값 TRUE와 FALSE가 1과 0으로 변환되므로 결과는 7보다 큰 값을 갖는 열 번호인 배열 {1,0,3,0}입니다.

이제 이 숫자를 사용하여 INDEX()를 사용하여 열 코드를 조회할 수 있습니다.

INDEX({"U","X","Y","Z"},LARGE((A1:D1>7)*COLUMN(A1:D1),2))

여기서 LARGE()는 7보다 큰 열 번호 배열(1)에서 두 번째로 큰 값을 반환하고, INDEX()는 이를 사용하여 문자 배열의 첫 번째 요소인 U를 반환합니다.

마찬가지로 이 표현식은 쉼표로 구분된 두 번째 및 첫 번째 가장 큰 열 번호에 해당하는 코드를 가져옵니다.

INDEX({"U","X","Y","Z"},LARGE((A1:D1>7)*COLUMN(A1:D1),2))&","&INDEX({"U","X","Y","Z"},LARGE((A1:D1>7)*COLUMN(A1:D1),1)

이제 위의 첫 번째 방정식에 모든 것을 "Double"로 대체합니다. F1의 이 수식은 배열 수식이므로 다음과 같이 입력해야 합니다.CtrlShiftEnter

=IF(COUNTIF($A$1:D$1,">7")>1,INDEX({"U","X","Y","Z"},LARGE((A1:D1>7)*COLUMN(A1:D1),2))&","&INDEX({"U","X","Y","Z"},LARGE((A1:D1>7)*COLUMN(A1:D1),1)),IF($A1>7,"U",IF($B1>7,"X",IF($C1>7,"Y",IF($D1>7,"Z","")))))

나는 이 공식이 "다소 길다"고 말했습니다. 이게 도움이 되길 바란다.

답변2

위의 공식에 대한 대안으로 찾은 다른 옵션은 다음과 같습니다.

=IFERROR(LEFT(IF($A1>7,"U, ","")&IF($B1>7,"X, ","")&IF($C1>7,"Y, ","")&IF($D1>7,"Z, ",""),(COUNTIF($A1:$D1,">7")-1)*3+1),"")


{=TEXTJOIN(",",TRUE,IF(A1:D1>7,MID("UXYZ",COLUMN(A1:D1)-COLUMN(A1)+1,1),""))}


=MID(IF($A1>7,", U","")&IF($B1>7,", X","")&IF($C1>7,", Y","")&IF($D1>7,", Z",""),3,99)

""를 반환하는 수식이 있는 경우:

=MID(IF(N($A1)>7,", U","")&IF(N($B1)>7,", X","")&IF(N($C1)>7,", Y","")&IF(N($D1)>7,", Z",""),3,99)

이 공식이 댓글에서 보기에 좋지 않기 때문에 두 번째 답변을 게시해야 했습니다.

관련 정보