Добрый день! Есть проблема и вопросы.в темах форума не нашел решения данных пробели. Буду очень признателен, если поможете решить проблему,так как сам особо с формулами не умею работать. Есть база сотрудников из которой потом делаются приказы методом слияния в Word. Как правило базу заполняют все, кому не лень, и уже приносят мне готовую. В массиве C3:N33 стоит проверка данных по фамилиям внизу столбца. В строке C1:N1 номера постов. массив c33:n33 заполняют выбором.
Вопросы следующие: 1. Как сделать выпадающий список на каждый столбец по данным внизу (допущенным на соответствующий пост) и его «растянуть» вправо? 2. Как защитить массив C3:N33 от изменения в нем форматирования, и запретить копировать и вставлять в него другие данные? Но если применить защиту листа с этими ячейками, то выборка «проверка данных» не будет работать. 3. Один человек не может заступать на три поста. Только на два и не более. Причем если заступает на совмещенный пост (например, на пост №1), то он может заступить только на совмещённый по условию (пост №2), и ни на какие больше. Как реализовать сравнение в строке и запрет на выбор при наличии условия? Или при выборе на другой пост (несовмещенный) не давалось разрешения на ввод его на другие какие либо посты? 4. Сотрудник, заступающий на пост с режимом «круглосуточно» на следующие сутки не может заступать на другой какой-либо пост с режимами дежурства «круглосуточно» или «12 часов».
Если я правильно понял, 1 - это убрать "Абсолютность в "Проверке данных" и протянуть. 2- убрать защиту с ячеек и защить лист, добавив защиту на форматирование, но копировать в ячейку и протягивать её при этом можно. Все остальное придется макросом делать и чтобы срабатывало нужно, чтобы у "пользователя" были включены макросы. На форме находил такой код.
Код
' Запрет вставки из буфера обмена после копирования на заданном листе (Sheet1)
Dim MyDataObject As New DataObject
Private Sub EmptyClipboard() ' Требуется ссылка: VBE - Tools - References - Microsoft Forms 2.0 Object library
' Если её нет, то добавьте и удалите UserForm -ссылка установится автоматически
With MyDataObject
.SetText ""
.PutInClipboard
.Clear
End WithEnd Sub' Активация книги на листе Sheet1 (переход с другой книги) - запрет вставки из буфера обмена.
' Если книга активируется из другого приложения (Word), то в активную ячейку можно скопировать то, что в буфере.
' Но при перемещении на любую другую ячейку буфер очищается
Private Sub Workbook_Activate()
If ActiveSheet Is Лист1 Then EmptyClipboard
End Sub' Активация Sheet1 в пределах книги - запрет вставки из буфера обмена
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh Is Лист1 Then EmptyClipboard
End Sub' Перемещения в Sheet1 - запрет вставки из буфера обмена
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh Is Лист1 Then EmptyClipboard
End Sub
Про абсолютность понял. Спасибо. Но еще суть такая,что на первый пост может быть допущено 15 человек , а на второй пять.... Таким образом в выпадающем списке будут пустые строки.
Чуть поправлю себя. Если в строке c3:n3 есть выбранное значение с3, то для всей строки оно является уникальным и не может повторится для выбора в этой строке, за исключением совмещенного поста номер два ячейки d3. Значение d3 уникально для всей строки и не должно нигде повторяться для выбора кроме совмещенного поста номер олин ячейки c3. Значение ячейки е3 уникально и единственное для всей строки и не должно нигде в строке повторяться. Как это прописать формулой не приложу ума.
Я так понимаю, Вам нужны динамические списки в Проверке данных? Т.е. чтобы при выборе определенной позиции в предыдущих ячейках в следующих этого значения в списке уже не было бы?
Такую систему можно разработать, но при условии, что набор сотрудников на все посты является статичным. Если у Вас на каждый пост может быть разный список людей, то это уже сложнее...
Например иванов а.а. может быть допущен только на первый пост. А петров п.п на все посты. И на первый в сумме может быть допущено 100 человек а на второй и третий по 10 сотрудников.
Понятно. Тогда с таким кол-вом Вам списки нужно на отдельном листе делать и "плавающий" Active-X прикручивать... В общем, целый проект получается) Я тут набросал пока вариант под Ваш пример - может подтолкнет Вас к дальнейшим изысканиям)
Влад! Большое спасибо, но все равно не понимаю некоторых моментов. Вроде разнес на разные листы, проверка по постам у меня не получается, Так еще задача усложнилась: посты или-или... Господа, помогите...заранее спасибо
к сожалению файл большим стал и сюда поместился только через архив.