2013-06-14 2 views
1

내가 엑셀 ​​2007을 사용하고 플랫 사용자 정의 함수의 함수를 작성하는 방법에 대한 몇 가지 지원 /지도가 필요 해요를 작성 도움이 필요. 스플래트 기능을 사용하면 vlookup 함수가 포함 된 셀에 데이터를 입력 한 다음 입력 한 값으로 찾아보기 테이블을 업데이트 할 수 있지만 vlookup 수식은 셀에 남아 있습니다.내가 엑셀 ​​VBA 플랫 기능

1 단계 : 나는 아래의 예를 제공하고 있습니다. lookupable과 테이블 데이터를 표시하기 위해 vlookup 함수를 사용하는 셀 그룹이 있습니다.

enter image description here

2 단계. 셀 d3에서 사용자는 /500을 입력합니다. /는 Jane (500)에 대한 새 값으로 찾아보기 테이블을 업데이트하고 셀 d3의 조회 수식을 바꿔주는 Splat 함수를 트리거합니다.

enter image description here

3 단계. Splat 함수가 실행 된 후 Jane은 테이블에 500 개의 값을 갖고 d3 (조회 기능을 통해) 셀은 업데이트 된 값을 표시합니다.

enter image description here

이 이상적으로 기능은/만 불이 다른 트리거를 슬래시와 것, 이에 플랫 기능에 내장 된 일부 데이터 검증이있을 것입니다 것 데이터 유효성 검사 팝업을 통해. 이 샘플 코드, 기사 등을 접근하는 방법에

어떤 생각을 크게 감상 할 수있다.

감사합니다.

+1

내가 최근에 [관련 일]에 블로그 (http://yoursumbuddy.com/prompt-to-add-new-items-to-combobox-or-data-validation/)이 부분에 도움이 될 수있다. –

+0

Doug - 감사합니다. 블로그 기사를 확실히 체크 아웃 할 것입니다. – Mutuelinvestor

+1

Excel의 함수로는이 작업을 수행 할 수 없습니다. 그것은 Sub가되어야하며 버튼 매크로 나 이벤트 핸들러와 같은 다른 방법으로 호출됩니다. – RBarryYoung

답변

2

Worksheet_Change 이벤트를 사용하여이 같은 시도 :

Sub Worksheet_Change(ByVal Target As Range) 
    'Assume the workbook has a named range 'lookuptable' at G3:H6 
    'Assume the workbook has a named range 'lookupColumn' at D3:D6 

    If Target.Cells.Count <> 1 Then Exit Sub 
    If Intersect(Target, Range("lookupColumn")) Is Nothing Then Exit Sub 
    If Not Left(Target, 1) = "/" Then Exit Sub 

    UpdateLookupTable Target 

End Sub 

Sub UpdateLookupTable(cl As Range) 
    Dim r As Long 
    Dim c As Long 
    Dim splatVal As String 

    splatVal = Replace(cl.Value, "/", 0, , 1) 
    r = Application.Match(cl.Offset(0, -1), Range("lookuptable").Columns(1), False) 
    Range("lookuptable").Cells(r, 2).Value = splatVal 
    cl.Value = splatVal 

End Sub 

난 당신이 예를하지 않는 열 D.에서 VLOOKUP 공식을 보존하려는 여부를 확신하지 못했습니다,하지만 당신이 원하는 경우는 변경 될 수 있습니다 이러한 기능을 유지합니다.

+0

David에게 감사드립니다. 나는 이것을 시도 할 것이다. 셀 d3에서 수식을 유지해야하지만이 부분을 파악할 수는 있습니다. 다시 한번 감사드립니다. 대신 – Mutuelinvestor

+0

'cl.Value = splatVal' 그 라인'cl.Formula = "= VLOOKUP ("cl.Offset 및 (0, -1) 및 .Address "LookupTable의 2는 false)"'변경. –

+0

좋아요, 고마워요. – Mutuelinvestor