Страницы: 1
RSS
копирование заголовки строк после поиска ячейки
 
Добрый день!
С утра мучаюсь с этой задачей

На работе постоянно приходится делать отчет. Сотрудников порядка 100, поэтому хотелось бы автоматизировать.
На форуме находил примеры. Самоучитель читал.. Но там простые функции - их понимал. А как дело доходило до функций поиска и перебора (та же Array) - у меня ступор. Никак не могу справиться. Вроде и задача не сложная, но исполнить не могу. Помогите, пожалуйста.

Лист график - исходные данные
Нужно сделать макрос, чтобы получалось то что на листе отчета. Все данные условны.
Желтым выделено то, что должно быть в отчете. То есть по этой ячейке поиск, затем копировать название строки и столбца и правильно вставить.

find пробовал, но как сделать поиск и по П (прогулам), и по О (отгулам) не знаю. Да и перенести не понимаю как (по идее поиск i ячейки, а затем копируем ячейку 4,i - придумать придумал, а сотворить не могу..

Еще раз спасибо!
 
Меняйте подход к таблице, иначе макрос можно вечно допиливать.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
И сам макрос примерно вот так будет выглядеть:
Код
Sub t()
s = 3
r = 4
x = Sheets("График").Cells(Rows.Count, 2).End(xlUp).Row
y = Sheets("График").Cells(4, Columns.Count).End(xlToLeft).Column
Z = Sheets("График").Cells(3, 3).MergeArea.Cells.Count
zz = (y - 2) / Z
For i = 1 To zz
    For ii = 5 To x
        If Sheets("График").Cells(ii, 1) <> "" Then
            brig = Sheets("График").Cells(ii, 1)
        End If
        For iii = s To Z + 2
            If Sheets("График").Cells(ii, iii) = "О" Then
                Sheets("Отчет").Cells(r, 7) = brig
                Sheets("Отчет").Cells(r, 8) = Sheets("График").Cells(ii, 2)
                Sheets("Отчет").Cells(r, 9) = "Отгул"
                Sheets("Отчет").Cells(r, 11) = Sheets("График").Cells(4, iii)
                r = r + 1
            End If
            If Sheets("График").Cells(ii, iii) = "П" Then
                Sheets("Отчет").Cells(r, 7) = brig
                Sheets("Отчет").Cells(r, 8) = Sheets("График").Cells(ii, 2)
                Sheets("Отчет").Cells(r, 9) = "Прогул"
                Sheets("Отчет").Cells(r, 11) = Sheets("График").Cells(4, iii)
                r = r + 1
            End If
        Next
    Next
    s = s + Z
    Z = Z + Z
    r = r + 1
Next
End Sub
 
Спасибо! Буду разбираться!
Страницы: 1
Наверх