2016-09-16 4 views
0

У меня есть список ресурсов для некоторых моих продуктов в Excel. Мне нужно заменить середину ячейки определенными данными.Как заменить середину ячейки Excel?

Допустим, каждая ячейка имеет данные, такие как:

Ronald RFD2322 Green 34 x 55 Large 

Но каждая клетка отличается.

Один может быть как выше, и ниже один может быть

Ronald RFD8827 Blue 21 x 25 Small 

Мне нужно заменить среднюю часть, которая выглядит как номер модели (RFD2322), с именем, но некоторые имена другой. Мне нужно клетки, чтобы выглядеть как

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

Если никто не имеет ответа на то, как, по крайней мере заменить середину клетки с пустым пространством, так что я могу вернуться и исправить его вручную?

+0

Будет ли все * ваших продуктов начинаться с 'RFD'? Или 'РФ', или ...? Как мы можем знать, что это идентификатор продукта, а не какой-то текст, имя человека и т. Д.? (будет ли он всегда иметь 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) 

Глядя на вашу проблему, было бы больше смысла, если данные, которые должны быть заменены был в колонне. Например. если Jimmy в B1

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

NB 99 представляет собой случайное число, выбрана не ожидают, что вы будете иметь больше, чем что многие персонажи. Это глупо, поскольку оно необязательно для LEFT и RIGHT функций, но требуется для 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.

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 

Таким образом, если ячейка A1 "Ronald Синий RFD8827 21 х 25 Малый", в 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

Смежные вопросы