Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/систематизация кадровой работы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » систематизация кадровой работы (по коду получить инфо по человеку)
систематизация кадровой работы
ket2330 Дата: Воскресенье, 20.05.2012, 13:59 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Добрый день! Подскажите как решить проблемку..... есть в екселе набранная база данных (таб. номер, ФИО, должность и т.д.) как сделать так что б во всех последующих документах при работе в ексель можна было в одной ячейке набирать таб номер а рядом в другой высвечивалась фамилия (или ФИО, или должность)..... людей очень много каждый раз искать проблемно.... спасибо.
 
Ответить
СообщениеДобрый день! Подскажите как решить проблемку..... есть в екселе набранная база данных (таб. номер, ФИО, должность и т.д.) как сделать так что б во всех последующих документах при работе в ексель можна было в одной ячейке набирать таб номер а рядом в другой высвечивалась фамилия (или ФИО, или должность)..... людей очень много каждый раз искать проблемно.... спасибо.

Автор - ket2330
Дата добавления - 20.05.2012 в 13:59
Michael_S Дата: Воскресенье, 20.05.2012, 14:21 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Используйте функцию ВПР, или связку ИНДЕКС - ПОИСПОЗ
 
Ответить
СообщениеИспользуйте функцию ВПР, или связку ИНДЕКС - ПОИСПОЗ

Автор - Michael_S
Дата добавления - 20.05.2012 в 14:21
ket2330 Дата: Воскресенье, 20.05.2012, 14:32 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

спасибо.... попробую..... мне главное важно непереносить информацию, т.е. при открытии другой страницы в екселе... можна было также ввести таб.номер и выбивалась фамилия..... еще раз спасибо.
 
Ответить
Сообщениеспасибо.... попробую..... мне главное важно непереносить информацию, т.е. при открытии другой страницы в екселе... можна было также ввести таб.номер и выбивалась фамилия..... еще раз спасибо.

Автор - ket2330
Дата добавления - 20.05.2012 в 14:32
Hugo Дата: Понедельник, 21.05.2012, 09:27 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Можно сделать макросом по событию изменения ячейки.
Например так - при открытии книги (или по команде оператора) в память загружаются данные.
Далее если в ячейку вводится номер, присутствующий в памяти, то сразу в соседние ячейки выгружаются соотвествующие данные.
Этот механизм можно отключать и включать в любое время элементом управления.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеМожно сделать макросом по событию изменения ячейки.
Например так - при открытии книги (или по команде оператора) в память загружаются данные.
Далее если в ячейку вводится номер, присутствующий в памяти, то сразу в соседние ячейки выгружаются соотвествующие данные.
Этот механизм можно отключать и включать в любое время элементом управления.

Автор - Hugo
Дата добавления - 21.05.2012 в 09:27
ket2330 Дата: Понедельник, 21.05.2012, 13:06 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Доброго дня!! С макросами вообще туго..... я чайник в екселе... только начиаю изучать..... подскажите как его искать и создать..... спасибо большое.
 
Ответить
СообщениеДоброго дня!! С макросами вообще туго..... я чайник в екселе... только начиаю изучать..... подскажите как его искать и создать..... спасибо большое.

Автор - ket2330
Дата добавления - 21.05.2012 в 13:06
Hugo Дата: Понедельник, 21.05.2012, 13:19 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Нужен небольшой пример Вашей базы - строк на 10 хватит. Можете личные данные заменить на выдуманные (даже желательно).
В принципе, единственную пока вижу сложность - как этот механизм отключать.
Можно сделать например так - Вы открываете файл с этой базой, и пока она открыта, всюду правее введённого кода будут вставляться данные.
Ну или в этой базе поставить чекбокс - соответственно его состоянию будет работать макрос.
Работа не на 5 минут - поэтому если и буду делать, то скорее всего вечером.

