2016-10-16 5 views
0

Контекст:
В моей компании некоторые ассистенты заполняют таблицу Excel, которая является списком пользователей (первые имена, фамилия, идентификационный номер). После этого я использую этот список с помощью сценария PowerShell. Но очень часто список пользователей не выполнен правильно. Например, помощники забывают ввести идентификационный номер ....
Так что я хотел бы помочь помощникам заполнить этот Excel предложениями/автозаполнениями.Как автозаполнять строку с предложением данных?

технические:
В листе «Данные», у меня есть все данные, возможные (имена, фамилия, идентификационный номер). С "Имя менеджера" Я создал:

  • d_FirstName выбрать первую ячейку
  • c_FirstName, чтобы выбрать все колонки,
  • l_FirstName применять функцию: =OFSSET(d_FirstName;0;0;COUNTA(c_FirstName)-1;1)

В «форме ", я создал раскрывающийся список с функцией: =IF(A1<>"";OFSSET(d_FirstName;MATCH(A1&"*";l_FirstName;0)-1;;SUMPRODUCT((MID(l_FirstName;1;LEN(A1))=TEXT(A1;"0"))*1));l_FirstName) Итак, когда пользователь вводит письмо, выпадающий список« предлагать est "правильное имя FirstName.

Вопрос:
Как адаптировать последний запрос, чтобы завершить линию с Имя и Фамилия и идентификационный номер соответствующего типа, если пользователь только Имя?
Например:
Если пользователь выберет Имя в выпадающем списке, Excel заполнит строчку с указанием имени и идентификационного номера.
Если пользователь выберет Идентификационный номер в раскрывающемся списке, Excel заполнит строчку с фамилией и именем.

Во второй раз, как показать выпадающий список автоматически, когда пользователь вводит одну букву?

Спасибо

+0

Вы имеете в виду линию, как в строке, вместо lign? –

+0

В моем примере я использовал идентификатор Employee для входа. Вы можете легко изменить его на имя. Я бы использовал идентификатор сотрудника, потому что он уникален, но если вы хотите использовать имена, которые вам нужно будет объединить с именами и фамилиями, и вы можете добавить средние инициалы или номер для идентификации сотрудников с тем же именем и фамилией. –

+0

В моем ответе на [можно ли использовать автофильтр или найти в словаре?] (Http://stackoverflow.com/questions/39162841/is-it-ppossible-to-use-autofilter-or-find-on- a-dictionary/39177064 # 39177064) Я покажу вам, как фильтровать список, используя словарь. –

ответ

0

Вы можете сделать это, используя свойства COMBOBOX и изменить событие. Комбобокс будет принимать 1 или 2-мерный именованный диапазон или формулу, которая возвращает диапазон, так как это RowSource. Здесь у меня есть текстовый столбец, установленный в третий столбец.

enter image description here

enter image description here


Private Sub cboEmpID_Change() 
    With cboEmpID 
     If Not IsNull(.Value) Then 
      lblEmployee.Caption = .List(.ListIndex, 1) & ", " & .List(.ListIndex, 0) 
     End If 
    End With 
End Sub 

Private Sub UserForm_Initialize() 
    Dim ColumnWidths As String 

    With Worksheets("Sheet1") 
     ColumnWidths = .Columns(1).Width & ";" & .Columns(2).Width & ";" & .Columns(3).Width 
    End With 

    With cboEmpID 
     .ColumnHeads = True 
     .ColumnCount = 3 
     .ColumnWidths = ColumnWidths 
     .TextColumn = 3 
     .ListWidth = Range("Sheet1!A:C").Width 
     .RowSource = "OFFSET(Sheet1!$A$1,1,0,COUNTA(Sheet1!$A:$A)-1,3)" 
    End With 
End Sub 
+0

Хорошо, я постараюсь реализовать ваш код. Если у вас есть xlsm-файл для проверки кода, мне интересно. В comboBox можно искать LastName ИЛИ FirstName OR ID? (а не только ID) – AAzeeze

+0

Я сделал вам пробную заглушку: [Download Login.xlsm] (https://www.dropbox.com/s/nq871b1tuziqy5e/LogIn.xlsm?dl=0) –

+0

Спасибо, очень много, я проанализировала некоторую возможность, и я думаю, что ваше предложение является лучшим. Я настраиваю свой код для своих нужд. Например, я добавляю кнопку «Добавить», чтобы записать выбранное значение элемента в ячейке A5, но некоторые ошибки :). Если вы хотите помочь мне, пожалуйста, [Загрузите мой макрос Excel] (http://s000.tinyupload.com). /? file_id = 00907355953776521655) – AAzeeze

0

Вам нужно сделать Excel список каскадный зависимый падение вниз. See

Смежные вопросы