我有一串字符串如下。如何将符号'<'在人物之间?
'ABCDE'
'BCG'
'ABCD'
预期输出应为:
A<B<C<D<E
B<C<G
A<B<C<D
答案 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