Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как считывать в путь в формуле значение из ячейки?
 
Добрый день, друзья!

К сожалению, поиском нашел решения, которые мне не помогли, поэтому обращаюсь за помощью напрямую.

Есть задача собрать график учета рабочего времени с организации на 500 человек. Решение изначально строилось, отталкиваясь от внешнего вида диаграммы Ганта, но достаточно статичной. (Я знаю, что для выполнения этой задачи намного эффективнее применить Аксесс или Проджект, но поставлена задача реализовать в экселе).
Теперь суть: создан набор файлов - (1) ИД.хлс, (2) УРВ_ФамилияИО.хлс, (3) Работа отдела.хлс.
Из файла 1 в файл 2 берутся данные по проектам, объектам. Помимо этого файл 2 сореджит данные о фамилии сотрудника, датах его выходов на работу, больничных, отпусках, а так же КОД той работы, которую он выполнял. Вот этот код как раз и собирается в файл 3.
Тут мы подходим к самому интересному - устройству файла Работа отдела (см. фрагмент в виде картинки).

В каждой ячейке забита формула:
=ЕСЛИ(Cводная!HH$5<=СЕГОДНЯ();ЕСЛИОШИБКА(ЕСЛИ(ПРОСМОТР(
ВПР(Cводная!HH$5;'\\<путь к файлу на сервере>\[УРВ_ФамилияИО.xlsm]УРВ'!$A$5:$B$500;2;ЛОЖЬ);{"Больничный";"День за свой счёт";"Отгул";"Отпуск";"Явка"};{"Б";"1д";"ОГ";"ОТ";"Я"})="Я";
ВПР(Cводная!HH$5;'\\<путь к файлу на сервере>\[УРВ_ФамилияИО.xlsm]УРВ'!$A$5:$I$500;9;ЛОЖЬ);ПРОСМОТР(
ВПР(Cводная!HH$5;'\\<путь к файлу на сервере>\[УРВ_ФамилияИО.xlsm]УРВ'!$A$5:$B$500;2;ЛОЖЬ);{"Больничный";"День за свой счёт";"Отгул";"Отпуск";"Явка"};{"Б";"1д";"ОГ";"ОТ";"Я"}));"");ДВССЫЛ("План!" & HH$1 & СТРОКА()))

Суть ее в следующем. Она смотрит в файл сотрудника, забирая из своей колонки дату из строки 5, находит, был ли в этот день сотрудник на работе, и если да, то какой работой он занимался в этот день - вписывает код этой работы; если не был, то по какой причине - вписывает болел, отгул, день за свой счёт или отпуск.

Теперь основная сложность - в каждой ячейке своя фамилия, да еще и трижды (сотрудники приходят и уходят, и приходится неудобно переделывать) и путь к ним различается в части названий папок отделов, НО! В начале каждой строки вписана нужная ФамилияИО и я не понимаю, как ее оттуда засунуть внутрь формулы как-то автоматически.

Простите, что длинно получилось.
VBA замена части формулы
 
Добрый день, форумчане.

Я в программировании в VBA почти ноль, но есть задача...
Есть формула большая, завязанная на ячейках из внешних файлов, фамилиях сотрудников и датах..., но в конце формулы такой
<если все проверки не получились>;План!HH15)
При этом цифра должна всегда соответствовать номеру строки, в которую формула вписана, а за счёт разных фамилий в каждой строке своя "уникальная" формула. Люди приходят и уходят, а формулы остаются...

Поиском смог найти 2 макроса, приведу их ниже. Первый находит последние числовые значения в формуле и заменяет их на другие значения, т.е. он помог мне менять допустим HH15) на HH16). Второй (выделение числовой части из произвольного текста) я пытался поженить с первым, чтобы он значение К менял на +1, при этом сохранял НН и скобку. И вот это у меня не получилось. Уверен, что есть более элегантное решение и прошу помощи.

СУТЬ ЗАДАЧИ: надо чтобы программа пробегала по колонке с формулами, находила последнюю часть формулы - HH15) - и заменяла числовое значение на номер строки.
Код
Sub Макрос()
Dim K, N
 
s = InputBox("Введите через запятую что на что менять", "", "10,14")
If s = "" Then Exit Sub
K = Trim(Split(s, ",")(0))
N = Trim(Split(s, ",")(1))
    For Each C In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
        If Right(C.Formula, Len(K)) = K Then
            C.Formula = Left$(C.Formula, Len(C.Formula) - Len(K)) & N
        End If
    Next
End Sub
Код
Sub w()
Dim stroka, i, strout
 
stroka = InputBox("Введите строку")
strout = ""
For i = 1 To Len(stroka) Step 1
    If IsNumeric(Mid(stroka, i, 1)) = True And i = Len(stroka) Then
        strout = strout & Mid(stroka, i, 1)
        MsgBox strout
    ElseIf IsNumeric(Mid(stroka, i, 1)) = True Then
        strout = strout & Mid(stroka, i, 1)
    ElseIf strout <> "" Then
        MsgBox strout
        strout = ""
    End If
Next i 'Next изменяет i на количество, указанное в Step
End Sub
Переменная внутри пути к файлу, Замена фамилий сотрудников и групп
 
Добрый день.
Не смог сформулировать вопрос так, чтобы поиском по сайту найти ответ.

Суть задачи: есть формула, в которой идут ссылки на файлы, заполняемые сотрудниками; есть сводная таблица, в которой требуется по каждому сотруднику сделать наглядное отображение его работ. В сводной таблице вставлен в формулу путь к файлу сотрудника, надо сделать так, чтобы часть этого пути (фамилия, ялвяющаяся именем файла) стала переменной, считывающейся из рядом расположенного списка сотрудников.

Сейчас формула выглядит так =ВПР(C$5;'[УРВ_2016_ИвановИИ.xlsx]2016'!$A$5:$D$404;3;ЛОЖЬ)
Где
С$5 - ячейка с датой
'[УРВ_2016_ИвановИИ.xlsx]2016'!$A$5:$D$404 - диапазон поиска названия работы, в котором как раз и надо всем сотрудникам менять фамилию
Страницы: 1
Наверх