Но может быть будут другие решения от других форумчан?


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНужен небольшой пример Вашей базы - строк на 10 хватит. Можете личные данные заменить на выдуманные (даже желательно).
В принципе, единственную пока вижу сложность - как этот механизм отключать.
Можно сделать например так - Вы открываете файл с этой базой, и пока она открыта, всюду правее введённого кода будут вставляться данные.
Ну или в этой базе поставить чекбокс - соответственно его состоянию будет работать макрос.
Работа не на 5 минут - поэтому если и буду делать, то скорее всего вечером.

Но может быть будут другие решения от других форумчан?

Автор - Hugo
Дата добавления - 21.05.2012 в 13:19
Michael_S Дата: Понедельник, 21.05.2012, 14:18 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Quote (Hugo)
Но может быть будут другие решения от других форумчан?

Может и будут... если пример будет.
 
Ответить
Сообщение
Quote (Hugo)
Но может быть будут другие решения от других форумчан?

Может и будут... если пример будет.

Автор - Michael_S
Дата добавления - 21.05.2012 в 14:18
ket2330 Дата: Понедельник, 21.05.2012, 18:06 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Спасибо за любую помощ..... В приложенном файле база даных и примитивная табличка для работы....
К сообщению приложен файл: Excel.xls (25.0 Kb)
 
Ответить
СообщениеСпасибо за любую помощ..... В приложенном файле база даных и примитивная табличка для работы....

Автор - ket2330
Дата добавления - 21.05.2012 в 18:06
Serge_007 Дата: Понедельник, 21.05.2012, 20:11 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Code
=ВПР(D5;база!B$4:E$13;4;)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Code
=ВПР(D5;база!B$4:E$13;4;)

Автор - Serge_007
Дата добавления - 21.05.2012 в 20:11
Hugo Дата: Понедельник, 21.05.2012, 21:30 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Вот попробуйте, погоняйте (файл обновил, исправил небольшую ошибку).
Название чекбокса поменяйте на свой вкус.
Кстати, номера запоминаются без ведущих нулей, т.е. то, что в ячейке, а не то, что Вы видите.
Сделал, как описывал выше.
Работает во всех файлах, пока открыт файл с базой и включен чекбокс.

Вообще имхо неплохая штука - можно код усложнить, добавить ещё чекбоксов или иначе устроить выбор - что именно будем копировать и куда.
Например должность или ФИО целиком, или сразу всё.
Да и похожих задач уже было много, а такого решения ещё не было! smile
К сообщению приложен файл: Excel.H.xls (58.5 Kb)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеВот попробуйте, погоняйте (файл обновил, исправил небольшую ошибку).
Название чекбокса поменяйте на свой вкус.
Кстати, номера запоминаются без ведущих нулей, т.е. то, что в ячейке, а не то, что Вы видите.
Сделал, как описывал выше.
Работает во всех файлах, пока открыт файл с базой и включен чекбокс.

Вообще имхо неплохая штука - можно код усложнить, добавить ещё чекбоксов или иначе устроить выбор - что именно будем копировать и куда.
Например должность или ФИО целиком, или сразу всё.
Да и похожих задач уже было много, а такого решения ещё не было! smile

Автор - Hugo
Дата добавления - 21.05.2012 в 21:30
ket2330 Дата: Вторник, 22.05.2012, 10:34 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Serge_007 спасибо большое за формулу.... все просто и понятно.

Hugo - Ваше решение вообще супер.... вот только подскажите как мне перенети его в реальную базу.... или подсказку как пользаватся этим чудом в других таблицах.... спасибо. respect
 
Ответить
СообщениеSerge_007 спасибо большое за формулу.... все просто и понятно.

Hugo - Ваше решение вообще супер.... вот только подскажите как мне перенети его в реальную базу.... или подсказку как пользаватся этим чудом в других таблицах.... спасибо. respect

Автор - ket2330
Дата добавления - 22.05.2012 в 10:34
Hugo Дата: Вторник, 22.05.2012, 11:07 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Чтоб перенести - нужно перенести весь код и чекбокс.
Имя чекбокса должно быть именно таким, как в примере, имя листа тоже (ну или нужно править код).

