2016-08-15 75 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