Excel 공식에서 문자열 분할 함수 시뮬레이션
여러 프로그래밍 언어로 할 수 있는 것과 같은 엑셀 수식으로 문자열을 분할하려고 합니다.
string words = "some text".split(' ');
문제는 감방에 단어가 두 개 이상 있다는 것을 확신할 수 없다는 것이다.를 사용하려고 하면FIND()
또는SEARCH()
함수는 반환됩니다.#VALUE
공간이 없으면.문자열을 분할하여 개별 단어를 반환하도록(또는 첫 번째 단어 또는 다른 모든 단어를 반환하도록 하는) 쉬운 방법이 있습니까?
첫 번째 단어 또는 다른 모든 단어를 반환하는 수식입니다.
=IF(ISERROR(FIND(" ",TRIM(A2),1)),TRIM(A2),MID(TRIM(A2),FIND(" ",TRIM(A2),1),LEN(A2)))
예와 결과
Text Description Results
Blank
Space
some Text no space some
some text Text with space text
some Text with leading space some
some Text with trailing space some
some text some text Text with multiple spaces text some text
공식에 대한 코멘트:
- TRIM 기능은 모든 선행 및 후행 공간을 제거하는 데 사용됩니다.텍스트 내의 중복된 공백도 제거됩니다.
- 그런 다음 FIND 함수는 첫 번째 공간을 찾습니다.
- 공백이 없는 경우 잘린 텍스트가 반환됩니다.
- 그렇지 않으면 MID 함수가 첫 번째 공백 뒤에 텍스트를 반환하는 데 사용됩니다.
다음으로 공백으로 구분된 셀 A1의 첫 번째 단어를 반환합니다(Excel 2003에서 동작).
=LEFT(A1, SEARCH(" ",A1,1))
=IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)
그러면 먼저 셀에 공백이 있는지 확인하고 공백이 있으면 해당 공간에서 첫 번째 값이 반환되며 그렇지 않으면 셀 값이 반환됩니다.
편집
위의 공식에 더하면 셀에 값이 없으면 0이 반환됩니다.사용자에게 빈 메시지 등을 표시하려는 경우 다음을 사용할 수 있습니다.
=IF(IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)=0, "Empty", IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3))
이런 것들은 한 번에 셀씩 쓰면 더 간단해지는 경향이 있습니다. 긴 공식을 작은 공식으로 쪼개서 중간에 확인할 수 있습니다.그런 다음 중간 계산을 숨기거나 모든 계산을 하나의 공식으로 롤업할 수 있습니다.
예를 들어 제임스의 공식은 다음과 같습니다.
=IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)
이는 Excel 2007 이후에서만 유효합니다.
다음과 같이 분할합니다.
B3: =FIND(" ", A3)
C3: =IF(ISERROR(B3),A3,LEFT(A3,B3-1))
한 번에 한 덩어리로 작업하는 것이 조금 더 쉬울 뿐입니다.일단 완성되면, 당신은 이것을
=IF(ISERROR(FIND(" ", A3)),A3,LEFT(A3,FIND(" ", A3)-1))
원하신다면.
다른 답변에서는 워크시트 fu가 훌륭하지만 사용자 정의 함수(udf)를 정의하고 시트 또는 공식에서 이를 호출할 수 있다는 것을 간과한 것 같습니다.
다음으로 어레이 전체를 사용할지 요소를 사용할지를 결정하는 문제가 있습니다.
예를 들어, 이 UDF 함수 코드는
Public Function UdfSplit(ByVal sText As String, Optional ByVal sDelimiter As String = " ", Optional ByVal lIndex As Long = -1) As Variant
Dim vSplit As Variant
vSplit = VBA.Split(sText, sDelimiter)
If lIndex > -1 Then
UdfSplit = vSplit(lIndex)
Else
UdfSplit = vSplit
End If
End Function
다음 요소를 1개의 셀에 포함시킬 수 있습니다.
=UdfSplit("EUR/USD","/",0)
또는 세포 블록을 사용하여
=UdfSplit("EUR/USD","/")
한 번만 열에 할당해야 하는 경우 MS Excel의 "텍스트에서 열로" 기능이 정답입니다.
MS 도움말 기사http://http://support.microsoft.com/kb/214261 를 참조해 주세요.
HTH
편집 7-10-2022:
등 현재 채널에서 새로운 기능이 롤아웃되었습니다.두 번째 및/또는 세 번째 매개 변수를 사용하여 1+ 구분자(배열 또는 범위)의 텍스트를 열과 행으로 분할합니다.
이전 버전의 Excel 사용자를 위해 이전 답변을 그대로 둡니다.
를 에뮬레이트하기 할 수 의 AFIKSplit()
FILTERXML
Excel 2013 이 excel excel(((((((((( ( Excel Online 또 Mac )
구문은 항상 다음과 같습니다.
=FILTERXML("<t><s>"&SUBSTITUTE(A1,"|","</s><s>")&"</s></t>","//s")
이렇게 하면 다른 함수에 사용할 배열이 반환되며 딜리미터를 찾을 수 없는 경우에도 지연됩니다.만약 당신이 그것에 대해 더 읽고 싶다면, 아마도 당신은 이 게시물에 관심이 있을 것이다.
셀을 강조 표시하고 Dat = > Text to Columns를 사용합니다. Delimiter는 공백입니다.결과는 분할이 공간을 찾는 개수만큼 열에 표시됩니다.
언급URL : https://stackoverflow.com/questions/1031305/simulate-string-split-function-in-excel-formula
'source' 카테고리의 다른 글
N일보다 오래된 파일을 삭제하는 배치 파일 (0) | 2023.04.17 |
---|---|
경과 시간을 계산하는 Bash 스크립트 (0) | 2023.04.17 |
Windows 명령 프롬프트에서 특정 디렉터리의 파일/하위 폴더를 삭제하는 방법 (0) | 2023.04.12 |
Bash에서 문자열을 소문자로 변환하는 방법 (0) | 2023.04.12 |
대신 아이콘 태그를 사용해야 합니까? (0) | 2023.04.12 |