Думаю, проще данные базы перенести в этот файл.
Но вообще если разобраться в механике работы - то можно и к другим базам прикрутить.
Только одновременно две разные базы работать не будут, если это не предусмотреть в коде.
"как пользаватся этим чудом в других таблицах" - если вопрос в том, как получить фамилию из базы при вводе номера в другой файл, то оно для этого и делалось и так и работает.
Если вопрос как подключить к другим базам/данным - самое простое, это перенести/скопировать лист другой базы в этот файл - тогда в коде нужно править самую малость.
в модуле книги имя листа и чекбокса:
[vba]
Code

Private Sub Workbook_Open()
          Set App.AppEv = Application
          If Sheets("база").CheckBox1 Then
          bWork = True
          fillbaza
          End If
End Sub
[/vba]
в модуле листа с чекбоксом имя чекбокса:
[vba]
Code

Private Sub CheckBox1_Click()
bWork = CheckBox1
If CheckBox1 Then fillbaza
End Sub
[/vba]
В стандартном модуле имя листа, диапазоны:
[vba]
Code

Sub fillbaza()
          Dim i&
          Set oDict = CreateObject("Scripting.Dictionary")

          With Sheets("база")
              tabNum = .Range(.[E4], .Range("b" & .Rows.Count).End(xlUp)).Value
          End With

          For i = 1 To UBound(tabNum)
           If Not oDict.exists(tabNum(i, 1)) Then oDict.Item(tabNum(i, 1)) = i
          Next

End Sub
[/vba]

Что куда копировать прописано в модуле класса в строке Target.Offset(, 1).Value = tabNum(oDict.Item(Target.Value), 4):
[vba]
Code

Private Sub AppEv_SheetChange(ByVal Sh As Object, ByVal Target As Range)
          If Target.Cells.Count = 1 Then
              If bWork Then
                  Application.EnableEvents = False
                  If oDict.exists(Target.Value) Then
                      Target.Offset(, 1).Value = tabNum(oDict.Item(Target.Value), 4)
                  End If
                  Application.EnableEvents = True
              End If
          End If
End Sub
[/vba]
В принципе, эти 1 и 4 можно брать с листа - т.е. организовать, чтоб эти параметры пользователь мог задавать сам согласно задаче.
1 - это сдвиг места вставки фамилии от изменяемой ячейки (1 ячейка вправо)
4 - это что именно из базы нужно брать. Там в коде выше в массив tabNum берутся данные из базы, 4 - это номер "столбца" этого массива с короткими ФИО.

Есть некоторые ограничения использования - если базу менять/пополнять, то данные в массиве нужно обновить, сняв и поставив снова чекбокс.
Хотя это неудобство тоже можно устранить, усложнив код.

Ещё будет позже поправка - если база большая, и этот функционал не используется постоянно (т.е. он "навешен" на реальную базу, а не на файл, сделанный только для этой работы), то при снятии чекбокса нужно освобождать память от данных.
Если при открытии файла чекбокс не стоит - то в память данные не загружаются.
Но если стоит, или поставлен в процессе работы - то сейчас данные загружаются и только обновляются, но не выгружаются.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЧтоб перенести - нужно перенести весь код и чекбокс.
Имя чекбокса должно быть именно таким, как в примере, имя листа тоже (ну или нужно править код).

Думаю, проще данные базы перенести в этот файл.
Но вообще если разобраться в механике работы - то можно и к другим базам прикрутить.
Только одновременно две разные базы работать не будут, если это не предусмотреть в коде.
"как пользаватся этим чудом в других таблицах" - если вопрос в том, как получить фамилию из базы при вводе номера в другой файл, то оно для этого и делалось и так и работает.
Если вопрос как подключить к другим базам/данным - самое простое, это перенести/скопировать лист другой базы в этот файл - тогда в коде нужно править самую малость.
в модуле книги имя листа и чекбокса:
[vba]
Code

