2016-08-15 6 views
0

У меня есть столбцы строк следующим образом. Как я могу поместить символ «<» между символами?Поместите символы между строкой в ​​Excel

'ABCDE' 
'BCG' 
'ABCD' 

Ожидаемый результат должен быть:

A<B<C<D<E 
    B<C<G 
    A<B<C<D 
+0

Нравится это: 'B1: = REPLACE (A1, COLUMN() * 2-2,0," <")' (копируйте вниз и вправо по мере необходимости. В первой строке неиспользуемого столбца положите '= INDEX (1: 1,, LEN (A1))' и скопируйте ... сделайте то, что хотите ... –

+0

Непонятно, является ли это одноразовой операцией или если вам нужно сделать это несколько раз. Также неясно, хотите ли вы формулу или решение VBA. Измените свой вопрос и добавьте эти недостающие бит. – teylyn

ответ

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

0

пособие, единовременное, нет-VBA подход не будет:

  • использовать текст для Columns инструмента с фиксированной шириной и поместить маркеры после каждого символа.
  • затем использовать формулу, как это добавляет значения и сепаратор

формула может выглядеть следующим образом, если ваши значения в строке 1

=A1&IF(LEN(B1)>0,">"&B1,"")&IF(LEN(C1)>0,">"&C1,"")&IF(LEN(D1)>0,">"&D1,"")&IF(LEN(E1)>0,">"&E1,"") 

Отрегулируйте формулу, чтобы удовлетворить максимальное количество символов в клетка.

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 
''' 
0

Это работает для меня:

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 
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 

 Смежные вопросы

  • Нет связанных вопросов^_^