Большой Воронежский Форум
» Программирование>Нужна помощь, за бонус, преобразовать xls файл по шаблону.
Dmitry1980 10:37 17.02.2009
Хай.

Есть такая беда - экселевский файл, с написаными ФИО, нужно написать макрос или формулу, для преобразования файла из->в

Допустим

Из

Иванов 001
Петров 002
Сидоров 003
Пупкин 004
Васюков 005
ИИИванов 006
ПППетров 007
СССидоров 008
ПППупкин 009
ВВВасюков 0010

В

\ Иванов \\ 001 \\ Петров \\ 002 \\ Сидоров\\ 003 \\ Пупкин\\ 004\\ Васюков \\ 005 \
\ ИИИванов \\ 006 \\ ПППетров \\ 007 \\ СССидоров\\ 008 \\ ПППупкин\\ 009\\ ВВВасюков \\ 010 \

Т.е. если грубо - есть 100 фамилий в один столбец, их нужно разместить по 10 в строке, т.е. первые 10 станут в одну строку, 10 других в другую строку и т.п. Я не асилил как это сделать в экселе, можно сделать так, что они будут идти вида 1я_фио/6я_фио/11 и т.п. но это не то, а как сделать так, чтобы ячейка Х=Y а под ней ячейка была Х=Y(но Y через 10 ячеек) я не знаю, т.к. этот Y он берёт из строки ниже, а нужно через 10 ячеек.

Кто сможет сделать и за какой бонус? Нужно только либо формула по преобразованию либо макрос, т.к. фио не сто а больше. Сделать нуно за день-два.

Спасибо. [Ответ]
Yandex 11:00 17.02.2009
Перечитал 2 раза. Долго думал. Не понял.

Надо разместить по 10 в строке, не более чем по 10, что с порядком фамилий в столбце делать - он должен сохраняться?
Две черточки \\ - это просто две черточки в итоговой строке или обозначение, что данные в новом столбце должны лежать?

Что для вот такого набора должно получиться?
A 1
B 2
C 3
D 4
E 5
F 6
G 7
H 8
...

По деньгам за рублей 100-200 можно сделать, если напишешь что надо. [Ответ]
Dmitry1980 11:12 17.02.2009
не совсем так

если проще, то есть 100 ФИО в одном столбце, рядом идут порядковые номера.

Нужно сделать так, чтобы

первые 10 фио и их 10 номеров стали в одну строку
вторые 10 фио и их 10 номеров стали в другую строку
третьи 10 фио и их 10 номеров стали в другую строку
......................
тесятые 10 фио и их 10 номеров стали в другую строку

Маска, по которой должно формироваться должна быть вида
\фио\\номер\\фио\\номер\
т.е. в начале и в конце строки идет "\" ячейки между началом и концом разделяются "\\"
НО - это не принципиально, достаточно просто сделать макрос без знаков синтаксиса "\", но если не затруднит, то лучше с ними. [Ответ]
Dmitry1980 11:17 17.02.2009
\A \\1\\B\\ 2\\C \\3\\D \\4\\E\\ 5\\F\\ 6\\G\\ 7\\H \\8\\Y\\ 9\\ K\\ 10\

НО - это только первые ФИО, соответственно следующие 10 которые были в столбце должны стать также в строку [Ответ]
Yandex 11:21 17.02.2009
Dmitry1980, т.е. просто один столбец по 10 с разделителями нарезать что ли?
Для ускорения результата - можешь в аську кидать камменты. 165016340. [Ответ]
Yandex 11:59 17.02.2009
Результат складируется на второй лист. Данные считываются с первого.
Гони бабки

Код:
Sub Separate()

i = 1

While (Worksheets("Лист1").Range("A" & i).Text <> vbNullString)
    ResultRow = "\"
    For j = 0 To 9
        If Worksheets("Лист1").Range("A" & i + j).Text = vbNullString Then
            Exit For
        End If
        
        ResultRow = ResultRow & Worksheets("Лист1").Range("A" & i + j).Text & " \\" & Worksheets("Лист1").Range("B" & i + j).Text & " \\"
    Next

    i = i + 10
    Worksheets("Лист2").Range("A" & i \ 10).Value = ResultRow
Wend

End Sub
[Ответ]
Вверх