2017-09-29 1 views
2

셀에 다음 텍스트가 있습니다.excel vba - 주어진 문자열에서 텍스트를 추출하는 방법

stackoverflow를 사용하고 있습니다.
Stackoverflow는 질문 및 답변 포럼입니다.
내가 한 줄 더 있다고 가정 해 봅시다.

이 코드를 배열로 나눕니다. 내가 특별히해야 answer till forum.

출력에서 ​​Arr[1]에서 문자열을 검색 할 수있는 방법

Arr[0] = I am using stackoverflow. 
Arr[1] = Stackoverflow is a question and answer forum. 
Arr[2] = Let’s say I have one more line. 

-answer forum

+1

'Mid (Arr (1), Instr (Arr (1), "대답"), 12)'? – YowE3K

답변

1
난 당신이 정확히 모르는 가정합니다

곳에서 단어 "대답은"단어 "포럼"즉, 그 직후 발생하지 않습니다, 그리고 발생 Arr(1) 그 변수 Arr(1)에는 "Stack Overflow is a question and answer site and is not a forum like so many other sites" 문자열이 포함되어 있습니다. (실제로 스택 오버플로에 대한 더 나은 설명입니다!)

Dim temp As String 
Dim result As String 
arr(1) = "Stack Overflow is a question and answer site and is not a forum like so many other sites" 

'Get everything after the first occurrence of "answer" 
temp = Mid(arr(1), InStr(arr(1), "answer")) 

'Get everything before the first occurrence of "forum" 
result = Left(temp, InStr(temp, "forum") + 4) ' + 4 because the InStr will point to the "f" of "forum" 

'result will contain "answer site and is not a forum" 
1

사용 문자열입니다.

여기서 13은 부분 문자열의 길이로 대체 될 수 있습니다. 길이가 인덱스 범위를 벗어나는 예외를 발생시키지 않는지 확인하십시오.

+0

VBA 질문이 아니라 VB.Net. (VBA는 선언문에서 변수의 초기화를 허용하지 않습니다.) 그리고 VBA ** 또는 ** VB.Net이'()'대신'[]'를 허용한다고 생각하지 않습니다. – YowE3K

+0

Eh? VBA 코드입니다 ... –

+0

그리고 VBA는 OOB를 제공하지 않습니다. 'right ("abc", 10)'는 단지 "abc"'를 반환 할 것이다. – YowE3K

1

유스 케이스에 따라 가장 강력한 답변이 아닐 수도 있습니다. 그러나 right() 함수가 작동합니다.

answerString = Right(Arr(1), 13) 
'answer forum. 
+1

유럽에서 아침입니다 ;-) – FunThomas

+0

잘 모르겠습니다 - 할 수 있습니다. – FunThomas

+0

@ YowE3K 아하 네 말이 맞아. 원래 게시물에서 똑바로 복사했습니다. 하지만 네,'()'이어야합니다. 반영 할 답변을 편집했습니다. –

관련 문제