Страницы: 1
RSS
Как добавить к содержимому ячейки пробелы, нужно из excel получить содержимое ячеек в текстовый файл с фиксированым количеством символов
 
Добрый день.
Имею файл Excel    base.xlsx

Возможно-ли к содержимому ячеек добавить определенное количество пробелов соблюдая еще и условности?
пример
в ячейке A1 добавить 2 пробела перед содержимым ячейки
в ячейке B1 добавить 16 пробелов после содержимого
в  ячейке C1 добавить 19 пробелов после содержимого и тд
одним словом мне нужно чтоб ячейки столбца А содержали ровно 4 символа
ячейки столбца B и D - 20 символов
ячейки столбца C и E - 25 символов
а ячейки столбца F - 40 символов
чтоб при копировании данных из ексэль в текстовый документ получить такое содержимое  ok.txt

сейчас получаю такое  nok.txt


Понимаю что вряд-ли кто будет решать мою проблему, но если кто знает, подскажить хоть куда искать...

Спасибо и пардоньте если уже было.
Изменено: alexbuh - 17.02.2019 22:40:43 (Подправил))
 
Здравствуйте. Вот это фотогалерея и ни одного файла Excel. лучше один файл Excel, чем все эти картинки.
Цитата
alexbuh написал:
одним словом мне нужно чтоб ячейки столбца А содержали ровно 4 символа
Если вас это устроит то для столбца А можно использовать формулу, а по образцу и для других столбцов.
Код
=ПОВТОР(" ";4-ДЛСТР(A1))&A1
Изменено: gling - 17.02.2019 22:39:37
 
Код
=если(длстр(b1)<20;b1 & повтор(" ";20-длстр(b1));b1)
Изменено: Ігор Гончаренко - 17.02.2019 22:38:35
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
//gling  подправил )
// Ігор Гончаренко Спасибо, попробую
 
=right(rept((" ";4)&A1;4)
=Left(b1&rept(" ";20);20)
По вопросам из тем форума, личку не читаю.
 
alexbuh, вот таким макросом можно сохранить содержимое текущего листа в файл "ok.txt" в папку с книгой
Код
Type Fixed
  a As String * 4
  b As String * 20
  c As String * 25
  d As String * 20
  e As String * 25
  f As String * 40
  g As String * 2
End Type

Sub Al()
Dim v(), i&, f$, t As Fixed
  Open ActiveWorkbook.Path & "\ok.txt" For Random As #1 Len = Len(t)
  v = Range("A1", Cells(Rows.Count, "F").End(xlUp)).Value
  t.g = vbCrLf
  For i = 1 To UBound(v)
    RSet t.a = v(i, 1)
    LSet t.b = v(i, 2)
    LSet t.c = v(i, 3)
    LSet t.d = v(i, 4)
    LSet t.e = v(i, 5)
    LSet t.f = v(i, 6)
    Put 1, , t
  Next
  Reset
End Sub
Изменено: Казанский - 18.02.2019 00:29:28
 
Или так - короче, менее очевидна ширина каждой колонки, но более наглядна начальная позиция каждой колонки
Код
Sub Al_1()
Dim v(), i&
  Open ActiveWorkbook.Path & "\ok.txt" For Output As #1
  v = Range("A1", Cells(Rows.Count, "F").End(xlUp)).Value
  For i = 1 To UBound(v)
    Print #1, Format$(v(i, 1), "@@@@"); v(i, 2); Tab(25); v(1, 3); _
      Tab(50); v(1, 4); Tab(70); v(1, 5); Tab(95); v(1, 6); Tab(135)
  Next
  Reset
End Sub
 
Ігор Гончаренко, Ваша формула работает! Спасибо.
Казанский, кажется, это вообще прям то что надо!

Спасибо! Решено!
Изменено: alexbuh - 18.02.2019 01:43:51
Страницы: 1
Наверх