Страницы: 1
RSS
Соеденить ячейки в соответвии друг с другом
 
Есть
1. В одной ячейки значения 3333 4444 разделенные переносом строки
2. В другой ячейки  значения aaa bbb

Надо
Чтобы в новой ячейки было 3333aaa перенос строки 4444bbb

см. скриншот, чтобы более наглядно было
 
Код
=СЦЕПИТЬ(ЛЕВСИМВ(E2;ПОИСК(СИМВОЛ(10);E2)-1);ЛЕВСИМВ(F2;ПОИСК(СИМВОЛ(10);F2)-1);СИМВОЛ(10);ПСТР(E2;ПОИСК(СИМВОЛ(10);E2)+1;99);ПСТР(F2;ПОИСК(СИМВОЛ(10);F2)+1;99))
 
Спасибо, на 2х значениях в каждой ячейке работает корректно, если делаю 3, то некорректно, как сделать, чтобы корректно хотя бы для 10 значений было?
 
Вариант решения на Power Query. Универсальный, для любого количества перенесенных строк.
Вот горшок пустой, он предмет простой...
 
Ну хорошо смотрите, как и что есть

1. Этот кусок -
Код
=СЦЕПИТЬ(ЛЕВСИМВ(E2;ПОИСК(СИМВОЛ(10);E2)-1);ЛЕВСИМВ(F2;ПОИСК(СИМВОЛ(10);F2)-1);СИМВОЛ(10); 
состоит из двух кусочков
а.
Код
ЛЕВСИМВ(E2;ПОИСК(СИМВОЛ(10);E2)-1); 
берем из ячейки E2 начиная с первой позиции количество символов, которое встретим до переноса строки, количество символов сопадает с позицией курсора перед последним символов, а она равна позиция курсора за последним символов -1, все этот кусок вытаскивает первые символы до переноса в ячейки E2

б.

Код
ЛЕВСИМВ(F2;ПОИСК(СИМВОЛ(10);F2)-1); 

аналогично пункту а, только ячейка F2. Сцепляем все в одной ячейки, пункт а + пункт б

Код
=СЦЕПИТЬ(ЛЕВСИМВ(E2;ПОИСК(СИМВОЛ(10);E2)-1);ЛЕВСИМВ(F2;ПОИСК(СИМВОЛ(10);F2)-1); 
получаем 3333aaa (если первый скрин приложенный)

3. Далее цепляется символ переноса строки
Код
;СИМВОЛ(10);
4. Далее ищем подстроку в ячейки E2, которая начинается с позиции переноса строки+1 и длина ее 99,

Код
ПСТР(E2;ПОИСК(СИМВОЛ(10);E2)+1;99) 
и цепляем ее                                      
5. Тоже самое но из ячейки F2

Код
ПСТР(F2;ПОИСК(СИМВОЛ(10);F2)+1;99)) 

PS Вроде разобрал правильно работает данная штука только если по 2 значения вписаны в ячейках, т.е словами алгоритм звучит так - берем начала строки в первой ячейки, забираем символы до символа переноса, берем начало второй ячейки забираем символы до символа переноса, сцепляем это, делаем перенос, берем остатки первой ячейки и сцепляем с остатками второй ячейки
Изменено: D.Frolov - 27.01.2020 16:46:21
 
D.Frolov, можно макросом
Код
Public Sub gogo()
Dim myCell() As Variant, myCell2() As Variant, i As Long, a As Variant, V As String, f As Long

a = Cells(Rows.Count, 1).End(xlUp).Row

ReDim myCell(a)
ReDim myCell2(a)

On Error Resume Next

    For i = 1 To a
    
    myCell(i) = Split(Cells(i, 1), vbLf)
    myCell2(i) = Split(Cells(i, 2), vbLf)
    
        For f = 0 To UBound(myCell2(i))
        
        V = V & vbLf & myCell(i)(f) & myCell2(i)(f)
        Next f
        
     Cells(i, 3) = Mid(V, 2)
     V = ""
    Next i

End Sub

 
D.Frolov, на последних версиях excel есть вункции, которых сильно нехватает для решения этой задачи. А без них формульные варианты будут всегда ограничены по количеств таких вхождений, если их не много, от можно навоять и . Тут или платить и обновляться или использовать другие инструменты.
=TRIM(MID(SUBSTITUTE(CHAR(10)&A1;CHAR(10);REPT(" ";LEN(A1)));1*LEN(A1);LEN(A1)))&TRIM(MID(SUBSTITUTE(CHAR(10)&B1;CHAR(10);REPT(" ";LEN(B1)));1*LEN(B1);LEN(B1)))&CHAR(10)&
TRIM(MID(SUBSTITUTE(CHAR(10)&A1;CHAR(10);REPT(" ";LEN(A1)));2*LEN(A1);LEN(A1)))&TRIM(MID(SUBSTITUTE(CHAR(10)&B1;CHAR(10);REPT(" ";LEN(B1)));2*LEN(B1);LEN(B1)))&CHAR(10)&
TRIM(MID(SUBSTITUTE(CHAR(10)&A1;CHAR(10);REPT(" ";LEN(A1)));3*LEN(A1);LEN(A1)))&TRIM(MID(SUBSTITUTE(CHAR(10)&B1;CHAR(10);REPT(" ";LEN(B1)));3*LEN(B1);LEN(B1)))&CHAR(10)&
TRIM(MID(SUBSTITUTE(CHAR(10)&A1;CHAR(10);REPT(" ";LEN(A1)));4*LEN(A1);LEN(A1)))&TRIM(MID(SUBSTITUTE(CHAR(10)&B1;CHAR(10);REPT(" ";LEN(B1)));4*LEN(B1);LEN(B1)))&CHAR(10)&
TRIM(MID(SUBSTITUTE(CHAR(10)&A1;CHAR(10);REPT(" ";LEN(A1)));5*LEN(A1);LEN(A1)))&TRIM(MID(SUBSTITUTE(CHAR(10)&B1;CHAR(10);REPT(" ";LEN(B1)));5*LEN(B1);LEN(B1)))&CHAR(10)&
TRIM(MID(SUBSTITUTE(CHAR(10)&A1;CHAR(10);REPT(" ";LEN(A1)));6*LEN(A1);LEN(A1)))&TRIM(MID(SUBSTITUTE(CHAR(10)&B1;CHAR(10);REPT(" ";LEN(B1)));6*LEN(B1);LEN(B1)))

По хорошему надо убрать двойные переводы строк в конце см. файл

Соответвенно, если разделитель иной, то его нужно поменять в той или другой части формулы
Изменено: БМВ - 28.01.2020 15:05:56
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх