我有一串字符串,如下所示。我怎樣才能把符號'<'放在字符之間?把符號放在Excel中的字符串之間
'ABCDE'
'BCG'
'ABCD'
預期的輸出應該是:
A<B<C<D<E
B<C<G
A<B<C<D
我有一串字符串,如下所示。我怎樣才能把符號'<'放在字符之間?把符號放在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,「<」)'(在需要的時候向下複製。在未使用的列的第一行放置'= INDEX(1:1,LEN(A1))'並且複製下來...應該做你想做的事... –
不清楚這是否是一次性操作或者如果你需要反覆這樣做。 目前還不清楚您是否需要公式或VBA解決方案。請編輯您的問題並添加這些缺失的位。 – teylyn