Private Sub Workbook_Open()
          Set App.AppEv = Application
          If Sheets("база").CheckBox1 Then
          bWork = True
          fillbaza
          End If
End Sub
[/vba]
в модуле листа с чекбоксом имя чекбокса:
[vba]
Code

Private Sub CheckBox1_Click()
bWork = CheckBox1
If CheckBox1 Then fillbaza
End Sub
[/vba]
В стандартном модуле имя листа, диапазоны:
[vba]
Code

Sub fillbaza()
          Dim i&
          Set oDict = CreateObject("Scripting.Dictionary")

          With Sheets("база")
              tabNum = .Range(.[E4], .Range("b" & .Rows.Count).End(xlUp)).Value
          End With

          For i = 1 To UBound(tabNum)
           If Not oDict.exists(tabNum(i, 1)) Then oDict.Item(tabNum(i, 1)) = i
          Next

End Sub
[/vba]

Что куда копировать прописано в модуле класса в строке Target.Offset(, 1).Value = tabNum(oDict.Item(Target.Value), 4):
[vba]
Code

Private Sub AppEv_SheetChange(ByVal Sh As Object, ByVal Target As Range)
          If Target.Cells.Count = 1 Then
              If bWork Then
                  Application.EnableEvents = False
                  If oDict.exists(Target.Value) Then
                      Target.Offset(, 1).Value = tabNum(oDict.Item(Target.Value), 4)
                  End If
                  Application.EnableEvents = True
              End If
          End If
End Sub
[/vba]
В принципе, эти 1 и 4 можно брать с листа - т.е. организовать, чтоб эти параметры пользователь мог задавать сам согласно задаче.
1 - это сдвиг места вставки фамилии от изменяемой ячейки (1 ячейка вправо)
4 - это что именно из базы нужно брать. Там в коде выше в массив tabNum берутся данные из базы, 4 - это номер "столбца" этого массива с короткими ФИО.

Есть некоторые ограничения использования - если базу менять/пополнять, то данные в массиве нужно обновить, сняв и поставив снова чекбокс.
Хотя это неудобство тоже можно устранить, усложнив код.

Ещё будет позже поправка - если база большая, и этот функционал не используется постоянно (т.е. он "навешен" на реальную базу, а не на файл, сделанный только для этой работы), то при снятии чекбокса нужно освобождать память от данных.
Если при открытии файла чекбокс не стоит - то в память данные не загружаются.
Но если стоит, или поставлен в процессе работы - то сейчас данные загружаются и только обновляются, но не выгружаются.

Автор - Hugo
Дата добавления - 22.05.2012 в 11:07
Hugo Дата: Вторник, 22.05.2012, 22:53 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Вот чуть навернул функционала.
Дизайнер конечно из меня ещё тот...
Вместо чекбокса вероятно лучше бы смотрелся ToggleButton, но лень переделывать.
В общем, как вариант.
К сообщению приложен файл: Excel.H.v2.xls (85.0 Kb)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеВот чуть навернул функционала.
Дизайнер конечно из меня ещё тот...
Вместо чекбокса вероятно лучше бы смотрелся ToggleButton, но лень переделывать.
В общем, как вариант.

Автор - Hugo
Дата добавления - 22.05.2012 в 22:53
ket2330 Дата: Среда, 23.05.2012, 11:19 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Спасибо... все здорово работает....
 
Ответить
СообщениеСпасибо... все здорово работает....

Автор - ket2330
Дата добавления - 23.05.2012 в 11:19
Hugo Дата: Понедельник, 28.05.2012, 20:01 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Вариант без использования класса.
К сообщению приложен файл: Excel.H.v3.xls (75.0 Kb)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеВариант без использования класса.

Автор - Hugo
Дата добавления - 28.05.2012 в 20:01
Мир MS Excel » Вопросы и решения » Вопросы по Excel » систематизация кадровой работы (по коду получить инфо по человеку)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!