У меня есть столбцы строк следующим образом. Как я могу поместить символ «<» между символами?Поместите символы между строкой в 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 букв, и если да, добавляет больше символов «<». Если это должно быть более динамичным, это намного проще в 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