여러 행의 조건부 셀 내용 연결

여러 행의 조건부 셀 내용 연결

A고유 ID 와 3개의 다른 오류 코드가 포함된 수천 개의 행이 있는 워크시트가 있습니다 M. 각 개인 ID에는 1, 2, 3개의 오류가 있을 수 있습니다. 항상 같은 순서로 표시됩니다.

나는 손으로 입력했고 N원하는 출력이 무엇인지 입력했습니다. O, P, Q오류 텍스트와 함께 다음과 같은 수식을 열에 작성했습니다 .

=IF(IFERROR(SEARCH("Brand is not valid", M42), "") <> "", "Brand", "")

나는 이와 같은 것을 시도했지만 R명백한 이유로 올바르게 작동하지 않습니다. 이렇게 R보이도록 하는 방법이 있나요 N?

=CONCATENATE(O42,"/", P42,"/",Q42)

Excel 수식으로 할 수 없다면 VBA 방식이 있을까요?

연결

답변1

좋아, 머리를 좀 긁적이었지만 해냈어:

O, P& Q, 제목은 & Brand입니다 . -를 사용하여 모든 것을 테이블로 변환합니다 . (필수는 아니지만 편리하며 내 열은 이에 의존하지만 원하는 경우 열 참조를 사용할 수 있습니다.)ProductOEMCtrlTR

R:

=IF(LEN([Brand])>0,[Brand],IF(LEN([Product])>0,[Product],IF(LEN([OEM])>0,[OEM],"")))

S:

=IF(A2=A4,F2&"/"&F3&"/"&F4,IF(A2=A1,"",IF(A2=A3,F2&"/"&F3,F2)))

불행하게도 다른 행에 대한 테이블 참조를 사용하는 유일한 방법은 을 사용하는 것입니다. Offset따라서 더 간단하게 유지하기 위해 셀 참조로 돌아갔습니다. 그것은 애초에 모든 것을 테이블로 바꾸는 멋지고 편리한 요소를 무효화하지만, 어쨌든...

그리고... 다음은 그 모습을 보여주는 사진입니다:

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

답변2

O, P및 수식을 최적화하는 것부터 시작하겠습니다 Q. 당신은 현재

=IF(IFERROR(SEARCH("Brand is not valid", M42), "") <> "", "Brand", "")

IFERROR오류 코드일 수 있는 계산된 값의 삭제된 버전을 표시하는 데 유용한 기능입니다. 나는 그것을 사용하고 슈퍼유저에 대한 답변에서 자주 추천합니다. 아마 아시다시피,

  • IFERROR(calculated_value, default_value)

는 짧다

  • IF(ISERROR(calculated_value), default_value, calculated_value)

그러나 IFERROR일부 값의 삭제된 버전을 생성하는 데 사용그런 다음 해당 값을 테스트하여 조건부로 작업을 수행합니다. 불필요하게 어색한 사용 방법입니다 IFERROR. 위의 공식은 다음과 같이 단순화될 수 있습니다.

=IF(ISERROR(SEARCH("Brand is not valid", M42)), "", "Brand")

그리고 아시다시피 SEARCH("Brand is not valid", M42) 테스트를 통해M42 포함 Brand is not valid. 그러나 열에 M세 개의 오류 문자열만 포함될 수 있는 한 이는 다음과 같이 단축될 수 있습니다.

=IF(ISERROR(SEARCH("Brand", M42)), "", "Brand")

또는 단순화

=IF(M42 = "Brand is not valid", "Brand", "")

O좋습니다. 이제 , PQ수식을 좀 더 복잡하게 만들어 보겠습니다 .

  • O42=IF($A42=$A41, O41, "") & IF(ISERROR(SEARCH("Brand", $M42)), "", "Brand")
  • P42=IF($A42=$A41, P41, "") & IF(ISERROR(SEARCH("Product", $M42)), "", "Product")
  • Q42=IF($A42=$A41, Q41, "") & IF(ISERROR(SEARCH("OEM", $M42)), "", "OEM")

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

이 ID에 대한 두 번째 또는 세 번째 행(열 A)인 경우 이 셀 위의 셀(예: O이전 행의 열 셀)을 보고 이 항목에 잘못된 브랜드가 있는지 이미 확인했는지 확인하세요. 또한 M이 행의 열을 살펴보고 Brand is not valid. 그런 다음 결과를 연결합니다.

고유 ID는 동일한 오류(맞죠?)로 두 번 나열되지 않으므로 이 두 하위 결과는 둘 다 비어 있지 않으므로 본질적으로 "OR"을 수행합니다.

Brand이 행 또는 이 ID의 이전 행 중 하나에 잘못된 브랜드 오류가 포함된 경우 값을 표시합니다 .

O이렇게 하면 , PQ값을 각 ID의 마지막 행으로 드래그하는 효과가 있습니다 .

O41, 44, 47, 49행은 각각 열 , P및 의 해당 ID에 적용되는 모든 오류의 약식을 보여줍니다 Q.

나는 R당신과 같은 방식으로 Column을 정의했습니다. 보다공백을 제외하고 쉼표로 구분된 셀 내용 목록을 생성합니다. 여기에서 원치 않는 슬래시를 제거하는 기술이 필요합니다.

41, 44, 47, 49행에만 원하는 연결을 적용하면 작업이 완료된 것입니다. 그렇지 않으면 다음 N42과 같이 정의합니다.

=IF($A22=$A23, N23, R22)

또는

=IF($A22<>$A23, R22, N23)

O이는 Columns , P, 및 에서 사용한 트릭과 거의 동일 Q하지만 반대 방향으로 진행됩니다.

이것이 이 ID의 마지막 행인 경우(즉, 행 41, 44, 47 또는 49인 경우) 이 행(이 ID에 대한 전체 오류 코드 모음)의 값 연결을 사용합니다. 그렇지 않으면 N정답이 있는 이 셀 아래의 셀(예: 다음 행의 열 셀)을 살펴보세요 .

즉, 원하는 값이 각 ID의 첫 번째 행까지 여과됩니다.

관련 정보