2015-06-21 72 views
-1

我希望有人可以幫助我一個宏在Excel中的一些文本操作。Excel來改變選擇的內容

問:

如何更改選定的單元格(乃至列/行)的使用宏的內容?宏應該怎麼樣?

有跡象表明,我期待在這個過程中遵循一些規則:

  • 讓我們假定我們在單元格A1-A5以下內容:

    A1:一些文字,嘧菌酯

    A2:其他一些文字,Kvfr

    A3:隨機文本,MOT

    A4:文本文字,文本,LPK

    A5:任何其他隨機文本,KKJ

- >選擇所述單元A1-A5或甚至整個列A,然後運行宏後,將結果應該是:

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'會轉換爲標題大小寫,'for each'將循環遍歷'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」或其他組合。 –