Страницы: 1
RSS
Выполнить сцепку ячеек добавляя пробелы
 
Есть такой отчет.
N-е количество колонок, в каждой информация, но их все нужно преобразовать в txt формат, выдерживая длину строки например - 141 символ.
Для этого опредилена длина каждой ячейки. 1-3;4-23;24-43 и т.д.
Но, данные в каждой ячейке короче, например не 20 символов, а 8.
Как сцепить в первой колонке все эти ячейки заполняя остаток символов пробелами.
 
При сцепке к каждой ячейке добавляете максимум (для неё) символов, от этой сцепки берёте только этот максимум (справа или слева, смотря как делать и что нужно)..
 
Типа вот так:
B10&ПСТР(C10&"                                                   ";1;C$1)&ПСТР(D10&"                                                   ";1;D$1)&ПСТР(E10&"                                                   ";1;E$1)&ПСТР(F10&"                                                   ";1;F$1)&ПСТР(G10&"                                                   ";1;G$1)&ПСТР(H10&"                                                   ";1;H$1)&ПСТР(I10&"                                                   ";1;I$1)&ПСТР(J10&"                                                   ";1;J$1)&ПСТР(K10&"                                                   ";1;K$1)&ПСТР(L10&"                                                   ";1;L$1)&ПСТР(M10&"                                                   ";1;M$1)&ПСТР(N10&"                                                   ";1;N$1)
 
а без формул? в чем задача можете написать?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Hugo написал:
При сцепке к каждой ячейке добавляете максимум (для неё) символов, от этой сцепки берёте только этот максимум
=...&ЛЕВСИМВ("короткий текст"&ПОВТОР(" ";20);20)&...
 
Цитата
Ігор Гончаренко написал:
а без формул? в чем задача можете написать?
Так выше все есть с примером.
Итог получить ячейку в определенном формате с 141 символом (например) для того что б потом это сохранить в txt формате
 
можете допустить такую мысль,что из вашего примера не понятно что нужно получить в итоге?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
1 UDF
Код
Function JoinStr$(arr, Optional delim$ = "")
    JoinStr$ = Join(arr, delim)
End Function

и в ячейке массивная формула
Код
=JoinStr(Левб(ЗАМЕНИТЬ(ПОВТОР(" ";B$7:M$7);1;ДЛСТР(СЖПРОБЕЛЫ(B8:M8));СЖПРОБЕЛЫ(B8:M8));B$7:M$7))


или UDF
Код
Function JoinFixedLenghts$(l As Variant, s As Variant)
    Dim n, i
    For Each n In l
        i = i + 1
        stmp = Left(Trim(s(i)), n)
        stmp = stmp & Space(n - Len(stmp))
        x = x & stmp
    Next
End Function

и в ячейке
Код
=JoinFixedLengths(B$7:M$7;B8:M8)
Изменено: Андрей Лящук - 28.11.2019 13:54:46
 
romantsov, готовое решение
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх