2013-08-08 5 views
1

Excel에서 수식을 사용하여 셀의 단어 묶음을 쉼표로 구분하려고합니다. 셀에 단어가 5 개 이상 있으면 처음 5 단어 만 가져오고 싶습니다.Excel 2010에서 쉼표로 단어 분리

=SUBSTITUTE(LEFT(A1,FIND("^",SUBSTITUTE(A1," ","^",5))-1), " ", ", ") 

이 잘 작동 : 셀에 처음 다섯 개 단어를 얻고 쉼표 (,)로 구분하기 위해 나는이 사용합니다. 그러나이 문제는 숫자 5로 인해 셀에 5 단어 미만이 포함되어 있으면 오류가 발생합니다. 나는이와 (5)를 대체하려고 :

=SUBSTITUTE(LEFT(A1,FIND("^",SUBSTITUTE(A1," ","^",LEN(TRIM(A1))-LEN(SUBSTITUTE(A1," ",""))+1))-1), " ", ", ") 

그러나 그것은 나에게 오류를 제공, 작동하지 않습니다

LEN(TRIM(A1))-LEN(SUBSTITUTE(A1," ",""))+1 

그래서 내 기능이된다. 내가 어떻게이 일을 할 수 있니?

또한 첫 번째 단어가 "-"(따옴표 제외)이고 두 번째 단어부터 시작하는 경우 첫 단어를 무시하고 싶습니다. - 내가에게 I를 반환해야합니다 매우 내 인생을 사랑, 사랑 나는, 사랑, 내 생명을 반환해야 내가 정말 내 인생을 사랑

, 매우
: 그래서 다른 말로하면, 나는 이런 식으로 뭔가를 원하는 나의 삶, 아주. - 제외
내가 내 를 반환해야 내가, 사랑, 도움이 여기에

+0

데이터는 항상 "-", "-"가있는 공백이 있으며 "-", "-" 언제 어디서나 데이터를 유지하고 싶습니까? – MakeCents

답변

2

사전에 내

감사의 다소 다른 접근 방식을 사랑합니다 ("" "무시됩니다) 에서 "미만 5"입니다 고소, 또한 문제은 "마지막에 공간이 5 개 단어"를 다루는 :

=LEFT(A1,FIND("^",SUBSTITUTE(A1 & "^"," ","^",5))-1) 

편집 1 : 난 그냥 선도에 대한 부분 주목 "-"를.내 추가는 매우 우아하지 않지만 그것을 다루고, 또한 TRIMS 뒤에 공백 :

=TRIM(LEFT(IF(LEFT(A1,2)="- ",MID(A1,3,999),A1),FIND("^",SUBSTITUTE(IF(LEFT(A1,2)="- ",MID(A1,3,999),A1) & "^"," ","^",5))-1)) 

편집 2 : 오, 그래, 쉼표 :

=SUBSTITUTE(TRIM(LEFT(IF(LEFT(A1,2)="- ",MID(A1,3,999),A1),FIND("^",SUBSTITUTE(IF(LEFT(A1,2)="- ",MID(A1,3,999),A1) & "^"," ","^",5))-1))," ",",") 

enter image description here

0

이 시도 :

=SUBSTITUTE(LEFT(SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(A1,"- ","",1))&" "," ",", "),", ","|",MIN(LEN(SUBSTITUTE(TRIM(SUBSTITUTE(A1,"- ","",1))&" "," ",", "))-LEN(SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(A1,"- ","",1))&" "," ",", ")," ","")),5)),FIND("|",SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(A1,"- ","",1))&" "," ",", "),", ","|",MIN(LEN(SUBSTITUTE(TRIM(SUBSTITUTE(A1,"- ","",1))&" "," ",", "))-LEN(SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(A1,"- ","",1))&" "," ",", ")," ","")),5)))-1),",,",",") 

수식은 다음 단계를 수행하여 작동합니다.

  • 은 적은 5의와 수를 계산
  • 공백 대신에 선행 또는 후행 공백을
  • 삽입 쉼표 공간 트림 선행 대시 공간을 제거하고 콤마 공간
  • 를 추가 문자열의 단어 개수
  • "|" 문자열이 다섯 단어 미만인 경우 다섯 번째 쉼표 - 공백 또는 후행 쉼표 - 공백 대신
  • "|"
  • "|" 그리고
  • 의 오른쪽에있는 모든 문자는 때문에 당신이 VBA 솔루션을 고려하고자하는 경우

