2016-09-16 2 views
0

일부 제품에 대한 인벤토리 목록이 Excel에 있습니다. 세포의 중간을 특정 데이터로 대체해야합니다. Excel 셀 중간을 교체하는 방법은 무엇입니까?

는의 각 셀은 같은 데이터가 있다고 가정 해 봅시다 :

Ronald RFD2322 Green 34 x 55 Large 

을하지만, 각 셀은 다르다.

하나는 위와 같이 할 수 있으며, 아래와 내가 이름, 모델 번호 (RFD2322)처럼 보이는 중간 부분을 교체 할 필요가

Ronald RFD8827 Blue 21 x 25 Small 

수 있지만, 일부 이름은 다른. 그래서 내가 다시 갈 수 및 수동으로 수정하는 방법을 적어도 빈 공간이 셀의 중앙을 대체 할 세포가 아무도 그것에 대한 대답이없는 경우

Ronald Jimmy Green 34 x 55 Large 
Ronald Sarah Blue 21 x 25 Small 

같이해야합니까? 데이터 열의이었다 치환 될 경우

+0

* 모든 제품 *은 'RFD'로 시작합니까? 아니면 'RF', 아니면 ...? 어떤 텍스트, 사람의 이름 등이 아닌 제품 ID인지 어떻게 알 수 있습니까? (항상 7자를 가질 것인가? 항상 R로 시작하고 7 자 등일 것인가? 패턴을 감지하는 방법이 필요하다. 그러면 매우 간단해진다.) – BruceWayne

+0

위와 함께 테이블이 있는가? 대체해야 할 부분을 교체해야하는 부분과 동일시합니다. –

+0

예, 모두 RFD로 시작하고 그 뒤에 4 자리 숫자가 있기 때문에 각각 7 자입니다. 또한 예, 모델 번호가있는 공간에 이름을 넣을 필요가 있습니다. – DigitalWalrus

답변

0

이 수식은 Ronald Green 34 x 55 Large 가정 데이터가 문제 찾고 셀 A1

=LEFT(a1,FIND(" ",a1)-1)&MID(a1,FIND(" ",a1,FIND(" ",a1)+1),99) 

에 반환되며, 이는 더 의미가있다. 예 : JimmyB1

=LEFT(a1,FIND(" ",a1)-1)&B1&MID(a1,FIND(" ",a1,FIND(" ",a1)+1),99) 

에 NB 경우 99 당신이 많은 자보다 더해야합니다 기대하지 않는 선택, 임의의 숫자입니다. LEFTRIGHT 함수의 경우 선택 사항이므로 바보 같지만 MID은 필수입니다.

+0

주의 - 두 번째 문자열이 RFD 번호 인 경우이 방법이 사용 가능합니다. 그것이 다른 곳에 있다면 그것은 작동하지 않습니다. – BruceWayne

+0

잘 작동했지만 데이터가 RonaldJimmy Green 34 x 55 Large로 반환됩니다. 이름 사이에 공백을 추가하는 방법은 무엇입니까? – DigitalWalrus

+0

@TayseNick -'= LEFT (a1, FIND ("", a1) -1) & MID (a1, FIND ("", a1, FIND ("", a1) +1), 99)' – BruceWayne

0

VBA를 사용해도 괜찮 으면 여기 RegEx를 사용하는 방법이 있습니다. A1 셀은 "로널드 블루 RFD8827 21 × 25 작은"경우

Function simpleCellRegex(Myrange As Range) As String 
    ' Shamelessly lifted from https://stackoverflow.com/a/22542835/4650297 
    Dim regEx As New RegExp 
    Dim strPattern As String 
    Dim strInput As String 
    Dim strReplace As String 
    Dim strOutput As String 


    strPattern = "[R][F][D]...." 

    If strPattern <> "" Then 
     strInput = Myrange.Value 
     strReplace = "" 

     With regEx 
      .Global = True 
      .MultiLine = True 
      .IgnoreCase = False 
      .Pattern = strPattern 
     End With 

     If regEx.test(strInput) Then 
      simpleCellRegex = regEx.Replace(strInput, strReplace) 
     Else 
      simpleCellRegex = "Not matched" 
     End If 
    End If 
End Function 

그래서, B1에서, 단지 =simpleCellRegex(A1)는 않습니다. Regex 참조가 추가되었는지 확인하십시오. 수행하려면 Step 1 here을 참조하십시오.

여기서 한 가지 이점은 RFD ####이 셀의 어느 위치 에나있을 수 있으며 제거된다는 것입니다. 당신은 아마도 이것도 공식으로 얻을 수 있지만, 나는 그들이 꽤 복잡하고 까다로워 질 것이라고 생각하고 있습니다.

+0

감사합니다. 이전 솔루션이 훌륭하게 작동했습니다. 나는 VBA에 익숙하지 않다. 정말 감사. – DigitalWalrus

+0

@TayseNick - 걱정할 필요가 없습니다. VBA를 매크로에 넣기 만하면됩니다. [방법을 보여주는 페이지는 다음과 같습니다] (https://www.ablebits.com/office-addins-blog/2013/12/06/add-run-vba-macro-excel/),'= simpleCellRange (a1) 'Excel에서, 마치'= Sum()', 등등입니다. – BruceWayne

관련 문제