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

Страницы: 1
Как считывать в путь в формуле значение из ячейки?
 
The_Prist, всё получилось. Правда обрабатывает 1 отдел 20 минут :) Так что буду искать другие решения.
Как считывать в путь в формуле значение из ячейки?
 
The_Prist, Hugo,спасибо за помощь, просто у меня программирование на нулевом уровне. Я пока с ним только знакомлюсь.
Как считывать в путь в формуле значение из ячейки?
 
Посмотрел присланные мне ответы внимательно. Пришел к выводу, что я некорректно сформулировал вопрос.
Мне надо, чтобы при растягивании формулы вниз по колонке в каждую новую строчку бралась фамилия из первой колонки этой же строчки.
Либо какой-то вариант макроса, который будет ее автоматом заменять хотя бы в одной колонке, которую я потом просто растяну на всю таблицу.
Либо я не понял советы, и они это и реализуют.
Как считывать в путь в формуле значение из ячейки?
 
The_Prist, спасибо за интересное предложение, попробую, отпишусь.
Как считывать в путь в формуле значение из ячейки?
 
Добрый день, друзья!

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

Есть задача собрать график учета рабочего времени с организации на 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 замена части формулы
 
Цитата
Udik написал: заменить План!HH15 на ДВССЫЛ("План!HH" & СТРОКА())
8-0
Работает...
Я в некотором шоке. Пока делал эту формулу раз 10 пытался туда воткнуть ДВССЫЛ и всякая ерунда непонятная получалась, решил уже просто программно решить эту проблему, и тут такой совет. СПАСИБО.

Про относительный ссылки - я плохо с ними лажу, потом начинаю путаться и беда получается.  :oops:
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
Считать количество ячеек с определенным текстом
 
Цитата
Влад написал:
Вместо СЧЁТЕСЛИ() лучше используйте формулу Код ? 1=СУММПРОИЗВ(Ч(A$1:E$10=A12))
Огромное спасибо! Она то, что надо :)
Считать количество ячеек с определенным текстом
 
Поигрался с параметрами Екселя. Если заменить в настройках разделительный знак с Точки на Запятую, то ...
Всё становится почти хорошо, кроме одно, начинают одинаково вычисляются значения для "1.1" и "1.16". Я так понимаю связано с восприятием Екселя значений это как-то связано, как это обойти не понимаю пока.
Считать количество ячеек с определенным текстом
 
Добрый день, а кто подскажет как выйти из ситуации, когда надо найти "1.1" в таблице?
При этом выборка делается из большого списка кодов, и есть незадействованный код "1.10". В результате применения СЧЕТЕСЛИ() я получаю:
1.0
1.147
1.20
1.30
1.40
1.50
1.60
1.70
1.80
1.90
1.1047
1.110
1.120
Где, колонка 1 - код (она же критерий поиска для СЧЕТЕСЛИ), колонка 2 - количество находок.
Изменено: penkinda - 04.08.2016 13:13:16
Переменная внутри пути к файлу, Замена фамилий сотрудников и групп
 
Связь существует, но тем не менее, когда я закрываю файлы, из которых берется информация, и закрываю-открываю файл сводный, то ячейки с этой формулой становятся пустыми.
Хотя это пример формулы, сама она традиционно устроена сложнее
Изменено: penkinda - 18.05.2016 14:07:15
Переменная внутри пути к файлу, Замена фамилий сотрудников и групп
 
Спасибо большое за совет, работает, но...
Работает только когда открыт внешний файл, на который я ссылаюсь. Как только я его закрываю - #ССЫЛКА!
Это можно как-то еще обойти?

В сапорте Майкрософт написано, что "Если значение аргумента "ссылка_на_ячейку" является ссылкой на другую книгу (внешней ссылкой), другая книга должна быть открыта. В противном случае функция ДВССЫЛ возвращает значение ошибки #ССЫЛКА!."
Переменная внутри пути к файлу, Замена фамилий сотрудников и групп
 
Добрый день.
Не смог сформулировать вопрос так, чтобы поиском по сайту найти ответ.

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

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