2013-04-24 2 views
0

Я создал общий файл excel, чтобы продемонстрировать, что я ищу. Файл, который я назвал Tool.xlsm, содержит два рабочих листа; Sheet1 и Sheet2. Sheet1 будет иметь несколько полей, которые будут принимать пользовательский ввод. Лист2 будет скрыт от пользователя, но будет содержать различные варианты выбора списка вниз и их соответствующие описания, которые должны отображаться в другой ячейке на Листе 1, когда выбран конкретный код. Кроме того, Sheet2 будет содержать многочисленные ID # s в одном столбце и соответствующие им имена пользователей в следующем столбце. Цель этого заключается в том, чтобы пользователь мог быстро связать ID # с пользователем, которому он принадлежит.vba/excel - заполнять ячейки в sheet1 из значений в sheet2 на основе ввода пользователем в ячейки на листе 1

Вот что у меня есть до сих пор ... Я сомневаюсь, что я пойду так же эффективно, как и должно быть, но я бы очень признателен за ваш опыт!

Sub Button1_Click() 

'Based on selected value of C1, show corresponding message in J1' 
'Can this be done by simply referencing the code descriptions in sheet2?' 

If Range("C1") = "code 1" Then 
    Range("J1") = "code 1 description" 
End If 

If Range("C1") = "code 2" Then 
    Range("J1") = "code 2 description" 
End If 

'End of code selection' 
End Sub 

Sub Button2_Click() 

'Based on ID# entered into C3, display corresponding name in J1 (Sheet2 contains ID#s with corresponding names)' 
'There has to be an esier way to loop through 1000s of records and display corresponding ID# and Person''s name' 
'Rather than assigning Person 1, to Range J1, I should be able to just reference the cell Sheet2!E3 but that doesn''t seem to work' 

If Range("C3") = "1001" Then 
    Range("J1") = "Person 1" 
End If 

If Range("C3") = "34349090" Then 
    Range("J1") = "Person 83" 
End If 

'End ID# search' 
End Sub 

Sub Button3_Click() 

'Clear unlocked cells' 

End Sub 

my file in dropbox

ответ

0

вы можете использовать событие worksheet_change. Пожалуйста, установите rngFindCode & rngFindCode1, соответственно, чтобы ссылаться на ваши данные в sheet2.

Ниже приведен код.

Private Sub Worksheet_Change(ByVal Target As Range) 
    On Error Resume Next 

    Application.EnableEvents = False 

    If Target.Address = "$C$1" And Target.Cells.Count = 1 And Target.Value <> "" Then 

     Dim rngFindCode As Range ' 
     Dim cellCode As Range 

     Set rngFindCode = Sheets("Sheet2").Range("C1:C100") ' Refers to range where code is in sheet 2 
     Set cellCode = rngFindCode.Find(What:=Target.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) 

     If Not cellCode Is Nothing Then 
      Range("J1").Value = cellCode.Offset(0, 1).Value 
     End If 

    ElseIf Target.Address = "$C$3" And Target.Cells.Count = 1 And Target.Value <> "" Then 

     Dim rngFindCode1 As Range ' 
     Dim cellCode1 As Range 

     Set rngFindCode1 = Sheets("Sheet2").Range("E1:E100") 'Refers to range where name is 
     Set cellCode1 = rngFindCode1.Find(What:=Target.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) 

     If Not cellCode1 Is Nothing Then 
      Range("J1").Value = cellCode1.Offset(0, 1).Value 
     End If 

    Else 
     Range("J1").Value = "" 
    End If 

    Application.EnableEvents = True 
End Sub 
+0

Я ценю быстрый ответ! Я дам ему попробовать сегодня и опубликовать результаты! – user2292941

+0

Простите мое невежество, но я не могу заставить его работать. Пожалуйста, проверьте мой файл http://db.tt/tfQi0PDK и посмотрите, можно ли его выполнить для вашего совета. Благодаря! – user2292941

+0

@ user2292941 Я добавил код в свой файл, который можно скачать по этой ссылке http://sdrv.ms/ZJ4jAh – Santosh

1

Для запросов:

Может ли это быть сделано просто ссылки описания кода в sheet2?

Да. Вы можете использовать формулу VLOOKUP.

Аналогичным образом, вы можете использовать формулу VLOOKUP, чтобы вернуть имена на основе идентификаторов.

Е.Г., предположим, ваши имена пользователей находятся в столбце K и идентификаторы в столбце J:

На листе 1, предполагая, что идентификатор в ячейке C3, введите следующую формулу: =VLOOKUP(C3, Sheet2!$J$K, 2, False)

+0

Я полностью забыл о функции VLOOKUP, и когда я начал ее реализовывать, возникали ошибки #ref. Немного пообщался, и я понял это! Спасибо за ваш вклад! – user2292941

+0

@David небольшая ошибка синтаксиса, 'vlookup' должен заканчиваться на' 2, FALSE '' – glh

+1

@glh thx для этого. –

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