CHOOSE
함수 를 사용하여 쉼표로 구분 된 목록에서 특정 값을 선택할 수 있습니다 . 예를 들면 :
=CHOOSE(A1,"A","B","C","D")
여기서 A1은 색인 값을 포함 "A","B","C","D"
하고 목록입니다.
그러나 CHOOSE
목록에 대한 참조가 아니라 함수에 포함 된 실제 목록에서만 작동합니다.
목록이 동적이고 셀에 생성 및 저장되는 상황이 있다고 가정합니다. 지금 당장 B1 셀에 쉼표로 구분 된 문자열이 포함되어 있으며 "A","B","C","D"
다른 시간에 다른 목록이 될 수 있습니다.
요구 사항은 여전히 A1의 인덱스 값을 기반으로 해당 목록에서 선택하는 것이므로 의사 코드와 동일합니다.
=CHOOSE(A1,CONTENTS(B1))
그와 동등한 것을 달성하는 방법이 있습니까?
비교적 쉬운 방법을 제안하고 싶습니다.
열 A에는 선택할 값의 문자열이 있습니다. B 열에는 선택 항목에 대한 색인 값이 있습니다. C 열에는 선택한 값이 표시됩니다.
공식
값이 공백으로 구분 된 경우이 수식을 셀 C2 에 작성 합니다.
=TRIM(MID(SUBSTITUTE(A$2," ",REPT(" ",LEN(A$2))),(B2-1)*LEN(A$2)+1,LEN(A$2)))
쉼표로 구분 된 값에 대해 셀 C9 에서이 수식을 사용할 수 있습니다 .
=TRIM(MID(SUBSTITUTE(A$9,",",REPT(" ",LEN(A$9)),(B9-1)*LEN(A$9)+1,LEN(A$9)))
작동 원리
이 방법은 각 구분 기호를 전체 데이터 문자열의 길이와 같은 공백으로 바꿉니다. 그런 다음 각 값에서 또는 이전에 시작하는 중단 점을 계산하고 전체 원래 문자열만큼 세그먼트를 자릅니다. 스 니펫에는 항상 대상 값과 약간의 패딩이 포함되며 다른 값의 일부는 포함되지 않습니다. 패딩이 잘리고 대상 값이 남습니다.
공식을 깨 뜨리겠습니다.
Helper Column Cell B2 에 3 이있을 때 세 번째 값인 Data3
.
LEN(A2) returns: 23
SUBSTITUTE(A$2," ",REPT(" ",LEN(A$2))) Returns:
Data1 Data2 Data3 Data4
그때:
(B2-1)*LEN(A2)+1 returns: 47
이것은 Data2와 Data3 사이의 위치이고 23 자 이후는 Data3 다음의 위치입니다. MID 함수는 패딩, Data3 및 기타 패딩을 포함하는 해당 스 니펫을 가져옵니다.
TRIM removes the padding, leaving `Data3`.
참고 도우미 골 값인 경우 (2) 다음 화학식
=(B2-1)*LEN(A2)+1
47 대신 24 를 반환합니다.
그리고 공식
=TRIM(MID(SUBSTITUTE(A$2," ",REPT(" ",LEN(A$2))),24,23))
를 반환합니다 Data2
.
NB 필요에 따라 수식에서 셀 참조를 조정합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다