는이 복잡한 식을 사용자가 교체 할 수있는 초기 문자열에서 단일 임베디드 쉼표로 쉼표를 두 배로 제거하십시오 -defined 기능 :이 코드를 사용하는 플러스 측면에서

Function words5(InputString As String) As String 
    Dim wordArray As Variant 
    wordArray = Split(Trim(Replace(InputString, _  'remove "-", put words into array 
     "-", "", , 1)), " ") 
    ReDim Preserve wordArray(LBound(wordArray) To _  'drop all but the first 5 words 
     WorksheetFunction.Min(UBound(wordArray), 5 - 1)) 
    words5 = Replace(Join(wordArray, ", "), ",,", ",") 'rejoin the words with ", " 
End Function            'separator 

은 이해하거나 안전하게 하나의 표현으로 결합 된 원래의 빌딩 블록에 액세스하지 않고 변경할 불가능 워크 시트 수식에 비해 그 유지 보수입니다.

코드는 사용되는 통합 문서 또는 표준 Personal.xlsb 통합 문서 또는 추가 기능 통합 문서에 설치해야합니다.

이 기능을 사용하려면 VBA 편집기를 통해 통합 문서에 삽입 할 수있는 표준 모듈에 복사하여 붙여 넣습니다. 리본 메뉴의 'Developer'탭에있는 Visual Basic 버튼을 사용하여 편집기를 열 수 있습니다.

+0

문자열 시작 부분에 "-"가있을 때 쉼표를 결과의 시작 부분에 남겨 둡니다. 쉼표를 제거하려면 어떻게합니까? – user765368

+0

"-"뒤에 항상 공백이 오는가? – chuff

+0

예 항상 하나 이상의 공백이 계속됩니다. – user765368

1

여분의 공백 텍스트에이있는 경우가 대시 후 하지 않는 공간 또는 경우에도이 작동합니다. 종종 나는 그 입력이 매우 깨끗한되지 않습니다 찾으십시오. 편집

Example of possible spaces or missing spaces

=SUBSTITUTE(LEFT(SUBSTITUTE(TRIM(SUBSTITUTE(A1,"-","",1)), " ","*",5),IFERROR(FIND("*",SUBSTITUTE(TRIM(SUBSTITUTE(A1,"-","",1)), " ","*",5))-1,999))," ",",") 

:
이스트 반의에 논평 한 후, 나도 내 막강했다.

Fixes all now

=SUBSTITUTE(LEFT(SUBSTITUTE(TRIM(SUBSTITUTE(LEFT(TRIM(A1),1),"-"," ",1) 
&MID(TRIM(A1),2,999))," ","*",5),IFERROR(FIND("*",SUBSTITUTE(
TRIM(SUBSTITUTE(LEFT(TRIM(A1),1),"-","",1)&MID(TRIM(A1),2,999))," ","*",5))-1,999))," ",",") 

는하지만 자신이 더 우아한라고 생각합니다.

+0

문자열 시작 부분에 "-"가있을 때 쉼표를 결과의 시작 부분에 남겨 둡니다. 쉼표를 제거하려면 어떻게합니까? – user765368

+0

@ user765368 아니요. 이런 일이 발생하는 예를 제공해주십시오. – MakeCents

+1

오, 당신은 이스트 반의 완벽한, 그리고 지금 당신의 것입니다. +1 너무! –

2

이 시도 :

= TRIM (LEFT (대체 (대체 (TRIM (대체 (A1, "-", "")), "", ""), ",", REPT (" ", 99), 5), 99))

+0

그 사람은 "내 동생의 아내를 사랑합니다."와 같이 "실패"할 수도 있습니다. –

+1

다른 포스터가이 문제를 처리했는지 확인하려고 했으므로 "- 형의 아내를 사랑합니다"라고 입력하여 "-, 나, 사랑, 내"를 얻습니다. 나는 "대륙"문법을 가지고 있는데, 아마도 변환 중에 뭔가 잘못되었을 수도 있습니다. –

+0

그 차이점은 무엇인지 모르겠지만, 저의 문구는 저에게 효과적이며, 그렇지 않습니다. 이 질문은 다소 혼란스러워 보입니다. 혼자서 해결해야만하는 경우, 검색 및 바꾸기로 시작하여 대시를 제거해야합니다. –

0

피규어 나는 반지에도 모자를 던질 것입니다. 나는이 수식이베이스를 포함해야한다고 생각합니다 :

=SUBSTITUTE(TRIM(LEFT(SUBSTITUTE(TRIM(SUBSTITUTE(A1&" ","- ",""))," ",REPT(" ",99)),99*5))," ",",") 
관련 문제