![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 24.02.2009
Сообщений: 29
|
![]()
ничего лучше с темой не придумалось ))
Дано: в исходной таблице в одном стобце расположены данные Организация/подразделение/должность/фио Иерархия выделена визуально (отступы) и группировкой Нужно: Что-то сделать с этой таблицей ![]() Для того, чтобы потом можно было сводную делать. ![]() Пример в приложении. |
![]() |
![]() |
![]() |
#2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
очень примитивная и костная иерархия. в учебных целях - куда ни шло, но если так описана реальная структура организации... как по мне, то это печально. жмите кнопку, смотрите результаты на новом листе
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 24.02.2009
Сообщений: 29
|
![]()
это сруктура реальной выгрузки из ЗУПа и пока иначе настроить отчет нельзя
![]() спасибо за макрос, вроде бы всё как нужно работает но как он это делает я так до конца и не поняла, если Вам не сложно - прокомметируйте, пожалуйста, код, для общего развития страждущих ![]() |
![]() |
![]() |
![]() |
#4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
1. Sub MakeSructure()
2. Dim Ash As Integer, r2 As Integer, c As Integer 3. Dim stru(3) As String, cl As Range 4. Ash = ActiveSheet.Index 5. Sheets.Add After:=ActiveSheet 6. Sheets(Ash).Activate 7. r2 = 1 8. With Sheets(Ash + 1) 9. For Each cl In Range(Cells(5, 1), Cells(5, 1).End(xlDown)) 10. If cl.IndentLevel < cl.Offset(1).IndentLevel Then 11. stru(cl.IndentLevel / 2 + 1) = cl.Value 12. Else 13. r2 = r2 + 1 14. For c = 1 To 3 15. .Cells(r2, c) = stru(c) 16. Next 17. .Cells(r2, 4) = cl.Value 18. For c = 2 To 7 19. .Cells(r2, c + 3) = Cells(cl.Row, c) 20. Next 21. End If 22. Next 23. End With 24. End Sub Поставил номера к строка для предметности разговора. убрал одно обьявление и один оператор (за ненадобностью) начну комментарии с 9 строки. 9. организовываем цикл по всем ячейкам 1-й колонки, начиная со строки 5 до последней непустой в данной колонке, cl - рассматриваемая в каждом шаге цикла ячека. 10.определяем тут записан элемент организационной структуры предприятия или фамилия сотрудника. определяем по количеству отсупов в ячейках. Исходил из такой логики: подразделение без сотрудников - нонсенс. Поэтому если отступов у текущей ячейки меньше, чем у следующей - значит это название подразделения. 11.имя подразделения заносится в массив stru на свой уровень (1, 2 или 3), в зависимости от количества отступов в ячейке. (визуальный анализ показал, что отступов бывает 0, 2, 4, 8) 13. это работник. начинаем запись его данных на 2-й лист в новую строку 14-16.записываем подразделения, к которым он относится. 17.записываем ФИО сотрудника 18-20.переписываем данные о нем на второй лист все. самая умная строка здесь - это строка 10. которая принимает решение - это сотрудник или элемент структуры.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 24.02.2009
Сообщений: 29
|
![]()
спасибо, буду разбираться
![]() |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body | tabikA | HTML и CSS | 5 | 24.02.2009 21:50 |
C++, препроцессор, как из "int" сделать "char"? | Максай | Помощь студентам | 3 | 05.09.2008 08:16 |
сделать окно "открыть","сохранить как" | blackstersl | Общие вопросы Delphi | 1 | 24.08.2008 10:31 |
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" | MAcK | Компоненты Delphi | 11 | 24.10.2007 10:49 |
Перечисление в столбце. Как "вытащить" нужное? Помогите! | Tatyana | БД в Delphi | 2 | 10.07.2007 09:25 |