将符号放在Excel中的字符串之间

时间:2016-08-15 07:12:08

标签: string excel excel-vba vba

我有一串字符串如下。如何将符号'<'在人物之间?

 'ABCDE'
 'BCG'
 'ABCD'

预期输出应为:

  A<B<C<D<E
  B<C<G
  A<B<C<D

4 个答案:

答案 0 :(得分: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个字母的值,您可以执行所需的操作。否则你可以改变它。

基本上它增加了一个&#34;&lt;&#34;在前3个字母之间然后检查字符串是否长于3个字母,如果是,则添加更多&#34;&lt;&#34;字符。如果这需要更加动态,那么在vba中就更容易了。

答案 1 :(得分:0)

手动,一次性,无VBA方法将是:

  • 使用“固定宽度”的“文本到列”工具,并将标记放在每个字符后面。
  • 然后使用这样的公式来追加值和分隔符

如果您的值在第1行

,公式可能如下所示
=A1&IF(LEN(B1)>0,">"&B1,"")&IF(LEN(C1)>0,">"&C1,"")&IF(LEN(D1)>0,">"&D1,"")&IF(LEN(E1)>0,">"&E1,"")

调整公式以适合单元格中的最大字符数。

答案 2 :(得分: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
'''

答案 3 :(得分: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