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
입니다 . -를 사용하여 모든 것을 테이블로 변환합니다 . (필수는 아니지만 편리하며 내 열은 이에 의존하지만 원하는 경우 열 참조를 사용할 수 있습니다.)Product
OEM
CtrlTR
열 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
좋습니다. 이제 , P
및 Q
수식을 좀 더 복잡하게 만들어 보겠습니다 .
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
이렇게 하면 , P
및 Q
값을 각 ID의 마지막 행으로 드래그하는 효과가 있습니다 .
O
41, 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의 첫 번째 행까지 여과됩니다.