2016-08-15 71 views
0

我有一串字符串,如下所示。我怎樣才能把符號'<'放在字符之間?把符號放在Excel中的字符串之間

'ABCDE' 
'BCG' 
'ABCD' 

預期的輸出應該是:

A<B<C<D<E 
    B<C<G 
    A<B<C<D 
+0

像這樣:'B1:= REPLACE(A1,COLUMN()* 2-2,0,「<」)'(在需要的時候向下複製。在未使用的列的第一行放置'= INDEX(1:1,LEN(A1))'並且複製下來...應該做你想做的事... –

+0

不清楚這是否是一次性操作或者如果你需要反覆這樣做。 目前還不清楚您是否需要公式或VBA解決方案。請編輯您的問題並添加這些缺失的位。 – teylyn

回答

1

=concatenate(left(A1,1),"<",mid(A1,2,1),"<",mid(A1,3,1),(if(len(A1)>3,"<"&mid(A1,4,1)&if(len(A1)>4,"<"&mid(A1,5,1),""),"")))

會做你想要什麼長達5個字母,並儘可能少的3個字母的值。否則,你可以改變它。

基本上它會在前3個字母之間加上一個「<」,然後檢查字符串是否長於3個字母,如果是,則添加更多「<」字符。如果這需要更加動態化,那麼在vba中更容易。

0

手動的,一次性的,沒有VBA方法是:

  • 使用文本分列工具,固定寬度和放置標記每個字符之後。
  • 然後用公式這樣的附加價值和隔板

的公式看起來是這樣的,如果你的價值觀是在第1行

=A1&IF(LEN(B1)>0,">"&B1,"")&IF(LEN(C1)>0,">"&C1,"")&IF(LEN(D1)>0,">"&D1,"")&IF(LEN(E1)>0,">"&E1,"") 

調整配方,以適應的最大字符數一個小區。

0

這樣的事情是不是公式...

如你意疑問句作爲Excel的VBA太多,所以:

''''''' 
Private Sub sb_Test_fp_AddSym() 
    Debug.Print fp_AddSym("abncd", "<") 
End Sub 

Public Function fp_AddSym(pStr$, pSym$) As String 
Dim i&, j&, iLB&, iUBs&, iUBt& 
Dim tSrc() As Byte, tTgt() As Byte, tSym As Byte 

    tSrc = pStr 
    tSym = Asc(pSym) 

    iLB = LBound(tSrc) 
    iUBs = UBound(tSrc) 
    iUBt = iUBs * 2 + 3 
    ReDim tTgt(iLB To iUBt) 

    For i = iLB To iUBs Step 2 
     j = i * 2 
     tTgt(j) = tSrc(i) 
     tTgt(j + 1) = tSrc(i + 1) 
     tTgt(j + 2) = tSym 
     tTgt(j + 3) = 0 
    Next 

    ReDim Preserve tTgt(iLB To (iUBt - 4)) 

    Debug.Print tTgt 
    Stop 
    fp_AddSym = tTgt 
End Function 
''' 
0

這爲我工作:

Sub SymbolInsert() 
    Dim cl As Range, temp As String 

    For Each cl In Range("A1:A3") '~~~> Define your range here 

     For i = 1 To Len(cl) 
      temp = temp & Mid(cl, i, 1) & "<" 
     Next i 

     cl = IIf(VBA.Right$(temp, 1) = "<", VBA.Left$(temp, Len(temp) - 1), temp) 
     temp = vbNullString 

    Next cl 
End Sub 
0

它可以大概可以用Excel公式完成任意長度,但這裏是最短的VBA解決方案

For Each c In Range("A:A").SpecialCells(xlCellTypeConstants) 
    c.Value2 = Replace(Left$(StrConv(c, vbUnicode), Len(c) * 2 - 1), vbNullChar, "<") 
Next