把符号放在Excel中的字符串之间
问题描述:
我有一串字符串,如下所示。我怎样才能把符号'<'放在字符之间?把符号放在Excel中的字符串之间
'ABCDE'
'BCG'
'ABCD'
预期的输出应该是:
A<B<C<D<E
B<C<G
A<B<C<D
答
=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中更容易。
答
手动的,一次性的,没有VBA方法是:
- 使用文本分列工具,固定宽度和放置标记每个字符之后。
- 然后用公式这样的附加价值和隔板
的公式看起来是这样的,如果你的价值观是在第1行
=A1&IF(LEN(B1)>0,">"&B1,"")&IF(LEN(C1)>0,">"&C1,"")&IF(LEN(D1)>0,">"&D1,"")&IF(LEN(E1)>0,">"&E1,"")
调整配方,以适应的最大字符数一个小区。
答
这样的事情是不是公式...
如你意疑问句作为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
'''
答
这为我工作:
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
答
它可以大概可以用Excel公式完成任意长度,但这里是最短的VBA解决方案
For Each c In Range("A:A").SpecialCells(xlCellTypeConstants)
c.Value2 = Replace(Left$(StrConv(c, vbUnicode), Len(c) * 2 - 1), vbNullChar, "<")
Next
像这样:'B1:= REPLACE(A1,COLUMN()* 2-2,0,“
不清楚这是否是一次性操作或者如果你需要反复这样做。 目前还不清楚您是否需要公式或VBA解决方案。请编辑您的问题并添加这些缺失的位。 – teylyn