2015-06-21 4 views
-1

Я надеюсь, что кто-то может помочь мне с макросом для некоторых манипуляций с текстом в Excel.Excel для изменения содержания выбора

Вопрос:

Как я могу изменить содержание выбранных ячеек (даже целые столбцы/строку) с помощью макроса? Как должен выглядеть этот макрос?

Есть несколько правил, которые я ищу, чтобы следовать в процессе:

  • Давайте предполагать, что мы имеем следующее содержание в ячейках A1-A5:

    A1: некоторые текстовые, AZX

    A2: другой текст, Kvfr

    A3: Random TEXT, мот

    А4: Текст текст, текст, LPK

    А5: Любой другой случайный текст, KKJ

-> После выбора ячейки A1-A5, или даже весь столбец А и затем запустить макрос, то результат должен быть:

A1: Azx some text 

A2: Kvfr Some OtHer text 

A3: Mot Random TEXT 

A4: Lpk Text text, text 

A5: Kkj Any other random text 

в основном я должен принимать группы как ", aZx"; ", Kvfr"; ",mot"; ", LPK"; ",KKj", преобразуйте их в "Azx"; "Kvfr"; "Mot"; "Lpk"; "Kkj", а затем переместите их перед текстом в этой ячейке.

Эти группы букв могут быть жестко закодированы в макросе.


Моя первая идея состоит в том, чтобы поместить все выражения, которые я заинтересован в массивах, как это:

Dim basicExpr(1 To 5) As String 
basicExpr(1) = ", aZx" 
basicExpr(2) = ", Kvfr" 
basicExpr(3) = ",mot" 
basicExpr(4) = ", LPK" 
basicExpr(5) = ",KKj" 

Dim replaceExpr(1 To 5) As String 
replaceExpr(1) = "Azx " 
replaceExpr(2) = "Kvfr " 
replaceExpr(3) = "Mot " 
replaceExpr(4) = "Lpk " 
replaceExpr(5) = "Kkj " 

Тогда я хочу, чтобы перебрать все выделенные ячейки и проверьте значения от basicExpr (также проверьте, находится ли значение в конце строки) и соответствующим образом обработайте ячейку.

Set cellRange = Application.Selection 
For Each Cell In cellRange 

На данный момент я застрял, как я не знаю, как выбрать с instrrev от последней запятой до конца строки, то заглавным его и переместить его в передней части строки.

+0

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

+0

Да, это то, что я ищу. –

+0

Тогда 'instrrev' найдет последнюю запятую,' strconv' преобразует в заголовок, а 'для каждого' будет проходить через' selection.cells'. – GSerg

ответ

0

Если вы всегда хотите переместить текст, найденный после запятой, то этот код сделает это.

Option Explicit 

Public Sub rearrangeTheText() 

Dim cellRange As Range 
Dim cell As Range 
Dim positionFound As Integer 
Dim theWholeText As String 
Dim theSmallPart As String 

Const TEXT_TO_FIND As String = "," 

    Set cellRange = Application.Selection 

    For Each cell In cellRange 
     theWholeText = CStr(cell.Value) 
     ' Look for last TEXT_TO_FIND 
     positionFound = InStrRev(theWholeText, TEXT_TO_FIND, , vbTextCompare) 
     If positionFound > 0 Then 
      ' Get the text that is after TEXT_TO_FIND 
      theSmallPart = Trim$(StrConv(Mid$(theWholeText, positionFound + Len(TEXT_TO_FIND)), vbProperCase)) 
      ' Delete the text and TEXT_TO_FIND from the end 
      theWholeText = Trim$(Mid$(theWholeText, 1, positionFound - 1)) 
      ' Add the text to the front, separated by a space 
      theWholeText = theSmallPart & Space(1) & theWholeText 
      ' Update the cell 
      cell.Value = theWholeText 
     End If 
    Next cell 

End Sub 
0

Как насчет:

=PROPER(RIGHT(A1,3))&" "&LEFT(A1,LEN(A1)-5) 

5 основано на вашем примере с «AZX» в конце - если это изменения вам придется изменить его. Нет макроса, просто функция в ячейке.

+0

Это 5 не всегда будет там, так как содержимое ячейки всегда будет меняться. В то же время макрос должен применяться к выделенным ячейкам. –

+0

Итак, в вашем примере вы видите запятую, затем пробел, а затем 3 символа, которые вы Интересно, как комбинация этих 5 изменяет? длина может быть любой - если вы не нажмете 255, я думаю ... –

+0

Это потому, что в конце мы можем иметь более 3 букв, это может быть 4 или 5 четных и позиция запятой, как ожидается, не будет всегда такой, могут быть также такие пробелы, как: «, KvFr»; «, KvfR» или другие комбинации. –

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