2017-01-04 2 views
-1

См. Раздел «Мои таблицы здесь» My Spread Sheet, я кружил, где находятся 3 выпадающих списка.Выпадающий список Excel Автоматический выбор

Я недавно начал пытаться сделать очень простой VBA в Excel. В моем текущем расширенном листе у меня есть таблица рабочих часов, которая заполняется, выбирая дату из выпадающего списка, а затем выбирая часы работы каждого человека из выпадающего списка на человека, наконец, «установить» выбирается из третий выпадающий список, в результате которого таблица заполняется нужным временем для данной даты.

Принимая во внимание, что я новичок в этом, я хочу знать, есть ли способ, чтобы при выборе даты для первого раскрывающегося списка выпадающие списки для каждого человека будут автоматически определять время, которое уже в таблице?

Например, если 26/10/2016 были выбраны в раскрывающемся списке первой даты, ниже человека 1 автоматически выделит «02:25» из выпадающего списка, человек 2 будет autoselecgt «03:00» из капли вниз, человек 3 выбрал бы «ВЫКЛ», лицо «выключено», и, наконец, человек 5 автоматически выберет «ВЫКЛ» из выпадающего списка. См. SpreadSheet

Надеюсь, это имеет смысл!

Спасибо за любую помощь, которую вы можете дать!

Дани

EDIT:

Так что я взял формулу, представленную, и я написал несколько очень простой VBA в любом случае (как это более академического проекта), так что, когда дата в выпадающем списке изменения меняют время. Я удалил выпадающие списки, которые использовались для изменения времени. Еще раз спасибо за вашу помощь @ user3598756

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target = Range("C4") Then 

     Application.EnableEvents = False 

     ActiveSheet.Range("C6").FormulaLocal = "=INDEX($G$4:$K$35,MATCH($C$4,$F$4:$F$35,0),MATCH(Left($B6,Len($B6)),$G$2:$K$2,0))" 

     ActiveSheet.Range("C7").FormulaLocal = "=INDEX($G$4:$K$35,MATCH($C$4,$F$4:$F$35,0),MATCH(LEFT($B7,LEN($B7)),$G$2:$K$2,0))" 

     ActiveSheet.Range("C8").FormulaLocal = "=INDEX($G$4:$K$35,MATCH($C$4,$F$4:$F$35,0),MATCH(LEFT($B8,LEN($B8)),$G$2:$K$2,0))" 

     ActiveSheet.Range("C9").FormulaLocal = "=INDEX($G$4:$K$35,MATCH($C$4,$F$4:$F$35,0),MATCH(LEFT($B9,LEN($B9)),$G$2:$K$2,0))" 

     ActiveSheet.Range("C10").FormulaLocal = "=INDEX($G$4:$K$35,MATCH ($C$4,$F$4:$F$35,0),MATCH(LEFT($B10,LEN($B10)),$G$2:$K$2,0))" 

Application.EnableEvents = True 

    End If 

End Sub 

ответ

1

вам не нужно VBA

при условии:

  • ваша таблица рабочих часов в клетках G4: K28

  • Ваша таблица часов работы «персональные» заголовки находятся в ячейках G2: K2

  • ваша таблица работы «дата» в клетках F4: F28

  • вашей первая дата выпадающего список в ячейке C4

  • ваша «человек #» клетка написать часы в в ячейках С5: C9

, то вы можете написать следующую формулу в ячейке С5

=INDEX($G$4:$K$16,MATCH($C$4,$F$4:$F$16,0),MATCH(Left($B5,Len($B5)-1),$G$2:$K$2,0)) 

и перетащить его вниз к другим клеткам

+0

Благодарим за отзыв! Извините, мой вопрос был настолько запутанным! –

+0

добро пожаловать. вы можете затем отметить ответ как принятый. Спасибо! – user3598756