Страницы: 1
RSS
Как при использовании функции сцепить убрать ненужные нули
 
Доброй ночи.
Подскажите пожалуйста.
1.  Есть ряд значений и требуется все сцепить на автомате на первом листе.
    Но если попадаются нулевые значения, или прочерки, то как прописать чтобы они в итоге не фигурировали?

     =СЦЕПИТЬ(A10;" / ";A11;" / ";C11;" * ";D10;" * ";E10;E3)       Здесь все верно: Прямоугольная / Доска / 1,25 * 0,72 * 3шт.

     =СЦЕПИТЬ(A19;" / ";A20;" / ";C20;" * ";D19;" * ";E19;E3)       В данной сцепки основываясь на второй дефис нужно данную сцепку отключить:   - /  - / 0 * 0 * 1шт.

2. Как сделать чтобы от выбранной даты к примеру 20.09.2020 полученные сцепки собирались в колонку последовательно на втором листе?
 
пример будет?
Соблюдение правил форума не освобождает от модераторского произвола
 
Можно по такой логике:
сцепляем через пробел
ячейки, в которых пробел заменён на что-то чего точно нет в значениях
результат сцепления обрабатываем СЖПРОБЕЛЫ()
пробелы заменяем на /
то на что заменяли пробелы заменяем на пробелы.
 
Цитата
buchlotnik написал:
пример будет?
Вот пример
Исходя из рассуждений нужно чтобы желтые строчки исчезли или просто не формировались по привязке к второму дефису и нижняя итоговая сумма поднималась вверх на 3 строчки.
Может есть мысли как  сделать так?
 
Валерий, структура получается всегда такая?  строка №1 и под ней всегда 2 строк данных*??

макрос подойдет? если да то куда выводить результат?
Изменено: Mershik - 20.09.2020 13:18:34
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
Валерий , структура получается всегда такая?
Я в макросах не пониманию ничего, без них пытаюсь собрать.
Такие таблиц на листе штук 200 (заготовки) и на против них правее основываясь на число требуется вытаскивать вот эти данные в строчку правее. Если нуле идут то просто чтобы мусор этот фильтровался и строчки выдергивались с параметрами вбитыми. Подвязаться можно к второму дифису он важный показатель строчки нужная она или пустышка
Изменено: Валерий - 20.09.2020 13:24:55
 
Валерий, ну накидал макрос, а вот формулами достаточно объемно думаю..
Код
Sub ddddddddd()
Dim i As Long, lr As Long
k = 1 ' номер строки с которой начинать вставлять результат
lr = Cells(Rows.Count, 1).End(xlUp).Row 
For i = 1 To lr Step 3
    If Cells(i + 1, 3) > 0 Then
        Cells(k, 14) = Cells(i + 1, 1) & " / " & Cells(i + 2, 1) & " / " & Cells(i + 2, 3) & " * " & Cells(i + 1, 4) & " * " & Cells(i + 1, 5) & Cells(1, 5)
        k = k + 1
    End If
Next i
    Cells(k, 14) = Cells(lr + 1, 6) & " " & Cells(lr + 1, 7)
End Sub
Изменено: Mershik - 20.09.2020 13:34:00
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
Mershik
Спасибо! Работает отлично, но я не могу на макросах, мне попроще нужно с кучей формул ))))  
 
Цитата
Валерий написал:
мне попроще нужно с кучей формул
ловите для столбца P
в строке 1 остается Ваша формула:
Код
=СЦЕПИТЬ(A2;" / ";A3;" / ";C3;" * ";D2;" * ";E2;E1)
в строку 2 формула и протянуть вниз:
Код
=ЕСЛИ(ИНДЕКС($A:$L;СТРОКА(P2)*3+1+1;3)>0;ИНДЕКС($A:$L;СТРОКА(P2)*3+1+1;1)&" / "&ИНДЕКС($A:$L;СТРОКА(P2)*3+1+2;1)&" / "&ИНДЕКС($A:$L;СТРОКА(P2)*3+1+2;3)&" * "&ИНДЕКС($A:$L;СТРОКА(P2)*3+1+1;4)&" * "&ИНДЕКС($A:$L;СТРОКА(P2)*3+1+1;5)&$E$1;ЕСЛИ(СЧЁТЕСЛИ($P$1:P2;ИНДЕКС($F:$F;СЧЁТЗ($C:$C)+1;1)&" "&ИНДЕКС($G:$G;СЧЁТЗ($C:$C)+1;1))>=1;"";ИНДЕКС($F:$F;СЧЁТЗ($C:$C)+1;1)&" "&ИНДЕКС($G:$G;СЧЁТЗ($C:$C)+1;1)))
удачи :D (зря боитесь макросов)
Не бойтесь совершенства. Вам его не достичь.
 
А ещё можно свою UDF написать под эту конкретную задачу, но итоговую строку при использовании формул будете поднимать вручную.
 
Цитата
Hugo написал:
UDF
вы что упаси Боже - это же макрос) ;)  
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
Mershik
Эксель почему-то на цикличность ругается ?
Формула бомба)))
 
Валерий, что за "цитата" в #12? Хотите обратиться по имени?- так для этого специальная кнопка есть. Она так и называется -"Имя"
 
Юрий М,
Понял, буду знать!
 
Валерий, мой косяк - заменить со второй строки формулу на
Код
=ЕСЛИ(ИНДЕКС($A:$L;СТРОКА(P1)*3+1+1;3)>0;ИНДЕКС($A:$L;СТРОКА(P1)*3+1+1;1)&" / "&ИНДЕКС($A:$L;СТРОКА(P1)*3+1+2;1)&" / "&ИНДЕКС($A:$L;СТРОКА(P1)*3+1+2;3)&" * "&ИНДЕКС($A:$L;СТРОКА(P1)*3+1+1;4)&" * "&ИНДЕКС($A:$L;СТРОКА(P1)*3+1+1;5)&$E$1;ЕСЛИ(СЧЁТЕСЛИ($P$1:P1;ИНДЕКС($F:$F;СЧЁТЗ($C:$C)+1;1)&" "&ИНДЕКС($G:$G;СЧЁТЗ($C:$C)+1;1))>=1;"";ИНДЕКС($F:$F;СЧЁТЗ($C:$C)+1;1)&" "&ИНДЕКС($G:$G;СЧЁТЗ($C:$C)+1;1)))
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,
Спасибо большое, все работает!
Страницы: 1
Наверх